|
|
Subscribe / Log in / New account

Beyond microblogging with ActivityPub

December 20, 2022

This article was contributed by Jordan Webb

ActivityPub-enabled microblogs are gaining popularity as a replacement for Twitter, but ActivityPub is for more than just microblogging. Many other popular services also have open-source alternatives that speak ActivityPub. Proprietary services operated by commercial interests usually deliberately limit interoperability, but users of any ActivityPub-enabled service should be able to communicate with each other, even if they are using different services. This promise of interoperability is often limited in practice, though; while ActivityPub specifies how multiple types of content can be published, the kinds of content that can be displayed or interacted with vary from project to project.

The ActivityPub protocol describes how servers can exchange Activity Streams. Microblogs mostly emit activities related to status updates (which is called a "Note" in ActivityPub parlance), but there are many other types of objects that can be described in these streams. ActivityPub projects that aren't microblogs mostly specialize in publishing activities related to one or more of these other types of objects; instead of notes, they publish pages, images, or videos. All types of objects are allowed to contain some common fields, including a name and a URL; software that doesn't understand a particular type of object may fall back to using these fields to display a link to the object on its original server instead, or may simply choose not display the object at all.

Unless otherwise noted, all of the projects mentioned in this article are released under the terms of the AGPL 3.0.

WriteFreely

WriteFreely is devoted to long-form blogging; there are no character limits on posts to be found here. It presents a simple and distraction-free interface for writing. Posts must be authored in Markdown or HTML; there is no WYSIWYG editor included.

[WriteFreely UI]

Like most blogging software, WriteFreely can be used to publish posts via HTML and RSS, but it also supports federation via ActivityPub. If the author of a blog chooses to enable federation, users on ActivityPub-enabled services will be able to follow it. Mastodon users will only see post titles, a short summary, and a link to the post, as seen in a video demonstrating the feature. The Hometown fork of Mastodon allows users to read full posts from software like WriteFreely without having to leave their feed.

WriteFreely's participation in the ActivityPub ecosystem seems to be write-only; users of other software can reply to posts from WriteFreely, but it's not clear that WriteFreely does anything with the replies. It does not provide a way to follow other blogs or ActivityPub users; for that, an account on some other service is needed.

The project is written in Go with its source available on GitHub. WriteFreely is distributed as a single binary. It stores its data in a SQLite database by default, but can optionally be configured to use MySQL. Instructions for running it in a container are available for development purposes, but the documentation says that there is no official way to run the container in production as of yet. There is an image on Docker Hub, but it isn't up-to-date. The image was last updated on June 30th, 2021, whereas WriteFreely's most recent release on November 11th of this year.

WriteFreely's commit history goes back to 2016; LWN looked at it in 2019. A hosted version is available at write.as, which offers both free and paid plans. Development is sponsored by Musing Studio, which operates write.as and other related services.

Lemmy

[Lemmy UI]

Lemmy is a link aggregator and discussion forum. People who hang out on Reddit or Hacker News will find Lemmy's interface to be familiar. Each site running Lemmy can play host to a number of communities. Each community contains a list of posts, which can be sorted several different ways. Users can participate in threaded discussions attached to each post, and upvote posts or individual comments.

To users of other ActivityPub software, each Lemmy community appears to be a user; posts and comments from Lemmy appear as notes that have been reposted by the community user. Users on other types of servers can follow Lemmy communities and participate in discussions by replying to existing posts and comments, but they may not be able to create new top-level posts of their own, unless the software that they're using also supports the concept of discussion groups. Lemmy users can subscribe to communities on their own and other servers, but cannot follow individual accounts, although they can exchange direct messages with them.

Lemmy is split into two parts; source for both can be found in the LemmyNet organization on GitHub. The backend ("lemmy") is written in Rust, while the user interface ("lemmy-ui") is written in TypeScript. The UI is built using the Inferno framework and is an isomorphic application — this means that the same JavaScript used to build the user interface on the client-side can also be run on the server to pre-render a page, which allows it to be indexed by search engines. Because of this, the UI must be run in Node.js as a separate application alongside the backend.

Docker Compose seems to be the preferred method of deploying Lemmy; an Ansible playbook is also available, but it just automates the recommended setup with Docker Compose. In addition the backend and the UI, Lemmy requires a few additional services. It stores its data in a PostgreSQL database, and an HTTP proxy is required to route requests to the backend or to the UI server depending on what is requested; an example configuration for NGINX is provided. The example configurations also include an instance of pict-rs, which is a small API server for hosting images and other media. Lemmy's documentation indicates that this is optional, but, without it, users will be unable to upload media with their posts.

