Open Source, Decentralised, and Federated Social Media Alternatives

tl;dr: Join me in exploring some alternatives to Facebook, Twitter, Instagram, YouTube, Discord, Slack, Zoom, Skype, etc. Only through trying them out and starting to develop a critical mass will we be able to free ourselves from these giant platforms that don’t have our best interests at heart.

When it comes to social media these days, we users are very definitely the product. We are bombarded with ads (or need to resort to ad blockers), censored for posting things that the platforms deem risky or not profitable (such as sexually explicit material or expressions about less mainstream parts of our identity), and at the same time are powerless to reliably get the platforms to remove content that is actively harmful.

To mainstream social media, we’re just marketing opportunities generating ad revenue. We stay, mostly, because these platforms have the critical mass of people with whom we’d like to connect. But what if we decided to go elsewhere?

OK, so I know that less mainstream or more niche platforms don’t have that critical mass, and as a result are less appealing. But I’d like people to consider them nonetheless, because that’s the only way we’ll actually get any sort of critical mass and have a hope of cultivating a social network on platforms where we have more freedom and agency.

I’ll explain what I mean by “decentralised” and “federated”, and go into some examples of each.

What is a Federated Platform?

A federated platform is one in which there is no single centralised authority or hub on which the system, platform, or network depends. The most prominent example of this is email. While most people these days have a Gmail address, we also have the option of instead using a Yahoo! or Hotmail address, or any other free or paid email service, or we could choose to host our email ourselves. (Incidentally, I personally pay for a Fastmail account because I’m the customer and not the product, and having worked for them in the past, I trust their security and values.) Regardless which email hosting provider you use, you aren’t siloed or restricted to communicating with others who use that email provider. A Gmail user can email a Yahoo! user, for example.

The key takeaway here is that while there are hubs through which communication and networking must occur, there are many of them, and you have a choice of which one you use, or whether you set up your own.

Federated Platforms and ActivityPub

Many federated platforms support ActivityPub. Without getting into too much technical detail, in the same way the SMTP protocol allows different email services (Fastmail, Gmail, Yahoo!, Hotmail) to talk to each other, ActivityPub allows some different social media platforms to talk to each other.

So, for example, if I was part of a Twitter-like social media site for people who love ponies, and a friend of mine was part of a Twitter-like social media site for people who hate pineapple on pizza, ActivityPub would still let me, on my pony-loving site, follow and interact with my friend on their pineapple-on-pizza-hating site, without each of us needing an account on each others’ community sites (which is a relief, because I’m definitely pro-pineapple-pizza!).

Not only that, but if I had a third friend (I know; I’m so popular!) who was on a Facebook-like site for people who want to try water-skiing, and both my Twitter-like site and their Facebook-like site support ActivityPub, I could even mutually follow and interact with them, even though the sites we’re using run different software and have different focuses. I’d see their Facebook-like posts as Tweet-like things in my timeline, and they’d see my Tweet-like things as Facebook-like posts on their timeline, and we’d be able to comment on each others’ updates from our respective websites. Pretty cool, huh?

Visual example of ponies/pineapple/ski explanation.
Federated social media example

Collectively, apps and sites that communicate with each other via ActivityPub are said to be part of the “Fediverse” (a portmanteau of “federated universe”). Each site (be it a pony site or a pineapple pizza site) is often referred to as a “server” or, more commonly, an “instance,” (as in, “an instance or server in which this particular software is installed”) such that in this context, these terms can all be used interchangeably.

Examples of Federated Platforms

Alright, without any further backstory, let’s dive into some examples. Many of the federated examples I’m listing below support ActivityPub (i.e. are part of the Fediverse), which means that if you join a site that runs any of those apps, you’ll be able to talk to people on any of the others (including me)!

Mastodon (Twitter alternative)

Screenshot of Mastodon's mobile web interface
Screenshot of Mastodon’s mobile web interface

