An abstract image of a greyscale gradient triangle on top of a greyscale gradient background.

Image by Xiaowei Wang.

Party at My House: Darius Kazemi on Human-Scaled Social Media

Over the last few years, there has been a slow drift away from major social networking sites like Facebook, Twitter, and Instagram. Some people left in order to to declutter their digital lives, while others left because the platforms no longer provided the thing that they came there seeking: community. But if you’re seeking community, where do you go?

It turns out: someplace that looks very similar. But unlike those big social media sites, where the rules, moderation, servers, and your data are controlled by Facebook or Twitter, this place is controlled by you and your friends. There are no ads, the code is open-source, and services are built on open standards. As a concept, it’s called the decentralized web: run your own piece of social media software, but let it communicate with others and, most importantly, make and enforce your own rules, both technical and social.

Darius Kazemi is an internet artist and software developer who thinks the internet can be a better home for humans. He recently wrote a best practices guide called “Run your own social: How to run a small social network site for your friends” to talk about why and how you might build a community on decentralized social media. His purpose was to provide another way forward—and explain it to anyone, whether you’re able to stand up your own server or not.

“Run your own social” focuses on Mastodon, the most popular open-source software for decentralized social media. Through open protocols like ActivityPub, Mastodon servers are able to communicate with the larger “fediverse,” the larger ecosystem of interconnected—or federated—servers. From a user’s perspective, Mastodon looks and acts a lot like Twitter, but it’s able to connect to a wide range of fediverse services similar to YouTube, Instagram, Blogspot, and more.

Darius’s guide is based on his experience running his own small social network site for his friends known as Friend Camp, where a few Logic editors are members. In the chat that follows, conducted in January 2020, we talked to Darius about Friend Camp, the fediverse, and, briefly, our attempt to create an instance of our own.

How did you get interested in running your own social network site for your friends?

At some point Twitter became a hostile place for me to put my bots, and I became interested in the tech platforms that are not owned by anyone in particular. I got started with my own Mastodon instance just for myself for a while, but it got lonely. At the same time, I had a whole network of friends on Twitter who all had locked accounts and would primarily talk to each other there, because we all trusted each other. So I figured: I have tech skills and social skills. People trust me. Maybe I should try running an instance for my friends. That’s what Friend Camp started out as—an experiment in trust, as much as anything else. Then I started making modifications to the Mastodon software that Friend Camp was running on, which turned into the offshoot that I call Hometown.

When you say Twitter became a hostile place for you to share your work, what do you mean by that?

First, it became technically difficult to maintain my bot projects. Twitter changed their API around a lot, and were bad about communicating the changes, and which features would stay and which would go. That meant that whenever I noticed a change, I suddenly needed to update all eighty of my Twitter bots to get them working again.

I also got a bad taste in my mouth from Twitter supporting kinds of speech that I don't particularly agree with, and I began to feel like putting my toys and art there was just adding value to the network. For a while I felt that the tradeoff was that the art I published there still enriched my life and the lives of my friends. At some point, though, I started to feel like the balance got out of whack, and I could do more good by putting my work on alternate networks and giving people a reason to get off Twitter. 

I joined a Mastodon instance a couple of years ago, and then fell off using it. I'd remember it every once in a while and think it was cool, but still not end up using it for long. Then I joined Friend Camp, and I loved the community, but still wasn’t an active contributor.

The guide you published about running a small social media network for your friends, “Run your own social,” got me interested in the idea again. What led to you write the guide?

That project was the culmination of my Mozilla Fellowship. I didn't know exactly what I wanted to do for the fellowship going into it, but I did know that I wanted to work on decentralized social media. 

Through that, I got to meet a bunch of people working on all sorts of different protocols who were active users of different kinds of networks. The early adopters were people who believed in certain principles around free information. Those ideas are interesting to a very particular kind of person, but they're not that compelling to everyone else. And the more I learned about and participated in decentralized social networks, the more I realized that what was interesting to me about them—the things that made them cool and different—no one was talking about. 