Development of Lemmy began in 2019 and is funded by donations and sponsorships. Its creators, Dessalines and Nutomic, are also the primary contributors to both the backend and the frontend.

Pixelfed

Pixelfed is designed for sharing images; it is an alternative to Instagram. Users can create posts by uploading photos or videos, comment on each other's posts, and exchange direct messages with each other. Public posts on Pixelfed must contain at least one photo or video; text-only posts aren't allowed, though text-only comments and direct messages are. Users can also create collections of their posts, and "stories", which are collections of posts that only appear on a user's profile for a limited amount of time.

[Pixelfed UI]

Users of other ActivityPub software can follow Pixelfed users, comment on their posts, and exchange direct messages with them, but collections and stories don't seem to federate to anything but other instances of Pixelfed. Users on Pixelfed can follow users on other types of servers, but they will only see posts that include media; a Pixelfed user following a Mastodon user will see the updates with pictures and video that the Mastodon user posts, but will not see any updates that only contain text.

Pixelfed is written in PHP and its source is available on GitHub. The installation instructions assume that the user already has a web server that can run PHP applications. There are no official container images, but the repository contains some example Dockerfiles and a docker-compose.yml. In addition to a PHP-capable web server, Pixelfed needs a process to handle background jobs, a Redis server, and either a PosgreSQL or MySQL database.

The first commit to Pixelfed's repository was made in 2018, and is primarily developed by its creator, Daniel Supernault. The project is funded by donations and a sponsorship from the NLnet Foundation.

PeerTube

PeerTube is similar to YouTube; it allows users to create channels, upload and share videos to them, and to host live streams. PeerTube can use peer-to-peer technologies to reduce the amount of bandwidth needed by the server hosting the videos; the first versions of PeerTube used WebTorrent to deliver video, and later versions have adapted the HTTP Live Streaming protocol to run over WebRTC. This allows viewers' browsers to obtain parts of the video from other viewers; PeerTube also supports an instance redundancy system that allows PeerTube servers to backup and help serve each other's videos.

[PeerTube UI]

Users of most other ActivityPub software can follow users or channels on PeerTube and comment on videos, and PeerTube users can reply to them. As of this writing, Pixelfed seems to be incompatible with PeerTube; Pixelfed users can follow users and channels on PeerTube instances, but Pixelfed will not display any posts from PeerTube servers. Users of PeerTube do not appear to be able to follow users on other types of servers; accounts from servers running something other than PeerTube can appear in the PeerTube user interface, but PeerTube will not find any channels or videos associated with them and will not let a user subscribe to them.

PeerTube is written in TypeScript. It stores its data in a PostgreSQL database, and also requires an instance of Redis. Installation instructions are available for running PeerTube as a system service and for running PeerTube with Docker Compose. The application itself is relatively lightweight, but transcoding uploaded videos is CPU-intensive. Serving videos also takes up a lot of bandwidth, and storing them takes up a lot of disk space. Some configurations require PeerTube to create and store multiple copies of each video; one copy is needed for each streaming format and quality level that the server operator wishes to support.

Development of PeerTube is sponsored by Framasoft, a French non-profit organization, and goes back to 2015. Most Framasoft projects are hosted on its GitLab server, but development of PeerTube occurs on GitHub.

Others

Because of the breadth of the ActivityPub ecosystem, it is impossible to cover it all in a single article, but here are some other notable projects:

  • Bookwyrm is a social reading application similar to Goodreads, which allows users to review and rate books as well as to maintain lists of books they want to read and have read. Users on other types of servers can follow Bookwyrm users to see their reading activity and exchange direct messages with them. Bookwyrm users can also follow users on other types of servers, and will see their activities, even if they are not book-related. It is written in Python; source is available on GitHub under the Anti-Capitalist Software License, which is not a free-software license since it forbids most use by commercial entities except for certain types of worker-owned collectives.
  • Lotide is another link aggregator and discussion forum, similar to Lemmy; it is also written in Rust. Lotide appears to be fully interoperable with Lemmy; each will recognize communities on the other type of server. Sources are available on its SourceHut home page.
  • Mobilizon is a tool for organizing events. Users can create events, search for them on their own or on other Mobilizon servers, comment on them, and RSVP to them. Users of other ActivityPub software can follow Mobilizon accounts, receive notifications of events, and comment on them. Like PeerTube, development of Mobilizon is sponsored by Framasoft. It is written in Elixir and sources are available on Framagit, the FramaSoft GitLab instance.
  • Funkwhale is a social music application. It allows users to upload their music libraries, listen to them, and share them with other users. Libraries can only be shared with other people on Funkwhale, users can also create channels and upload audio files to them; users of other ActivityPub software can follow these channels and receive each audio file as a post. Funkwhale's backend is written in Python, while its user interface is written in TypeScript. Source is available on the project's own GitLab server.
  • Owncast is a self-hosted livestreaming platform written in Go. Users of other ActivityPub software can follow Owncast servers to receive stream notifications and posts from Owncast users. Source is available on GitHub under the MIT license.