Mastodon is a great alternative to Twitter. It has all the paradigms you know and love, with a few different names. Tweets are called Toots, and Retweets are called Boosts. Toots on Mastodon are usually limited to 500 characters, compared to Twitter’s 280 characters, and you can also include Content Warnings on your Toots, which will hide the Toot’s contents until the reader clicks on it (after they’ve read whatever content warning you provided), and will blur out any attached media by default too. There are even various services, such as Moa.party, which will let you post your Twitter Tweets to Mastodon, and vice-versa, if you wish.

If you head over to Mastodon’s home page and scroll down a bit, you can find a bunch of instances you can join to become part of the Fediverse, and communicate with anyone else who’s also connected. I personally am a member of Aus.social, a Mastodon server targeted at Australian folks. My friend, Aurynn, has also recently launched Cloud Island, which is targeted at New Zealenders, but is also open to Australians.

Cloud Island is a paid-for service (minimum $8USD/month, via Patreon), which helps to support the servers running the site, and the effort required to keep it going. It also has a well-defined and enforced code of conduct, meaning it’s well-moderated, and the site is entirely hosted in New Zealand, which means it’s pretty fast to access from Australia, and isn’t hosted with a big cloud provider like Amazon’s AWS (which I think is a Good Thing). You can find more information on the Cloud Island homepage, or the About section of its Patreon page.

There are iPhone and Android apps that support Mastodon too. On Android I use Tusky. I don’t have any recommendations for iPhone apps, but could probably hunt some down if asked.

A 2-minute Mastodon introduction video

Pixelfed (Instagram alternative)

Screenshot of Pixelfed's mobile web interface
Screenshot of Pixelfed’s mobile web interface

Pixelfed is also part of the Fediverse, and has a focus on photos and pictures, in the same way that Instagram does. I’ve not played around with it a whole lot, but it looks like they’re doing some really cool stuff. Head over to their list of instances if you’d like to join up and give it a shot.

Friendica (Facebook alternative)

Screenshot of Friendica's mobile web interface
Screenshot of Friendica’s mobile web interface

If you really want something that looks like Facebook, from what I’ve seen, Friendica is your best bet. You can check out their list of instances, or maybe try to come join me over on Nerdica. Friendica shows information in Facebook-style posts and comments (even if the conversation happened on another platform like Mastodon — yes, Friendica is part of the Fediverse too!), as well as supporting things like Events; one of the main things I keep Facebook around for.

PeerTube (YouTube alternative)

Screenshot of Peertube's mobile web interface
Screenshot of Peertube’s mobile web interface

If videos are your thing, give PeerTube a shot. You can filter their list of instances on various criteria, post videos, and watch other videos (from your instance or others). PeerTube has the added option that, while watching a video, you can share bits of the video (using a BitTorrent-style protocol) with anyone else also watching the same video, to reduce the load on the server hosting it! Furthermore, if you find someone who posts videos that you enjoy on PeerTube, and you’d like to subscribe to them, you can do this from any platform that supports ActivityPub, and see updates on your platform of choice whenever a new video is uploaded!

WriteFreely (Blogging/writing platform)

Screenshot of WriteFreely's mobile web interface
Screenshot of WriteFreely’s mobile web interface

WriteFreely is a really clean-looking blogging and writing platform that’s also part of the Fediverse. This means you can subscribe to WriteFreely authors from whatever Fediverse platform you’re a member of. If you want to give WriteFreely a shot, you could try out Write.As, from the folks who develop WriteFreely, or join another instance of your choice.

Riot.im and Matrix (Slack/Signal/IM alternative)

Screenshot of Riot's mobile app
Screenshot of Riot’s mobile app

Riot and Matrix work together to provide a chat service, both for one-on-one chats, and for group chat rooms. Matrix is the name of the server-side (the service you connect to in order to interact with others), and Riot.im is the name of the client side (the app you run on your computer or phone to connect to the network). There are other alternatives to Riot if you’d like to connect to Matrix with something different. FluffyChat is one of them. It’s pretty cute and friendly, but I don’t think it’s quite as featureful as Riot is just yet.

Screenshot of FluffyChat's mobile app
Screenshot of FluffyChat’s mobile app

If you want to give Riot/Matrix a shot, I highly recommend creating an account on matrix.org using their instance of the Riot web app.