So I wanted to write a guide that talked about why someone who isn't primarily a nerd should be interested in decentralized information flow. What does it bring to your life? And not only that, but what does it bring to your life that Twitter and Facebook don't? 

It was also a reaction to what I saw in tech liberation spaces, including Mozilla, where the guiding metaphor is “internet health.” To me, that's a really moralizing stance. It’s a metaphor like: eat your vegetables, lose some weight, here's what you have to do to live a morally better life through technology. 

That works for some people, obviously. You know, people care about their health and there is a big industry around health advice, so presumably there are people who care about that sort of thing in a tech space as well. But I wanted to imagine a way of having fun on the decentralized web and bringing value to your life in ways that you can't on the centralized web.

What finally pushed me to create my own Mastodon instance was feeling that it was possible to build a special community by incorporating certain moderation features that weren't available on the regular Mastodon project. The most important feature for me was the local-only posting, which allows users to create posts that can only be seen by members of that instance.

What are the technical features you've built into Hometown that you feel are needed to create the kind of community that you want to support on the web?

I plan to add more in the future, but Hometown currently has three features that are different from Mastodon. Local-only posting is the main one, and I didn't even write that feature. It was originally written for glitch-soc, a fork of Mastodon with more experimental features, and a Brazilian guy named Ronato "Lond" Cerqueira submitted it as a pull request to the main Mastodon project—which has never been merged. I basically just took the feature with his blessing. It's not technically hard—all it is is an extra true / false column in the database, and then some extra logic that takes that into account. I haven't counted, but I would guess it's around one hundred lines of code, on top of the massive Mastodon code base. It's a very small change to Mastodon itself, but it strikes at one of the core things about Mastodon, which is this concept of federation and relaying messages to other places.

There are lots of Mastodon instances out there that are general interest, where people join who don't necessarily have anything to do with each other. It's kind of like your choice of email server—you're not in a community with other Gmail users because you have a Gmail account, you're not in a community with other Hotmail users because you have a Hotmail account. Except that on Mastodon, there are features that seem to imply that you are in a community, like the instance-specific timeline, also known as the local timeline. But the local timeline doesn't make that much sense if there's nothing that you have in common with anyone else. 

Then there are instances that are built around particular fandoms, and that can sometimes work. But I'm more interested in people who already have preexisting social connections to one another. For a group of preexisting friends, it made sense for me to provide an extra layer of security, where only the other people in the group can see my messages. 

I like to go back to email as an example over and over, because email is federated. It has been forever. I can have a Gmail account, and you can have a Hotmail account, and I can send you an email because our services speak the same language, even though our accounts are on different servers and may be using entirely different technology. Federated social media is basically the same idea: two servers that speak the same language, and enable people to talk to each other. 

Email also has similar questions of trust as federated social media. If I send an email to, you know, becky@gmail.com, it's going to the Gmail servers and Google is going to see the message and they're going to do what they're gonna do with it. If I trust Google, that’s okay by me. But if I go to my auto mechanic and I send an email to contact@jimsmechanic.com, I don't know if that email is run by Gmail behind the scenes, or if it’s custom technology or what. For all I know, every email that goes to that mechanic's domain is also posted to a subreddit somewhere that people use to target other people for harassment. I don't know! 

That's how posts on the fediverse work too. Friend Camp is connected to something like 6,000 other servers. I haven't audited these 6,000 servers to know if they're safe, nor could I. If my messages go out to any one of those servers, there could be someone opening up private messages and looking at them. 

So the local-only feature is about a topology of trust. I know that everybody on Friend Camp trusts me with their data, so if we can have a local-only layer, that means there's only one computer that stores these messages and that's the one that's owned by me, a person that you trust. So a message that you send to someone else on Friend Camp goes from your phone to my computer that's owned by me, who you trust, and then it goes to your friend’s phone, and you trust your friend too. That provides an extra layer of security. So for example I might tell people: if you’re going to send nudes, send them local-only, and I promise I won’t look at them. My promise doesn't mean anything to a random person off the street. But it does mean something to you, because you're on Friend Camp and we have a trusted relationship. 

Block Party

If you made these communities available to a general audience, would the trust part still work? In other words, do you think that these notions of trust and security scale? 

I've spent a lot of time thinking about that. Not everybody knows a Darius—not everybody has a friend who's technical and wants to set up one of these networks, and there's currently only one hosting company you could go to who would set this kind of thing up for you.

But this technology could easily piggyback on existing trust networks and infrastructure networks. As a thought experiment, what if every public library system in the US had a federated social media server, and anybody with a library card could have an account? That's not as personal as something like Friend Camp, where the administrator is your friend. But if your administrator is an employee of your local library, then there's a door you can go knock on. You can complain to your local city council member if something happens that you don’t like. I can't go knock on Mark Zuckerberg's door and complain about something, but I can do that at the local library.

That would still be a very small-scale, local thing. I would love to see municipal infrastructure take on some of this, at least in a US context. 

I’m still trying to figure out how this works at a larger scale. Let's say one billion people want to be on social media. If we’re thinking about my ideal of small communities, that would mean that ideally there would be something like ten million servers of a hundred people out there. But how does that even work? How do you have ten million servers? And does that mean you only get to have a hundred people in your local-only posting club? 

This is where I am playing around with concepts like “neighborhoods,” where a bunch of servers mutually agree to trust each other. That would allow for three levels: you could have local-only posts that only go to your instance; you could have neighborhood posts where messages are only federated to other servers in the same neighborhood; and you could have your global public messages that go to everyone. 

This reminds me of the Community Memory project that was established in the 1970s. It was a system of public computer terminals around Berkeley and San Francisco, where anyone could go to whatever physical terminal was closest to them to see what other people had posted, check for messages, and leave messages for other people. That idea of public, decentralized infrastructure that’s rooted in a particular place feels very similar.

Yeah. It's kind of similar to bulletin board systems (BBSes) back in the day, too. You wanted a local BBS in your area code because otherwise you’d have to pay long distance telephone fees. Honestly, if federated social media becomes as successful as BBSes and lasts for about as long as they did—maybe ten years of a heyday—that would be a huge success.

There is a book called Cyberville by Stacy Horn about the local BBS community she ran in New York City for something like ten years. The book was written in 1998, and it’s really relevant to managing a fediverse instance.

Sometimes I try to think about how to get the whole world on these kinds of decentralized networks. But on the other hand, I question why the whole world needs to be on these kinds of networks. I can't think of a compelling reason—other than the selfish one of wanting to talk to everyone that I know. But you don’t always get everything you want.

Your experiments are able to demonstrate a sense of trust online that isn’t a binary, on/off thing, but where there are degrees of trust. That’s common in interpersonal relationships—you may have an inner circle, then acquaintances, and maybe you have a public persona—but it’s largely absent on the web.

Even though your projects are built on Mastodon, it seems like the maintainers of the Mastodon project have a different vision for this system of federation—which is not necessarily to build up networks of trust, but to instead to create an interconnected world. And despite Mastodon having a very different structure from Facebook or Twitter, it feels like all those services share that same motivation.

That's my primary critique of Mastodon: it's still buying into the fact that everyone talking to everyone else is necessarily a good thing. 

It’s not just Mastodon—most fediverse developers out there seem to be really interested in the idea of connecting everybody in the world to everybody else in the world. I'm not. I'm trying to create a counter-narrative to that with “Run your own social” and Hometown. And more and more people are switching from Mastodon to Hometown, which is really cool, and a little scary for me. But my hope is that Mastodon will just accept the pull request for my Hometown features, at which point we could all move back to Mastodon.

Everything In Moderation

You've crafted a very particular code of conduct for Friend Camp, and you write in the runyourown.social guide that if someone can't disagree with your code of conduct, then it's probably not strong enough. How do you think about moderation?