Conclusion

Though all of these projects are based on ActivityPub, in many cases their interoperability is limited, either by design or by necessity. WriteFreely can publish, but offers little interactivity, Pixelfed chooses to ignore posts without images or video, and PeerTube doesn't allow its users to subscribe to anything but PeerTube channels. Meanwhile, Lemmy and other more specialized projects have interaction models that don't map cleanly to the semantics of other applications.

People who want to be able to fully participate in multiple types of communities will need multiple accounts; all of these projects may speak the same protocol, but there is no single project that supports every type of interaction that is possible within the ecosystem. A person who wants to be able to casually follow everything possible from a single account may be happy to have their home on Mastodon or one of its alternatives, though; almost all of the content shared by users of other ActivityPub software can be followed and viewed by users of microblogging software, though they may not be able to fully interact with them.

While it is sometimes limited, any degree of interoperability is better than what is offered by most commercial services. It's impossible to follow an Instagram account from Twitter or a YouTube channel from Facebook. The current big players in social media (with the notable exception of Tumblr) are unlikely to hop on the interoperability train any time soon, but their assorted efforts to extract greater amounts of revenue from their services have caused their relationships with their users to become increasingly sour. Services based on ActivityPub offer many of the same attractions that can be found within commercial walled gardens, without the walls.


Index entries for this article
GuestArticlesWebb, Jordan


to post comments

Beyond microblogging with ActivityPub