Matrix are also doing some really cool stuff in an endeavour to support being decentralised, as well as federated. Check out their peer-to-peer Matrix blog post for more info.

Matrix is also great as an alternative to Signal, with the advantage that all the software is completely open source (while for Signal, you’re using the Signal servers, whose source code you can’t verify), and doesn’t require sharing your phone number with contacts. It does full end-to-end encryption, and has recently released a really simple verification tool with Riot 1.6, meaning that if you’ve verified the Matrix identity of a friend in-person, you can be certain that you’re talking to them, no matter what device they’re talking to you from. It’s a really smooth experience!

Riot also supports one-on-one video and voice calling, and, if integrated with Jitsi (mentioned below), can also do group video chats.

What is a Decentralised Platform?

A decentralised platform is one in which every participant is equal. There are no hubs that we need to interact through, and no contributor is more important than any other. The best example of this that I can think of is attending a social gathering in person. You might know some people there, and not know others. You find yourself in a group talking to some folks, one of whom is an astronomer. Later on in the event, you find yourself in a different group of people, chatting, and somebody mentions astronomy. At this point, you can mention that you were chatting to an astronomer earlier on, and potentially invite them over or connect them to this person later on.

In this example, no one person holds all the knowledge from all the conversations in the event space, or is arbitrating and dictating who can speak with whom. Every individual at the event is a free agent who can communicate with any other person, and can share information from other interactions they’ve had. This is what I mean by decentralised.

Examples of Decentralised Platforms

Decentralised platforms are still relatively new, and many of them aren’t particularly polished, but here are a few examples:

Secure ScuttleButt

Screenshot of Manyverse's mobile app
Screenshot of Manyverse’s mobile app

Secure ScuttleButt is probably one of the more predominant platforms right now. It uses what is known as the “gossip” protocol, in the same way that I described in my example of different conversations at a social event above. I hear information from my friends, and then I can “gossip” that information to my other friends as an intermediary, without each of my friends knowing each other directly. This has the advantage that there is no single point of failure, and anybody can pass on a message from one person to another, as long as they’re connected to both of those people. The disadvantage, though, is that anything posted to the ScuttleButt network is immutable (i.e. you can’t edit or delete what you), and, with the exception of private messages, all your posts are publicly visible. (Private messages can be passed on from one friend to another, but can only be decrypted by the intended recipient.)

The other upshot of this model of not having any central servers are that you can make updates (e.g. a social media post) to your ScuttleButt journal from anywhere, even if you don’t have an internet connection at the time, and then as soon as you’re in range of a friend who also uses ScuttleButt, your devices can communicate directly (without needing to go via the internet), to share the information you’ve published, and then your friend can pass it onto others via the internet, or directly. This all happens automatically and seamlessly.

Further to the above, if you receive updates from your friends, your device will download all of those, and you can read them offline at your leisure. This does mean that your cache of ScuttleButt content can grow quite large (gigabytes, in some cases), and you may need to set it up to delete old content once in a while, with the additional disadvantage that you then won’t be able to pass this content onto others, or access it yourself unless you retrieve it again from a friend.

To get started with ScuttleButt on your computer, I recommend downloading Patchwork and following the ScuttleButt Getting Started guide. To get started on your mobile device, give Manyverse a shot. It’s worth noting that due to how ScuttleButt works, you can’t have the same identity on both your phone and your computer, but you can easily cross-link unoffically by mentioning your phone’s identity in your computer’s profile bio, and vice-versa.

Aether (forum-style platform)

I haven’t really played with Aether much yet, but it’s a platform that allows you to create and subscribe to forums on various topics. Like ScuttleButt, because it’s decentralised, you basically download all the information to which you’re given access, and then you share that with others you interact with. In order to keep the amount of information you download relatively small, the platform only allows sharing text data (though this data can contain links to other media such as images elsewhere on the internet).

IPFS (Distributed world wide web)

IPFS, the InterPlanetary File System, is a peer-to-peer file storage system. Their homepage likely explains how it works better than I, but in short, you and others store files you’d like to publish via IPFS, and then everybody who downloads those files becomes capable of sharing them with others.

Briar (messaging app)

Briar is an Android-only messaging app that works via peer-to-peer access direct between phones, or over the internet via the Tor network. It’s not particularly polished, and doesn’t have a bunch of features yet, but is designed to be secure and private, and for basic messaging, it seems to work relatively well.

Jitsi (Video conferencing platform)

Jitsi is one of the up-and-coming video platforms available these days as an alternative to Zoom, Skype, Microsoft Teams, etc. It’s completely free to create a video chat on their website Meet.Jit.si, and you don’t even need an account for it! They’re also working hard on getting end-to-end encryption up-and-running, and already have a proof-of-concept working! Meanwhile, if you’re concerned that their server can decrypt your video messages, you can run your own instance of the server that you control! Jitsi can run completely in-browser, but also has desktop and mobile apps for all major platforms.

Big Blue Button (Video conferencing platform)

As if having a single video conferencing alternative wasn’t enough, Big Blue Button is another one! I’ve not played with this a whole lot, but it’s also completely free, and seems to offer some more seminar-like tools that Jitsi lacks, as well as a collaborative note-taking space shared by everyone within a given meeting. Like with Jitsi, Big Blue Button can be installed on your own servers, so that you can control who has access to your data.

Summary

There are so many more cool apps that I didn’t mention here. All of the ones I have mentioned are completely open source, so the code for them is completely available for anyone to read, or install on their own systems so they’re not reliant on servers controlled by anyone else.

Of the services listed above, here are those that support ActivityPub and are part of the Fediverse, along with any accounts I have on them. I’m inactive on most of them except aus.social, so whichever platform you choose, that’s the best account to follow:

If you’d like to make contact with me on any of the other services I’ve mentioned, here’s where you can find me:

  • Matrix: @mattcen:matrix.org
  • ScuttleButt: @qAAoOWTZ9ynC/huIf9TplQujL4ccNUMGvUvQLxUa9xY=.ed25519

I know that switching away from our current familiar social media platforms that have all our friends on them is a big ask. I also know that some people think that the benefit of being able to easily connect with their social circle outweighs the detriments of giving your data to a big company, or of expending energy switching to a more free and liberated alternative and then trying to convince your friends to do the same so you don’t feel so alone there. I’m here to tell you that getting started on some of these platforms really isn’t that hard, and you don’t need to give up Facebook or Twitter right away. It’s easy to create a Mastodon account on Mastodon.online or Aus.social, and then use that to follow friends on those or other Fediverse platforms, either from a computer or smartphone. It’s equally easy to install Riot.im on your smartphone (or their newer client, RiotX, if you’re on Android) or access its web interface on desktop, to create an account on Matrix.org and use it to chat with friends and meet new people.

All I’m asking is that you give it a chance and see how it works for you, and who knows, maybe we’ll be able to start such a trend that we create our own brand new community of pineapple-pizza-hating or pony-loving humans!

So, please join me. Let’s give some of these other freedom- and privacy-respecting social media tools a chance, and see if we can build a new friend network away from the Facebooks and Twitters of the world!

Improving diversity and inclusion at tech (and other) events

Over the years I’ve attended and organised various conferences, hackathons, and other events, and it’s been interesting to observe the ways in which each of them handle (or don’t handle) diversity.

This post is a collection of notes and pointers about the things I’ve noticed are some of the most important things to help increase diversity at events. When I say diversity, I’m largely referring to the diversity of the attendees at events. People from different walks of life, backgrounds, races, genders, abilities, etc.

Being inclusive at our events is important. If our events only have homogeneous attendees, the things they focus on will only be relevant to those attendees, and not useful to anybody else. As it turns out, not everybody is a neurotypical able-bodied heterosexual middle-class cisgender white male. Those of us who do fit or approximate this description often aren’t aware or appreciative of the issues experienced by anybody different from ourselves.

So, in no particular order, how do we improve diversity? This is by no means an exhaustive list, and there will be things I’ve missed, and perhaps some mistakes. Please check out the references section for more information. There’s also a summary at the end. (EDIT: The summary is also available as a lightning talk.)

Race

Be sensitive to and aware of non-white attendees. Ensure you call out racism in your code of conduct, and that you consider how you can be inclusive of and do outreach to various races and indigenous communities.

Accessibility

Have accessible venues. This means ensuring that all the important areas of your venue, including common areas, theatres, bathrooms and stages (speakers can have disabilities, too, and may have lots to say about them!) are wheelchair accessible.

If you think you may have people with visual or hearing disabilities at your events, consider a sign-language interpreter, or having a hearing-aid loop, so that these people can be involved in presentations too, and encourage presenters to be cognisant of this when making their slides (not assuming everybody can see what their slides say, for example).

Additionally, speakers should be mindful of using ableist language, or abusing terms like “OCD” to mean “fussy,” for example. Ensure your website is accessible for people with screen readers etc.

Dietary requirements

Ask for people’s dietary requirements upon registration for your event. You could have a set of check-boxes for things like vegetarian, vegan, gluten free, lactose free, FODMAP, etc. but regardless of whether or not you do this, you should include a dietary requirements free text field for people to explain the nuances of their situation; don’t assume they’ll fit into your boxes; people are complex.

Gender

There are more than 2 genders, and we want to be inclusive of them all. That means that beyond making our events more accessible to women, we should also be inclusive of trans, non-binary, and gender-non-conforming folks. This should include, wherever possible, gender neutral bathrooms.

If your event will have name badges, and you want to give attendees input into what goes onto their name badge, then instead of permitting a “Twitter handle” text box, have a “free badge text; use for Twitter handle, pronoun, GitHub profile, or whatever you like” field. The mention of pronoun here demonstrates to attendees that you acknowledge people’s pronouns may not match how they look (a femme presenting person may not use she/her/hers pronouns), and improves inclusion.

If you need to ask for gender ensure you allow a free-text field to specify their gender. Again, they may not fit in your boxes. Ask, though, why you are asking for gender? Identifying diversity (e.g. how many non-men do we have at this event) is a valid reason. An argument people have made in the past is that a free text field could result in: man, male, boy, masculine, guy, woman, girl, lady, female, trans man, trans woman, unspecified, etc. This is obviously a bit tricky to aggregate for statistics, so one option is to offer an auto-complete text field that auto-completes to “female” when the user starts typing “f” or other words, for example. This encourages users towards labels that make statistical aggregation easy for you, but lets them break out of your boxes if they wish, and type what they like.

Additionally, “unisex T-shirts” are not unisex. Unisex shirts are not designed properly to fit people with breasts or differently shaped chests. If you’re offering T-shirts, offer women’s cut shirts as well as unisex/men’s cut shirts. This may also mean thinking carefully about the design you print on your shirts to ensure the design looks good on people with larger chests, and that the design isn’t distorted etc. Consider subtle and unintentional use of gendered language, such as words like “guys.”

Names

Not everybody has a first name and a last name. Some have mononyms, other cultures display the family name first. When asking for people’s names on your registration form, have a single field for somebody’s full name. Don’t split it up. Ever. If you want a short or informal name (what we westerners may usually use a first name for), have an additional field for “informal form of address”, and explain this may be used for address in newsletters etc., so people have a context through which they can decide how to be addressed.

Socio-economics

Not everybody will be able to afford to come to your event. People from low socio-economic backgrounds may want to come, and have useful and interesting input and perspectives. We can’t afford to exclude these people. Offer grants or sponsorships to people who can’t afford to attend but wish to.

Childcare and youth programs

Some potential attendees will have children. Offer childcare or youth programs. Childcare is not hard to do, and demonstrates your desire to make your events family-friendly.

Newbies

Going to a new event can be scary. Include details on your event’s website that are easy to find and explain what to expect for your event, possibly offering a contact of whom additional questions can be asked. Once at your event, ensure that newbies are overtly welcomed, and that contempt culture is discouraged.

Code of Conduct

Have a code of conduct. There are plenty of great CoCs available (some of which I’ve mentioned in below in the references) off which you could base yours. It should include consequences for breaches, and details for who to contact if people feel unsafe or need to report an incident.