The thing about keeping a server and a community small—and by small, I mean less than a hundred people—is that it is possible to individually know every single user and have a sense of where they're at, how they're doing, and really take care of everyone as needed. It also becomes possible in a community that small to make decisions with a pretty strong consensus, if not unanimous agreement, and it's easier to engage in difficult conversations.

Just this morning, a fairly major moderation request happened on Friend Camp. Someone made a request to defederate two particular servers, which is essentially a server-wide block on sending and receiving messages from those servers. So that would mean that if I had friends on server A and B, we would not be able to communicate with each other anymore over the social network—we wouldn't even be able to see each other's content. 

Typically, the easiest defederation requests are for servers that are full of spammers, or people who are making death threats—that's the cut and dried stuff. For the defederation request that came in today, which was reasonable but less obvious than the examples I just gave, I was able to go into the database and look up exactly how many people we follow on the servers in question. We had three active Friend Campers who followed an assortment of about a dozen different accounts between those two different servers. From there, I looked at each one of those dozen accounts to determine which ones were active accounts, and wrote a custom message to each of those three people on Friend Camp. I showed them the thread about defederating and explained that we hadn’t made the decision yet, but laid out what the consequences would be in terms of not being able to talk to the specific people they followed. It’s possible to have informed consent in a community of this size—I'm able to contact the people who are immediately affected and make sure that it's brought to their attention. That doesn't scale. 

So that's the kind of thing that can't be offered by Twitter or Facebook, or even larger Mastodon instances like mastodon.social, which has something like 200,000 users. It's a “feature,” in air quotes. It's enabled by the technical details of how federation works, but it relies heavily on the labor of a moderator and the engagement of users—so it’s more of a social feature than a technical one. Ninety-nine percent of Mastodon and other federated servers don't have admins who do this sort of detailed moderation.

That version of content moderation, where you are stewarding the norms of a community, is so different than the Big Tech version, which feels like it is mainly about removing terrible videos of people doing terrible things. Is there any way to scale or automate your approach?

In a way, it's like asking if something as personal as sex work could scale. And, in a sense, live-streamers creating a one-to-many relationship is sex work at scale, but it's a very different thing than one-to-one.

I think that the one-to-one dynamic is what differentiates federated social media from platforms like Twitter. And if a federated community doesn’t operate this way, then there's no reason for people to not just be on Twitter. If your goal is to get people off of the centralized services and onto the network that you're on, the only way to do that is to provide better service.

There is a narrative that is invoked with 4chan, 8chan, or Reddit, where if you have a community that creates its own rules and is not subject to some centralized moderating force, you can actually end up radicalizing that community. Do you think that there's something to that?

I believe in radicalizing people. I don't think there's anything wrong with radicalization. I can disagree vehemently with the views of a given radical community. I’ve heard people say that there are no Nazis on Mastodon. I'm like, what are you talking about? There are so many fucking Nazis on Mastodon. But on Friend Camp, I'm here, and when I hear about the Nazi servers I defederate with them. Another example is we have lots of trans people inside Friend Camp and so we have a zero tolerance policy for trans-exclusionary radical feminism. We just don't accept that.

Is that the right policy for Facebook, where they're trying to serve the entire world? I don't know. It's not an obvious call if you want to serve every single person in the world. But if the fifty of us who are active Friend Campers decided that mentioning peanut butter and jelly sandwiches is completely against our values as a community, and we want to defederate with anyone who mentions them, we could do that. We have that ability. 

So I'm not against radicalization. I am fine with having a radical queer community with ideas about social justice that seem really strange to outsiders. But I also think you can't allow for radical communities of one kind, at least technically speaking, and not also enable spaces for radical communities of a different kind. Nazis will also be able to run their own Nazi instances with Nazi rules. I think about it in terms of my home—there are people's houses in my neighborhood where I can see in the damn window that they have Confederate flags up, and I'm sure they have poker nights where they get together and talk about shit that I really don't like. But they're doing it in the privacy of their homes. I think you can assemble in a private space and talk about whatever. It's when it comes out and enters the public forum that consequences can start coming into play.