Posted Dec 20, 2022 18:35 UTC (Tue) by flussence (guest, #85566) [Link] (2 responses)

Personally I can't wait for Forgejo (https://forgejo.org/) to finish its ActivityPub support. People being able to file bugs and submit pull requests without being required to figure out email or make O(n) throwaway accounts is going to shake things up.

Beyond microblogging with ActivityPub

Posted Dec 20, 2022 18:38 UTC (Tue) by jordan (subscriber, #110573) [Link]

Yep, I'm watching that carefully and planning to pitch an article about it when it's ready to try out!

Beyond microblogging with ActivityPub

Posted Dec 23, 2022 10:44 UTC (Fri) by ehiggs (subscriber, #90713) [Link]

I love this idea! Do you have any links on there the discussions/work on this is taking place?

Beyond microblogging with ActivityPub

Posted Dec 21, 2022 7:56 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link] (11 responses)

One thing that worries me is archival. Like it or not, but Facebook or Blogspot are likely to exist for a long time, and even in the case of their demise, they'll likely be mirrored (as happened with Geocities).

I'm not sure if write.as is going to be available in 5 years (and I'm their paying user). Never mind self-hosted WriteFreely or Mastodon instances.

It'd be nice if services provided something like "forever insurance". E.g. guarantee that their content will be mirrored and hosted as static pages for at least 50 years in case they go down.

Beyond microblogging with ActivityPub

Posted Dec 21, 2022 8:29 UTC (Wed) by taladar (subscriber, #68407) [Link] (1 responses)

That is going to be difficult considering many of these sites have partially private content and likely also have some users which post copyrighted content and content violating other laws.

Not to mention that it is not trivial to turn a dynamic site into a static one and that companies who go bankrupt do not tend to have funds left to fund decade long endeavours.

Beyond microblogging with ActivityPub

Posted Dec 21, 2022 18:14 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link]

Private content can stay hidden forever, since it's private after all. I'm more concerned with published content disappearing.

> Not to mention that it is not trivial to turn a dynamic site into a static one and that companies who go bankrupt do not tend to have funds left to fund decade long endeavours.

Yeah. That's why it should be done as an insurance model where a third party would assume the burden of maintaining the archive.

And it's unclear how moderation or legal takedowns should be handled.

Beyond microblogging with ActivityPub

Posted Dec 21, 2022 10:50 UTC (Wed) by anselm (subscriber, #2796) [Link] (3 responses)

Like it or not, but Facebook or Blogspot are likely to exist for a long time

Such optimism may be somewhat unwarranted, considering current events. This time last year, that list would probably have read “Twitter, Facebook, or Blogspot”. Today, OTOH …

Beyond microblogging with ActivityPub

Posted Dec 21, 2022 12:42 UTC (Wed) by mathstuf (subscriber, #69389) [Link]

Even if they do exist, it doesn't mean that they'd welcome archiving or such. Not to mention how much stuff is hidden behind a login screen (so just "members only" where membership is "give us your details").

Beyond microblogging with ActivityPub

Posted Dec 21, 2022 18:07 UTC (Wed) by flussence (guest, #85566) [Link] (1 responses)

I wouldn't give any of them that much credit.

Facebook seems to be perpetually on shaky ground, if not from the constant anti-monopoly litigation and horror stories about its contractor moderation sweatshops, then from the slow bleed of talent and growing resentment toward it in general. Blogspot seems like it's only online because some middle manager at Google forgot to shut it down; it very much feels like it hasn't seen a single bugfix or improvement to comment moderation since 2008.

Beyond microblogging with ActivityPub

Posted Dec 22, 2022 16:04 UTC (Thu) by anselm (subscriber, #2796) [Link]

All of those are just one crazy CEO away from wherever it is that failed Internet services go. For example, personally I wouldn't bet on the long-term viability of Facebook/Meta given that they're burning money like there's no tomorrow on the “Metaverse” – which Zuckerberg thinks is a great idea but which will suck and be ridiculous once it arrives (if it ever does) and which people may not actually even want or be able to afford –, while their core income-generating product is fast approaching Niagara Falls from upstream. (Remember that Zuckerberg can't be fired from Meta even if he becomes still more crazy than he already is.)

Beyond microblogging with ActivityPub

Posted Dec 22, 2022 1:27 UTC (Thu) by rsidd (subscriber, #2582) [Link] (4 responses)

Remember Google Plus? Google just yanked it. No mirrors. Huge amounts of sci-tech content just gone (yes, many scientists and techies used it, it wasn't a "ghost town"). And before that Google yanked Orkut, which was pre-Facebook and widely used in some countries.

Google owns blogspot. I wouldn't depend on it being around forever.

Beyond microblogging with ActivityPub

Posted Dec 22, 2022 1:38 UTC (Thu) by Cyberax (✭ supporter ✭, #52523) [Link] (2 responses)

There's an archive of G+: https://archive.org/details/archiveteam_googleplus (made by https://wiki.archiveteam.org/index.php/Google%2B ). Ditto for Orkut: https://archive.org/details/archiveteam_orkut Even if the UI is not there, in future somebody can come back and add proper web UI.

So this kinda reinforces my point. When a large community dies, someone usually is going to archive it. When an individually hosted website dies, it's just gone.

Beyond microblogging with ActivityPub

Posted Dec 22, 2022 3:23 UTC (Thu) by mjg59 (subscriber, #23239) [Link] (1 responses)

A lot of Geocities didn't get archived. A whole bunch of content from Myspace vanished forever after a large database migration failure, and a shitload of music from the 2000s is pretty much gone forever as a result. I don't think decentralisation or open access to data necessarily guarantees data is kept (if you tie data access to the owner and the owner doesn't care, the data's going to vanish even if it later turns out to be historically interesting), but I also don't know that this fundamentally matters - the whole of history is littered with lost data and references that can't be followed.

Beyond microblogging with ActivityPub

Posted Dec 23, 2022 7:30 UTC (Fri) by Cyberax (✭ supporter ✭, #52523) [Link]

I thought that Geocities got completely scanned? Anyway, it's still much better than a complete loss.

> I also don't know that this fundamentally matters - the whole of history is littered with lost data and references that can't be followed.

It's the sheer amount of data that is lost. Most of it is admittedly very low-value, but still.

Beyond microblogging with ActivityPub

Posted Dec 29, 2022 16:36 UTC (Thu) by gray_-_wolf (subscriber, #131074) [Link]

Hah, I miss G+. It was a nice place, with (usually) pretty high quality posts. Possible due to "failing" to grow enough. It's shame google felt necessary to ax it.


Copyright © 2022, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds