FediThoughts

Thoughts on write.as, and publishing on the Fediverse

I've been writing about how we could make a “publication” system work for the Fediverse; a one similar to Medium's where authors are free to submit to any publication and still have their articles displayed on their own profile too.

On the Fediverse—or, more specifically, on Write.as—we have not profiles but “blogs”. This causes some issues because a blog works in some sense like a publication itself. So if someone scrolls through a blog and clicks on a post, which version of the post should they be directed to: the locally-hosted blog one, or the one hosted on the publication? Should there be two hosted versions at all? If not, who gets to do the hosting?

Or, to boil it down to one question: Who owns the post?

The Meaning of Ownership

What does it mean to “own” a post? The most basic meaning is that you have control over it: to publish, edit, manage visibility, and even delete it. But when publications come in, there's another form of control too: that of being able to display the post under a certain format and branding.

As an example, take the blog of George Monbiot. He writes posts at https://monbiot.com, and they show under a “theme” of his choosing. But Monbiot also has some posts published by The Guardian, where you read them under the Guardian heading, and with the Guardian's fonts, widgets, and so on.

Monbiot's personal and Guardian blog are, technically speaking, two separate entities. They are two separate websites, and the post is (as far as I know) copy-pasted from one to the other. If you click the post from Monbiot's blog it'll go to his blog version; if you click it on the Guardian front-page, the Guardian-hosted version will show up instead.

Medium does things slightly differently. Since it's an integrated platform, it can make all clicks lead to the publication's version of the page—that is, with the publication's header and branding around the post.

So if you browse through Manasa Kashi's profile you'll see posts published in various publications. Click on a post, and it'll send you to that publication. This is useful because—imagine writing for various websites, like The Guardian, The Independent, and so on, and still having a follwable “profile page” to say “Hey, here's everything I published anywhere; take a look!”

Medium has another difference: authors can remove a post from a publication: in that case, it'll vanish from the publication's page, and clicking it from the profile will show it without any branding (which is to say, with Medium's default one).

Federating ownership

This is a neat setup, but it won't federate well. Let's take a closer look at the main features of the setup:

  • Authors can submit and withdraw posts
  • Publications can accept or reject posts
  • Authors and Publications can edit and delete posts
  • Publications display their branding (ie. host the post)
  • Authors link to the Publicaton's version of posts

The “can edit” causes its own problems, but the main issue is of who gets to host the post.

  • If the publication hosts it to show the branding, what happens when the author withdraws a post?
  • If the author hosts it, how do publications show branding?
  • If they each host a copy, are there duplicate posts, or is one considered the “master copy”? And if so, which one?

Let's look at each of these options and see how they'll work out.

Hosted by Publication

If publications host a post, then authors lose control over it the moment it's published. They can't withdraw it from the publication to sent to a new one; neither can they edit or delete it or even assert their ownership in any ActivityPub-supported way.

This is in some way how articles usually work: you send it to a magazine or website, and they put it up on their server. After that, you can't do anything with the article directly; you have to contact the editors to make changes for you.

Even editing and deleting can probably be taken care of through OAuth. Users can sign in with their own server's account, and do editing on the publication's server by automatically refreshing. In some sense they'll have an account on the publication's server too, but they'll still retain their unique Fediverse identity.

That leaves branding, and withdrawal of posts. But how often do people withdraw posts from publications? Very rarely. Maybe “withdrawal” could be left out; people can always delete the post and create a new one for a new publication if they so desire. Similarly, they could agree to give up styling rights to the publication; after all if you write for The Guardian you don't expect them to implement your own custom CSS for you!

So this could be a workable solution. But, if you think about it, it's not much different from calling your ordinary Write.as blog a “publication”, posting other peoples' articles with a credit line in the beginning, and making them reshare each post of theirs when you publish it.

Hosted by User

User-hosted posts is probably easiest to implement. All the editing and everything is taken care of; publications merely “boost” the posts Mastodon-style. But this leaves publications as nothing more than a “front page”, like those paper.li newsletters that merely link to off-site posts.

Of course, publications could have their own-hosted copy of the post, just as the Chinwag Mastodon instance shows Writing.Exchange posts under its own styling.

Letting the publication edit other posts before “publishing” (read: boosting) would be a bit harder, but maybe we can take the OAuth idea from the last section and turn it the other way round.

This works too, but it's not much different from an “editor” asking you to edit your piece before boosting your posts.

Hosted by Both

Letting both users and publications host their own version of a post could yield the best of both worlds—or the worst. It's quite simple on the implementation ends: publications basically copy-paste the post into their own new one, with a credit-line. (Of course, it could be more formalised with OAuth or something). The user's blog version and the publication's version are two separate entities, like George Monbiot's blog and Guardian posts. Each version can have its own edits, branding, and more.

The downside is, this splits the identity of the post. Search-engines and social networks will see them as separate things; traffic and responses won't be synchrosronised. This doesn't matter so much on the Fediverse where share-count is not the priority, but it's still not ideal.

Other considerations

We should keep in mind that Write.as won't be the only possible “publication” platform. I don't know how Wordpress' ActivityPub plugin works now, but my guess is that each blog gets its own identity. And if the blog has multiple users, I doubt the users get their own. So that's a lot like the “publication-hosted” posts I described above, and it might make sense to replicate it. On the other hand, authors don't get any independent identity there; I wonder if there's an ActivityPub-friendly way to manage it.

Can an ActivityPub post have multiple authors? If so, it would be helpful.

As an editor of a Medium publication, I've been wondering how publications will work out in the Fediverse, and how they could be implemented. I'll start with what a “Publication” is on Medium, so if you already know that feel free to skip the next one or two sections.

Different posting models

Before I go into publicaitons, let's look at the standard social-media model. You create an account and start posting.

Those posts appear on your Profile Page, as well as in he feeds of those who “follow” you, and so on. It works the same way on most websites, whether it's LinkedIn or Mastodon.

Tubmlr took this a step further. Your posts appear as standards social-media posts in the feed but your Profile Page is customisable. In fact, you can style it and theme it any way you like, setting a title and so on, just like a personal blog.

(This has led to two kinds of Tumblr users: those who're in it for the social network, and those who use it as a nice simple interface for hosting their blog)

As an aside, WriteFreely works in a similar way: where you can customise your owr blog as you like it. And adding the ActivityPub plugin to your WordPress blog will probably have the same result. Tumblr, however, is probably the most balanced mix between the two worlds: it has two faces, and people can spend a lot of time interacting with one and never seeing the other.

Now, notice one thing about Tumblr: it's your own Profile Page that you're changing.

Medium doesn't let you change your profile page, but it lets you create a completely different entity called a “Publication”.

What is a Publication?

Publications have customisable homepages that are distinct from the authors' ones. When I published my post about the Fediverse in the Snipette publication, you could see it in several places:

  • My Profile Page, with a note “published in Snipette”
  • The Snipette publication's homepage, with a line “by Badri Sunderarajan”
  • The feeds of people who follow me
  • The feeds of people who follow Snipette

Yes, publications can be “followed” just like users. That's not all: a publication can hold posts from many different users, and a user can post to multiple publications. (That makes it different from Write.as, where a user can have multiple “blogs” but each blog can only be posted to by the user who created it).

Publications can have multiple “authors” and “editors”: Any of the authors can submit a post to the publication, but the editors get to decide whether the posts get accepted or not. Editors can also edit submissions before publishing them.

Editors aren't all-powerful though. Authors can decide to remove an article from a publication (and maybe submit it to another one): in this case, the post will remain on their Profile Page and follower feeds, but will no longer show up in the publication.

Why Publications?

Publications are a very powerful system—because authors can write what they want, but editors get to curate what shows up on their publication, giving it a certain quality standard. What's more, authors may like to wirte on a wide variety of topics while publications focus on only a certain subject.

This way, when authors write, they can submit to the appropriate publications. Interested people can follow these publications, and get focused content on that topic, or in that style, or with those standards, or whatever the speciality of that particular publications happens to be.

What I'm trying to get at is this: publications offer a level of curation: one that's decentralised, community-driven, and—most importantly!—not algorithmic. Your posts are curated by humans.

Publications on the Fediverse?

I could go on (maybe I will, in a future post) but let's get on to how publications could be implemented in the Fediverse. This is where things get vague, so I'm just going to be throwing some ideas around. Feel free to discuss them or throw your own in the comments*.

Another disclaimer: I don't know too much about ActivityPub and Write.as, so I'm going to make some assumptions fgrom what I can figure out, which could turn out to be wrong. Take all my assertions with a pinch of salt.

First, let's see how things work right now. Write.as blogs are first-class “Actors” in ActivityPub-speak, basically the same as an account on Pleroma or Mastodon (and, incidentally, like a “channel” in PeerTube). Your user account doesn't appear anywhere except to log in and manage the blogs: as far as the rest of the Fediverse is concerned, it doesn't exist.

We could of course extend this setup on the backstage, by allowing multiple accounts to add to a blog and show their posts under the same ActivityPub enity. But that's probably not the best solution: ideally authors would somehow also be represented in the post.

A quick-fix solution may be to let authors link their accounts to (say) Mastodon profiles. Posts under the hypothetical @snipette@medium.com coust start with the note “Written by @badrihippo@fosstodon.org” or whoever the author is, and automatically be boosted by @badrihippo's profile on Mastodon.

Write.as could internally store the author, and externally display it as a note while federating.

The problem is: this gives @snipette too much control over the post. They can modify or even remove the post without notifying the author.

One more solution is to implement the whole publication system on top of the existing setup. This is the best solution I've managed to come up with so far, but also the one that'll take the most work.

Here, publications would be ActivityPub entities too just like normal authors (or rather, blogs). But instead of posting new stuff, they'll just reshare (“boost” in Mastodon-speak) other peoples' posts.

Let's say I (or rather, my blog @badrihippo@write.as) writes a post on Snipette (@snipette@medium.com). ActivityPub-wise, the post would be published by @badrihippo and boosted by @snipette.

This makes sense, in a way, because that's more or less what publications are doing: boosting posts.

On the backend, the publication could be managed by multiple editors—who could accept or reject posts, and, ideally, edit them too. Accepted posts could be listed on the user's profile (i.e. “blog”), but redirect to the publications “boosted” version when clicked on, to retain the publication's theming and formatting.

Doing this cross-server would be harder to set up: maybe a combination of OAuth and custom protocols. I'm especially wondering how cross-instance editing could be handled.

Finally, seeing Write.as as it is now, I'm not sure how the transition to work. Right now, users have “blogs” so if “publications” were added on top, it would add yet another layer and could be confusing.

On the other hand, if blogs were “upgraded” to work like publications, there's the question of users suddenly becoming public-facing—something they may not want to do.

Given that, and the fact that any upgrade could cause inconsistencies when different instances run different versions, I wonder if it'd be better to start a new project from scratch. Of course, that would take a lot of effort too.

Anyway, I've outlined what I could come up with at the moment. Now, it's over to you.

Let me introduce myself. I'm Badri, editor of the Snipette publication on Medium. I'm also there on Mastodon, @badrihippo@fosstodon.org. So, let me give you my background on those two subjects of interest: Medium, and the Fediverse.

Medium

I liked Medium's minimalist style, its vision for an alternative to ad-based publishing, and, most of all, the ability for people to run their own Publications, where they edit and curate the work of other authors for display on their site.

As time passed, however, I've noticed that Medium is giving less and less priority to Publications. Rather than working with different editors, each curating their own publications for their own special audiences, Medium is trying to push their own editorial agenda.

Medium has its own editors to curate posts and display them on its front page, and there's less and less visibility to independent Publications on Medium. Rather than a platform for different magazines, it's become more like a magazine itself.

I don't like that idea because firstly, everyone in the world is beholden to the same editors—that is, those working for Medium. True, there's some customisation available, in the sense that you can choose which topics you're interested in and get more post recommendations from those, but I feel Medium is increasingly becoming “just another online magazine”, albeit a slightly algorithmic one.

I don't want that. I don't want Medium's editors to decide most of what I see. I want to be able to #ChooseMyEditor. There are so many different publications on Medium—Chalkboard, Writing Cooperative, Literally Literary, and Interesting Histories are some of the ones I subscribe to—but these days the only publications I seem to find in my stream are Medium, Medium, and Medium.

Of course, as an editor, I also have an interest in other readers seeing my publication more often. Especially when they've specifically decided to “follow” me.

The Fediverse

Like everyone else, I had a Facebook account. But I don't any more.

When the Cambridge Analytica thing broke out, I saw #DeleteFacebook trending everywhere—and I actually did it.

But it's not just about Facebook. I've always been a fan of decentralised technology and federation, and the fact that people can communicate with one another even if they're not registered on the same server or service or provider.

I was there in the days when Gmail supported XMPP, as did Yahoo! Messenger, and Facebook, and just about any other chat service there was. I'm not sure if they all federated, but some of them did, and I had one app to manage all my chats, and everything was great.

But then, my Pidgin suddenly stopped signing into Facebook Messenger. They had, apparently, dropped XMPP support. Google still has it, but they don't federate, and they support hardly any XEPs which makes it practically useless. I mean, I don't even know if someone's sent me a message while I've been offline, because Google doesn't send me that “Chats while you were offline” email any more but just waits until I sign on to Hangouts—which I hear is going to soon disappear too.

To cut a long story short, I want a service that lasts, or at least that lets me switch around without losing all my contacts every time I make a move. That's why I've been trying to convince all my friends to join XMPP (with little success, but I guess patience pays).

And when I heard of Diaspora, I thought wow, here's a solution to the social media problem! The interface was a bit clunky though—no offense, but it kinda wasn't suitable for me. I created an account, forgot about it for a long time, and then came back again when the #DeleteFacebook thing was trending, only to realise I had forgotten my password.

Then I heard that—what is this? There are many other projects too, that can all speak Diaspora-ese and connect to Diaspora! Friendica is where I started off. But the federated timeline is a bit, well, busy. And I didn't have any friends on it to interact with.

That's when I heard of Mastodon.

Mastodon is very instance-focused. It's a thing I've noticed. Each instance is like its own little community, and it's one that I can join in too, at the local timeline, and get to know. I mean, all federated projects seem to have that, but Mastodon actually places emphasis on it.

So, here I am.

Medium on the Fediverse?

So how did I come to write.as?

With Medium's editorial domination on the rise, I was looking around for alternatives. And I heard about this thing called write.as, which is like Medium but it federates!

Oh wow. What more can one need?

Actually, there is more one can need. I run a publication, after all, and write.as is more designed for standalone writers. It's not like Medium. Here, one writer can create many blogs, but one blog can't have many writers.

That would be great if I was just one person sitting and writing, but I'm looking to edit. To collate, curate, and collaborate, and pick out jewels from the stream of writing, and create a group of authors who work together to create a collection that people would like to read.

Or rather, I basically want an alternative where all Snipette authors can get off and come to Medium 😛

So, I'll probably be writing here about my thoughts on how that would work, on how “Publications” can be implemented in a federated way, on how I seem to be liking write.as, and well, I don't know.

Let me start writing to find out.