Oh Hi, Mark

You take an hour to three hours to walk new users through Friend Camp, describing the features, and connecting them to others on the network that they may not know. That’s something that you don't get on larger platforms. The process also seems akin to consciousness-raising or educating people about their own data. Could you talk about your approach to onboarding, and why you decided to do it that way?

To be clear, I spend an hour, sometimes two hours—never three, fortunately. 

Ah, in your guide you said up to three. I was thinking, my God, that’s so much time.

I was just putting out a worst-case scenario for people so they know what they're getting into. But, yeah, I basically go through every single technical feature, every button that you can press, every preference in your profile. And I am there in the future if they ever have any questions about how any of this stuff works.

You can have complicated features that are not super easy to use, as long as there's someone there who can help you through it. I'm that person for Friend Camp. Because I personally know every single person that joins Friend Camp, I also have some idea of what they're interested in, so I tailor it a little bit to each person. If I know someone's really privacy conscious, I'll spend more time going over privacy features with them in more granularity.

Facebook's privacy settings are actually pretty comprehensive, but it's this massive dashboard that’s confusing to people who aren’t technical and don’t know what all the different words mean. On Friend Camp, we also have complicated dashboards—but you can also message the Mark Zuckerberg of Friend Camp and ask him to explain what all the buttons mean. That's as far as I’ll compare myself to Mark Zuckerberg. 

The second half of the orientation is really a social orientation. I like to think about running a federated social media server instance as being like the host of a party. If someone shows up to my party who's just moved to town, it's my job to take them around and introduce them to people and say a few words about them, and maybe take specific time to introduce them to individuals who I think that they should meet. Usually what that means is I go on the local timeline and I scroll down, and for everybody who's been actively posting for the last twenty-four hours, I describe in one sentence who every single person is, and go into more detail if I think there's a potential connection there. 

This ties in with another reason why I wrote my guide. People talk about how it's hard to get people off Facebook and Twitter because of the network effect. People want to be where the people are, right? With the guide, my hope was—and it seems to be borne out, people are doing this—to bring whole communities over at a time rather than individuals. I think trying to recruit individuals away from a social network site is a fool's game, because you invite them over and maybe they know you, but they don't know anyone else. That's it. Whereas if you can get an entire church group or an activist group to move over to decentralized social media together, then you don’t have that problem. Their community is already here. There's already dozens of people that they know.

Now, this level of care for a social media instance is a big commitment—between onboardings and support, or fixing things like Elasticsearch being down, I spend something like twenty or thirty hours a month on it. I try to make it clear to people: it takes up as much time as any major hobby. You do this instead of watching TV, or really anything else. 

Just having started my own instance, there’s a question of how we go from zero to a vibrant community. I want to build agency and context for folks when they come on to the instance, which I think requires doing the kind of onboarding that you're doing. But I don't have the time to onboard a whole bunch of people right now.

Right. In that scenario, I’d consider just doing a big group call. Just have two or three group teleconferences—dial in and get the onboarding. Getting over that initial hump is really, really important. And it requires a ton of work. It's a lot, a lot, a lot of work. But I think it's worth it. 

Break Up with Your Platform

I want to make sure we get to talking about the role of open standards. I'm relatively new to decentralized protocols like ActivityPub, Scuttlebutt, and those sorts of things. How do you see those different protocols supporting potential futures that may exist on the social web? 

Protocols are just agreements: social contracts between people saying we're going to speak this language to each other, and we abide by these rules. Some protocols have so much value that everyone uses them. For example, everyone uses TCP/IP, because otherwise you don't get access to the infrastructure of the internet—the actual wires that move data around from place to place. That's a very compelling reason to use a protocol. 

