Experimenting with Better Social Media

Craig Ambrose
Enspiral Tales
Published in
6 min readNov 27, 2016

Like lots of people, I’m fired up right now about how social media is falling short of it’s initial promise of bringing people around the world closer together, rather than creating the polarised, post-truth, hate filled politics that have followed the US election and Brexit.

For those fired up about the fake news aspect of this in particular, the definitive place for collaboration on that right now is this google document started by Eli Pariser.

Personally, I think that the propegation of fake news, while very concerning, is one of several related problems that have combined to make social media actually harmful to our shared dialog, rather than beneficial. Other problems include over-personalisation, creating the “filter bubbles” that Eli talks about in his book and his TED talk, and also a need to build emotional connections with others before attempting to introduce fact-checked logical debate. To use the metaphor introduced in The Righteous Mind, social media needs to cater to elephants (our initial moral judgements) as well as riders (or logical reasoning).

So let’s get started

Building great common infrastructure for society requires a combination of collaboration with all interested stakeholders, and also a bit of “just do it” initiative to get things started. In the interests of getting things started, I’ve launched The Filter Burst Project over at www.filterburst.com.

Before you get too excited, no this isn’t a working social network. It’s a social network under development, which will take shape based on experiments chosen and run by a diverse group of stakeholders.

The sidebar on the right will help you experiment, while the main panel is the social network itself.

What do we need first?

To run our first experiment, whatever that might be, we need the very basics of social networking working. That basically means:

  • Users can sign in (using their existing facebook accounts) (THIS IS DONE)
  • Users can post a message
  • You can see messages from others (such as your friends)

With that working, we’d then need the infrastructure of performing experiments. The idea is to initially work with interested parties only, who are willing to answer questions about their experience. While using the site, people will use the sidebar to indicate whether their feed is providing them with interesting new ideas, or is feeling too unsafe and uncomfortable, etc.

Ideally, we’d run experiments with a seed group of politically diverse individuals, and see whether ideas, such as the ones being discussed in Eli’s google doc, create a good result or not.

One of the main things we’re going to learn in the first couple of experiments is really just how to run experiments, so don’t expect huge changes initially. Making a piece of global infrastructure with a crowd of diverse participants is a pretty new idea. It’s very different to how facebook ran experiments chosen by internal staff and run “on” users with the sole purpose of stimulating massive growth.

What about Legal Structure, Privacy, and Community Process?

We’re bootstrapping this a little bit, and we don’t have any of this stuff sorted out. If you’d like to help out, all this is needed. First and formost, the source code for this app is already available on github and is released on the AGPL open source licence. However, we have no privacy policy and no legal entity.

If this project attracts interest, here’s the intent.

  1. To have a clear manifesto describing the vision of the project, which all our actions can be measured against.
  2. To have a legal structure which ensures that this manifesto cannot be legally contravened by the need to make profit.
  3. To have a team of well paid staff who run much like a cooperative, with autonomy over how they work, team culture, technology, practices, etc.
  4. To have a much larger and ideologically diverse set of stakeholders, possibly with a real form of ownership, enabling them to participate in steering the project.
  5. To be able to receive funds from supporters, and possibly impact investors, without the need to be a traditional for-profit company.

This set of goals is in line with the Platform Cooperatives movement, which this can be considered a part of. Although we don’t have these structures in place yet, if you’re thinking of getting involved and are worried about trusting whether this will all actually happen, then a good place to start would be helping us with these things.

What about Technology?

When it comes to technology, developers are likely to get involved based on whether or not they like the particular technology choices made, and this usually leads to several parallel projects. For starters, that diversity isn’t necessarily bad, and we hope that we’re not the only project responding to this emminently clear need.

However, making a large scale social network has some particular goals that not every technology will work for. Instead of just picking our favorite technologies, we’ve gone with ones that have been demonstrated to scale, and and paid close attention to all the many post-mortems given by facebook, twitter and other sites that have had to solve these problems as they have grown.

For the non-tech audience, you can probably skip to the next section on the understanding that our technology is chosen with scaling in mind (with a particular focus on realtime), as well as interoperability with other platforms and devices.

For the geeks, here is some more detail.

Clearly it would have been easier to start something like this in Rails or Django. However, we know that will bite us eventually, for example Twitter was built in Rails originally and migrated to Scala to handle scaling. Facebook is built in PHP on the server side, but Facebook (being stuck with this technology) rebuilt the entire PHP compiler, adding strong typing and other features, and relies heavily on oCaml for many tasks behind the scenes.

To massively scale in a real time environment, our only options for a server side technology are an evented system (node.js) or a functional language which can thus be parallelised due to immutability. The latter choice is most proven to scale, in particular as demonstrated by Twitter (Scala), WhatsApp (Erlang) and Facebook Messenger (Erlang).

As such, we’ve chosen the Erlang virtual machine, although with code written using the more modern Elixir language, and the Pheonix framework. This is new to us, and likely you, but it doesn’t take long to pick up. It’s structured like Rails, but it runs much faster and can scale all the way up to a global telecom system.

On the front end we’re using React, due to a desire to share code with mobile clients, and for the same reason that Facebook built React in the first place, because it solves real problems in this space.

To communicate between the two we’re using GraphQL, again for the same reason that Facebook does, because it can best handle the competing needs of different front-ends and integrations.

[end of the geek bit]

What about other related projects?

We’re keen to co-operate with related projects. We aren’t trying to “own” this space. We’ve chosen a particular tack, which is focussed initially on building something a bit like Facebook, but creating a better result for society. Other projects are also doing exciting things, for example using decentralised and federated servers and encryption.

All these approaches are important, and to make progress, we need to make the space more creative and more open to new players. We’re totally committed to using open standards to help work with other related projects. If you have a standard you’d like us to conform to, please let us know, and we’ll do the same, publishing our protocols and APIs as they firm up.

What’s next?

Things are moving fast. For now, follow along, and if you’re keen to get more directly involved, drop me an email. If you’re wanting to be part of our community of stakeholders, just keep watching this space for now. Expect small changes to the site every few days and pretty soon you’ll be able to start experimenting.

--

--