Summary

Additional references and further reading

See Carina C. Zona’s talk called “Schemas for the real world” for information on how to ask for information from users without squeezing them into boxes into which they don’t feel they fit. Check out the Django Community Code of Conduct, the Hopper Fund’s guide to improving conference diversity, the Geek Feminism anti-harassment policy, and the anti-harassment policy developed by the Ada Initiative.

Regarding inclusive language, the Australian National LGBTI Health Alliance has an excellent guide to inclusive sex and gender diverse language. Feel free to extrapolate the guidelines for size, ability, education and ethnicity. The Australian Network on Disabilities also has a guide to inclusive language you might want to look at.

 

Appropriation of “Spoon Theory”

In recent times, I’ve occasionally referred to how many “spoons” I have at my disposal. This mostly comes up for me in a context of interacting with other people socially, usually either in the context of going to an event where I’m meeting new people, or having a discussion with people (either in person or online) on something on which we disagree. As an introvert who attempts to avoid or avert conflict, these interactions often require a lot of energy or courage for me to participate, so often I’ll say “I don’t have the spoons for meeting new people today.”

I was recently reflecting on the origin of spoon theory, and went to re-read the original blog post of the person who coined “spoons” as a term. This person has Lupis, and physically can only do a finite number of things in a day, often less than are strictly necessary to live a life equivalent to an abled person.

This made me realise that my use of “spoons” isn’t the same as its original intended purpose, and caused me to reconsider whether using the term was devaluing it for those with disabilities like Lupis. It turns out I’m not the first person to consider this. Geek Feminism wiki says: “disabled people have asked that the ‘spoons’ terminology not be appropriated by abled people.”

OK, so I’ve learned something new. I will make an effort from here onwards to stop using “spoons” to refer to my social anxiety or discomfort, and start hunting for alternative terms I can use. Possibly simply saying I don’t have the “energy” or “impetus” is good enough (though I’m open to suggestions for alternatives).

I hope this post serves to inform others of the potential appropriation of “spoons,”, and causes people to question whether the term can rightfully be applied to their situation.

EDIT: I did not write this post to tell people whether or not they are allowed to refer to their “spoons.” I leave that up to each individual. The main purpose of this post, I think, is to acknowledge Spoon Theory’s origins, and be mindful of our use of it, to avoid cheapening its value. There’s no easy solution, and it’s not a clear cut case; it’s just an interesting consideration.

Wasting privilege

I’m a middle-class, cisgender, white, male living in the 21st century. This affords me a non-trivial amount of privilege. I was reminded of this tonight as I had “Call the Midwife” S04E03 on in the background and I listened to how the English landlords refused lodgings to the Irish, and how homosexuality was treated with oestrogen tablets, with unpleasant side-effects. Despite being a fictional show, I don’t doubt it reasonably accurately reflects the reality of mid-20th century England, and it made me extremely uncomfortable, but also glad that I life in a time and place where I’m not directly affected by this sort of thing.

I subsequently saw the following:

And read Rosie’s blog post in the referenced tweet, which really reinforced my middle-class-ness, hitting particularly close to home because it referenced the GovHack Red Carpet awards in which I was involved last year. Rosie’s post also references the Australian Unemployed Workers’ Union Conference from Tuesday, one of the sessions of which I caught the tail end of a video stream of, and was appalled by the circumstances the speakers have to endure.

Having now started to feel bad about the fact that I have spent a significant amount of time wasting my privilege  by not using it to help people less fortunate than me, I’m letting this serve as a reminder that we should be always evaluating where we decide to focus our efforts to maximise value while still bringing us joy and satisfaction.

I am passionate about plenty of social justice issues, from queer and trans discrimination, to feminism, to openness and transparency, and I’m only starting to see the tip of the iceberg on issues of unemployment, poverty, class, and racism. I need to remind myself that I can’t efficiently give my time to all of these causes, but I can carefully pick my battles, and do my best to make a positive impact, while listening to and amplifying the voices of those I’m trying to help.