Background
Pleroma is a federated microblogging server software that can exchange messages with other servers that support the same federation standards, OStatus and ActivityPub. This includes GNU Social, Friendica, Hubzilla and Mastodon.
The decentralized structure of the network of federated servers
(fediverse
) provides it with robustness both in server infastructure
and moderation. Instances can easily and cheaply be hosted on a server by
anyone, letting them and their friends join the network, and, while the
instances can interact freely with each other, they can each choose their own
moderation policy and other configuration settings.
Pleroma is notable for its very low resource usage, allowing an instance of hundreds of users to be easily run on a Raspberry Pi.
Pleroma Development History
Pleroma originated as an alternative frontend to GNUsocial in 2017 under the work of a single developer with the goal of updating the federated microblogging service to modern standards. Pleroma is written in Elixir and its first major public release was in early 2018, however it didn't start receiving serious attention and adoption until mid 2018. The codebase is currently hosted and contributed to by an active team on a dedicated git instance.
Pleroma vs. Mastodon
Mastodon first surged to popularity in 2017, predating Pleroma by about half a year, by acquiring users upset over social media centralization and algorithmic control of content, and later, Tumblr's banning of NSFW.
Pleroma is not a fork of Mastodon, rather, they are both independent extensions of GNUsocial using the OStatus (and later, ActivityPub) federation protocols. Plerom
Pleroma has ported the Mastondon frontend, mastofe, as well as developed its own highly similar frontend, pleroma-fe, and so the UX is essentially the same.
The big difference between Pleroma and Mastodon is it is significantly more lightweight than Mastodon. Mastodon is bloated software relying on a stack of dependencies, whereas Pleroma does not call any dependencies. A Pleroma instance run on a Raspberry Pi (or "a $2.50 Vultr instance"), while Mastodon instances regularly spend $10-30/mon to stay online.
Mastodon forces some settings on its instances. For example, all Mastodon instances have a hard 500 character limit, while Pleroma can be adjusted to any number (default: 5000).
Mastodon has a slightly larger featureset than Pleroma, such as server wide instance-blocking.
It should be noted instance-blocking is a controversial feature that also largely colors the differences in the two separate communities, as Mastodon communities generally tend towards fully instance-blocking servers that allow any kind of "racism... sexism... discrimination... nationalism" whereas Pleroma instances tend towards free speech and hands-off moderation. This has resulted in many Mastodon instances blocking all Pleroma instances as a rule and has caused a rift between the two communities.
Pleroma vs. Misskey
Misskey is the newest software, achieving public popularity (primarily with a Japanese-language audience) in late 2018. It also communicates on the ActivityPub and OStatus protocols, allowing it to integrate seamlessly with the existing Mastodon and Pleroma communities.
Misskey introduces a slew of technologies new to both Pleroma and Mastodon, including customizable UI, an integrated personal file storage system for each user, variable emoji reactions on posts (as opposed to simple favoriting), polls and calendars.
Again, however, the serious differentiating factor is Pleroma's very optimized codebase that results in minimal resource usage (and by extension, server costs).
Interface
Pleroma largely retains the Twitter-like interface of GNU Social.
Each user has his own profile accessed with a username and password which aggregates all his posts and the repeated posts of other users in descending chronological order and displays the user's details: the persistent username which others use to mention them, the instance they belong to, a display name, an avatar, a profile description and a profile banner. There is also a profile background on the standard web front end which acts as a client-side wallpaper.
Note: all can be changed freely except for the username and instance. Usernames are decided on registering to an instance and cannot be changed afterwards and migrating an account between instances is not possible.
The user chooses between three timelines to view: Main, Public and Whole Known Network. They are described in detail below.
There are also two personal, private "timelines" for each user: Notifications and Direct Messages. Notifications shows any personally made post that was engaged with, by another user, detailing the interacting user and what he did. Direct Messages shows any posts that mention the user and have the privacy set to direct message.
There is also a chat in the sidebar that acts as a simplistic, local irc. Every user on the local instance is a member of this chatroom and messages there are not federated.
Instances
There is a multitude of instances running Pleroma. A user must choose one to make their account on.
This decision will influence the timelines visible to them. Unlike Twitter, which can be operationally considered a single-instance network, users only see a timeline of users they are in some way connected to, known as the Whole Known Network. There is no "Whole Known & Unknown Network" showing every instance in the network of federated servers, it's entirely possible for an instance to be totally isolated.
Timelines
There are three primary timelines shown to every user:
- The Main Timeline
- Contains all posts made or repeated by users whom the user follows.
- The Public Timeline
- Contains all posts made on the selected instance or external posts locally repeated or replied to by users of that instance.
- The Whole Known Network
- Contains all local and locally repeated & replied posts on the selected instance as well as all posts from external instances that has reached the local instance. In practice, this means that it will contain all posts from the users that local users have followed, as well as all posts any of those users have repeated or replied to.
Privacy
Four privacy settings are available to choose for every post: direct message, followers-only, unlisted and public.
- Direct messages
- Only visible to those users mentioned in the post, and they appear in the user's personal, private direct message timeline.
- Followers-only
- Only shown to the poster's followers.
- Unlisted
- Only shown on the user's local instance.
- Public
- Shown to the local instance and any external instances the post ends up connected to.
Following & Blocking
Users can follow or block other users. Following will add them to their Main Timeline, while blocking them makes their posts and account invisible to them. There is not a clear way to tell if you have been blocked except that trying to follow the user who blocked you will stay pending.
Mentioning
Users can mention users from the same instance in a post by typing @ followed by their username, e.g. @username
Users can mention users from external instances by appending their instance's domain to the username, e.g. @username@instance.domain
Mentioning a user sends them a notification. Replies to a post tha mentions someone will have the mention retained in the post field by default.
Engagement
Users engage with the network by posting new messages ("toots") which will be sent out to their followers and shared on their local instance's public timeline. The default maximum characters is 5000 per message but the server can set it to any value. Images and video can be attached to a post (see: supported filetypes)
Users can engage with other users' posts by:
- Replying
- Connects the reply post to a reply thread aggregating all others replies in the same chain in ascending chronological order.
- Favoriting
- Increases a "favorite" counter on the post and sends a notification to the user.
- Repeating ("boosting")
- Share the post to your profile timeline, your local instance and your followers.
All of these actions will send a notification to the original poster, which appears their own personal, private notification timeline.
Network Relativity
Due to the nature of federation, following and like counts are only tallied for people within your own Known Network. The objective count is only visible to the owner of the post. The result is that the numbers become socially non-meaningful (e.g. as a competitive value), in contrast to Twitter.
Intrainstance Interaction
As discussed earlier, users can mention users from external instances by appending their instance's domain to the username.
A user can remotely follow another user when viewing their profile on an external instance's web FE
by clicking Remote Follow and logging in with their username and instance name — e.g. @username@instance.domain
— and password, to remotely
connect to their local instance's server and send the follow request. The login details never
leave the local instance's server.
It's also worth noting that Mastodon has a feature for instance blocking, allowing server admins to issue instance-wide bans if they desire. Due to this, you might find yourself unknowingly blocked and invisible to and from whole Mastodon instances if you they choose to block your local instance.
Note: Javascript is currently required to view Pleroma's web front end.
Desktop Clients
By default, Pleroma uses a web-based front end (that requires Javascript to run). There has not yet been a standalone desktop client built for Pleroma, however, it is cross-compatible with Mastodon front ends (including Mastodon's web FE), and Mastodon has a selection of clients.
GUI
CLI
Gopher
The lead Pleroma dev has also introduced support for the Gopher Protocol. Appropriately configured servers can be accessed with a Gopher compatible browser, such as lynx or Firefox with the Overbite extension.
e.g lynx gopher://pleroma.soykaf.com:9999
Unfortunately, it is not possible to login to an instance through Gopher and thus impossible to make posts or engage with them, effectively leaving the Gopher proxy read-only.
Mobile Clients
There are too many mobile clients available to list in full here. Tusky is the most commonly recommended Android client and Amaroq is the most commonly recommended iOS client.
A complete list of Android clients can be found here, and a complete list of iOS clients can be found here.
Choosing an Instance
Because there is no method for migrating an account between instances, the instance you join is a permanent decision. Your local instances forms the base for your Public Timeline and is effectively your starting audience. It's a good idea to scroll through the timelines of various instances to get a sense of their local character and culture in order to find the one that feels the most appropriate fit for you.
You should also read the rules and moderation policy for each instance to make sure it is appropriate for you — instances will vary on degree of free speech allowed, SFW imagery, etc.
However, it's not abnormal to manage multiple accounts on various instances and most clients will have an interface for easily switching between them.
Suggested Instances
Large Instances (400+ users):
Medium Size Instances (100+ users):
Small & Active Instances (100- users):
Prominent, Closed Instances:
Full list of instances can be found here.
Appendix
External References
Setting up a Pleroma Instance
- Installing on Debian based distributions
- Installing on CentOS or other RPM based Linux distributions
- Installing on CentOS 7
- Installing on NetBSD
- Installing on OpenBSD
- installing on Alpine Linux
List of Instances
Developer Blog
- What is Pleroma?
- ActivityPub in Pleroma
- Gopher Support in Pleroma
- Privacy and Tracking on the Fediverse
- How Federation Works
Development Notes
- Pleroma Git Repo
- Hacking the Pleroma: Elixir, Phoenix and a bit of ActivityPub
- A Chat with Lain About Pleroma
- Pleroma Encyclical: ActivityPub
Coverage