Patchwork progress

Patchwork progress
Brightly coloured flags in front of a snowy mountain and blue sky
As the Fediverse embarks upon a well-deserved round of holidays, our dev team are hard at work on the basic building blocks of Patchwork. Here's a round-up of what we've achieved and what we're working on.

Dashboard

The first version of the Patchwork dashboard is now on our staging server. Here's how it looks right now:

Our aim is to offer organisations and server admins an easy-to-use console where extra features can easily be added to their Mastodon server. At the touch of a button we'll add a plug-in, connect to a hub to deliver content or services, and update the Mastodon web UI to work with the new feature. Any app logging on to the server will be able to pick up these code changes via our hooks.

Patches - Server plugins

We're working on our first stand-alone plugin for Mastodon: a Posts Gem.

Long posts are almost ready, so admins can change the maximum length of posts to whatever suits them. We're also testing Scheduling and Drafting posts, with a pilot release for Newsmast out on TestFlight this week.

Already built are our content moderation and spam blocking plugins, which pull lists of content filters from a Patchwork hub, and apply these server wide. Things like hate speech, or NSFW content, if your server is non-explicit. To start with these are hiding content - as a next step we could turn them into labellers for some types of content, or add content warnings, to suit the server.

Hubs - Cloud-based services

Our first hub is for these content filters.

We’re now working on our second hub, offering e-newsletter delivery for service related information - all part of Fediverse storytelling. This one doesn’t need a plugin.

The Patchwork dashboard passes new users on a server to our newsletter hub every 24 hours, triggering a friendly, informative sequence of emails welcoming them to the Fediverse. Admins also have the option to add all users into a monthly newsletter, full of service related Fediverse information. So servers can stay closer to new and existing users.

Channels - Custom timelines

The big news is that we’ve secured the domain channel.org for our Fediverse channels. It’s a great domain name! So anyone on the social web can interact with curated channels at [name].channel.org - or browse channel.org itself to discover engaging feeds.

As a pilot we’re turning ten of our Newsmast Communities into channels. We’re creating a core environment to run most parts of Mastodon, with the channels hosted on lightweight micro-servers.

We’re also starting on channel creation. The back-end dev team are extracting the relevant code from Newsmast, simplifying it, and connecting it up to the Patchwork Dashboard. Anyone in the Fediverse will be able to create and curate a channel. And server admins can choose which to add to their Patchwork enhanced Mastodon server.

Hooks - App connections

Hooks are bits of code in Patchwork which enable any Fediverse app to work with a Patchwork enhanced server and/or Patchwork Channels. Some parts of Patchwork are server based - eg content filtering or newsletter delivery and don't need hooks. Hooks are for those parts of Patchwork which need changes in the UI to work.

This is the next phase of the project we’re working on. Right now we’ve a spec. First we’ll test this out ourselves, then we can connect with third-party apps to try hooks out live.

Patchwork Server Hooks

These hooks enable an app to work with a Patchwork enabled Mastodon server:

  • Letting the app know that this user is on a Patchwork enhanced server
  • Telling the app what Patchwork features the server has enabled
  • Providing any code necessary to make these features work

So for example if a server has enabled the Posts Gem, the server will pass details of what has been enabled, and what minor UI changes are needed to make this work.

Patchwork Channel Hooks

Any Fediverse app will be able to access Patchwork channels. Channel Hooks supply apps the spec and code to make them work.

  • Server browsing - allow users to browse servers via the app, rendering the content within the app. A user can then search for the channel name eg science.channel.org and see the content. Phanpy and IceCubes already have this in place, and it's on the Ivory roadmap.
  • Post engagement -  allow users to engage with posts on browsed servers using the account they have already signed on via the app, enabling the user to interact seamlessly with posts in the channel. IceCubes has this in place.

That's the basic level of channel integration. The next step is to add:

  • Channel discovery - incorporate the channel.org channel browsing and search functionality into the app.
  • Channel links - allow users to post and use links to channels inline, using the format /channelname - which links to channelname.channel.org.
  • Channel posting - a post-hook, calling up the discover hub and linking every channel to a hashtag or emoji, so users can easily post to the channels they select.

Patchwork App

We're just starting work on our demo app, using React to build across iOS, Android and web, just like Bluesky. This is to demonstrate what's possible with Patchwork - our bigger goal is to deliver all this through any Fediverse app.

Here's a sneak peak of the home screen - we're experimenting with no following timeline!

This demo is for someone logging on to a Fediverse server at an academic institution - with local server channels from their university.

That's where we're at right now - follow along for more progress in the run up to FediForum. That's our target for the first release - so watch this space as we keep building.