When it comes to new decentralized protocols like ActivityPub and Scuttlebutt and Dat, there isn’t yet a compelling reason for everyone to use them. But what’s interesting is how these protocols encode different ideologies. My favorite example of a protocol encoding an ideology is Morse code. Morse code is an early technical protocol for communicating over the telegraph wires. And one of the ideologies encoded in it is an English-centric system, because there is no Morse code for an “A” with an accent on it. Morse code only covers the English alphabet, and that's it. 

With the decentralized protocols, some of them encode ideologies around privacy. I would say Scuttlebutt is more libertarian than ActivityPub, because it's about every individual being their own server. And ActivityPub was interesting to me because it maps more towards my ideologies, which is that we all need to band together and share resources, but that it’s also okay to have some specialization. 

Mostly, though, open standards are a way for me to easily take advantage of stuff that's already out there. It's a way for me as an individual to amplify my time and effort as a developer. I'm about to release an event management project for the fediverse. And one of the cool things about it is that while I built it to be compatible with Mastodon, because I was doing that through the open standard it already kind of works in a bunch of other ActivityPub-based services. It didn't require that much extra effort for me to tweak it to make it work for systems other than Mastodon, and it actually works better in some of these other services than the ones I designed it for.

The different protocols map onto different ideas about what it is to be human and communicate, really. And they make different assumptions about users. It's like, well, of course you want to be your own server. But maybe you don't. Maybe it's more ecologically efficient for you not to be your own server, and for people to share them. When these protocols state their assumptions, they tend to state them as universal truths. It’s kind of like the way product marketing works: don't you hate it when you crack an egg and it explodes in your face? Buy my new egg cracker! It's kind of like that.

Jack Dorsey announced in late 2019 that Twitter is funding five people to develop an open standard to decentralize Twitter. What do you think? 

For a huge company like Twitter, it's easy to fund five people to work on a project for a few years. If you do the basic math, you could fund five people for five years with less than ten million dollars. That is obviously a shitload of money that could change a lot of people's lives, but in the grand scheme of Twitter, it’s not very much.

So I think it's just a hedge. It's a way for them to tell investors that they’re not ignoring the space; you can't say they’re not paying attention to it. But honestly, it also strikes me as the kind of thing where, at a big tech company, internal politics can drive the creation of new initiatives. Maybe there’s a handful of people who you want to keep on staff and who are at risk of leaving, so you give them a cool project to work on and then they work on that cool project for five years. There can be many reasons for a big company to do this sort of thing, but I don't see it as a serious initiative. And even if it is serious, like all initiatives it has a low chance of producing anything fruitful. I'm not going to worry about it until I see them start making moves that actually make a difference.

There have been moves in the US and Europe towards regulating these large platforms. Many folks have called for them to be broken up. What do you think should be done with them?

I would love to see them all broken up. I think that would be a start. I'm not against the existence of giant centralized platforms, as long as it's a real choice as to whether you get to be on one or not. Right now, it really feels like it's not. You don't have a choice to be on Facebook or not—not really. I don't have a Facebook account. I haven't had one for a year. But there are things that I miss about it, and I'm channeling that and using it to build an alternative.

I haven't had a Facebook account for a bit longer than that. The things that I miss are mainly interactions with friends and family who aren’t as interested in experimenting with new technologies, which right now feels like a barrier to entry to using Mastodon. What would it take to have Mastodon or these decentralized networks become more mainstream? 

I like the small-community approach. I think it would be possible to bring on people who aren't technically advanced, as long as you have an individual coordinating the whole thing.

And one of the beautiful things about federation is that you can have entirely different services talking to each other. So you could have Friend Camp talking to an instance that does Facebook events-type stuff, and you can also be talking to PeerTube, which is a YouTube-type service. There's nothing preventing someone from making a federated app that, on the front end, looks exactly like a text messaging interface that you could use to talk to your grandparents, because most grandparents can send a text message. Now, is anyone doing that? No. My hope is that more people will.

Darius Kazemi is an internet artist, software developer, and moderator of Friend Camp.

This piece appears in Logic's issue 10, "Security". To order the issue, head on over to our store. To receive future issues, subscribe.