What You'll Be Creating

Talk about 15 minutes of fame: upstart social networking startup Ello burst on the scene in September with promises of a utopian, post-Facebook platform that respected user's privacy. I was surprised to see so many public figures and media entities jump on board—mainly because of what Ello isn't. It isn't an open source, decentralized social networking technology. It's just another privately held, VC-funded silo.



Perhaps I'll get excited when BoingBoing posts there a second time ("we're not entirely sure what we're doing here yet") or if I get an invite; probably not.

In reality, the road to a usable open source social networking technology is paved with the wreckage of good intentions.

Remember Diaspora? In 2010, it raised $200,641 on Kickstarter to take on Facebook with "an open source personal web server to share all your stuff online." Two years later, they essentially gave up, leaving their code to the open source community to carry forward.

How about OpenSocial? "This site may be hacked."



Guess that didn't work out that well either. That was 2007, and count me among the idealists with faded dreams. I didn't even keep my blog posts up—you have to read them on Archive.org.

Even today, researching open source social networking alternatives online is a bit like reading about star couples in the entertainment tabloids; it's hard to tell who's dated who, who's on their own and who's still together.

Diaspora's still around. Identi.ca (not to be confused with Friendica) became Status.net which is now Pump.io but if you want to try it out you have to visit Ephemeral Me. There's Tent.io which you used to be able to try out at Tent.is but is now Cupcake.io. Diaspora and Tent considered getting together but decided not to. Still with me? Good, because Status.net is now part of GNU Social. There's Feedly which became the Stream Framework with SaaS commercial partner GetStream.io. And, don't forget BuddyCloud or the Activity Streams standard. And that's just branding and relationship status, it says nothing about the actual quality, viability or status of these technologies.

If you're not overwhelmed yet and haven't despondently clicked back over to check your Facebook account, someone at Wikipedia has compiled this questionably helpful comparison of software and protocols for distributed social networking. I apologize if I left out or misunderstood your awesome project but honestly folks, it's really hard for people to figure out what your technology is doing and whether it's worth investigating.

For this series, I'm going to introduce you to six of these technologies:

This article will briefly walk through the state of these solutions, and in part two I'll walk you through installing the most compelling contenders.

An Overview of Current Technologies

1. Diaspora

Diaspora is written in Ruby and has a federated server model with 54 "pods" running. The latest release was in September 2014. One blogger reported that in the wake of Ello's VC funding disclosure, Diaspora usage doubled to 25,000 users.

You can sign up at any of the open pods listed here, but good luck figuring out which might be a good one to try. For example, I decided to try one of the more populous "open" pods in the US, ShrekIsLove. Here's what I found:

Kind of makes me long for a clean blue Facebook logo. Sign up is a bit smoother:

Here's what the profile configuration page looks like:

The timeline page is more friendly, although posting is a bit rough around the edges. In my opinion, "you can use Markdown to format your post" isn't really a positive thing (sorry @gruber).

Preview is integrated with geolocation and images but still a bit rough around the edges:

There's some very solid functional progress but it's still extremely rough around the edges. Diaspora certainly isn't dead, but I don't clearly see a trajectory yet towards being something I would adopt.

2. Pump.io

Pump is led by open source social networking veteran Evan Prodromou and is written in Node.js. Evan wrote Status.net but turned it over to GNU in order to focus on the new Pump.io platform.

To try Pump.io, register at Ephemeral Me. It's very clean and Twitter-like (yeah, Bootstrap):

Here's the signup page:

And, the profile signup:

Here's the posting dialog—sort of presented as if you're emailing your followers. I found the usability of the posting functionality to be a bit poor.

Here's what the stream looks like. I didn't see any activity here, so it wasn't clear how to connect with others or build my network:

This is the second time I've tried out Pump.io and each time I've been a bit underwhelmed. They've done some solid work but the end-user experience isn't yet at a level that draws me in.

3. GNU Social

GNU Social evolved from Prodromou's Status.net project and other GNU code. It's written in PHP, which I think is helpful for sustaining open source participation.

Some of the public networks you can join are Quitter (in various countries):

Here's the signup page:

The timeline interface was surprisingly clean and functional. I could very quickly find other people as well. Posting was super simple but with limited functionality. This is currently a Twitter-clone.

I was pleasantly surprised by how clean the interface was. By trying to be simply Twitter-like, I think they've done a solid job providing some of the basic features in a federated social network.

4. Tent.io

Tent is a public API with primary implementations in Ruby; I was also able to find secondary implementations in PHP. It was difficult to determine the status of Tent implementations, both servers and client. From what I can tell, there is no stable reference server code available yet. But Tent aspires to be more than many of the other platforms, as you'll see.

To try out Tent, you have to visit Cupcake.io (are you starting to notice that no one in this space thinks deeply about branding?):

Here's the profile page—notice the navigation on the left:

Here's the timeline and posting functionality. A relatively clean Twitter-like presentation:

Here's an example of where Tent goes beyond the others, e.g. file sharing:

And I liked that they have an API console of sorts built into their client:

The usability of Tent's Cupcake client was by far the cleanest and best-organized of all the platforms. However, I find their documentation and links to code to be quite incomplete and confusing in their lack of specifics. Exhibit A: their blog has virtually no content. I think the work here has merit and potential, but their communication needs to improve. I just wasn't sure where to engage. In fact, I was a bit concerned that any engagement would be wasted.

5. Commercial Open Source Approaches

I decided to check out a couple of platforms that emphasize the commercial aspects of their work while offering it via open source. The results were mixed.

a) GetStream.io

GetStream.io has a beautifully designed site and an excellent tutorial and documentation for using their API. The founder Thierry even sent me a nice email with links to some pertinent libraries after I signed up, which showed positive engagement.

While they clearly link to their open source Python Stream Framework, their emphasis seems to be helping people use their hosted platform to build private label social networks. To me, this is less interesting than the approach of other platforms which are federated and largely open source by design:

Check out their API tutorial, it's a nice piece of educational design:

They provide examples for different languages of how to work with the API, and show the effect on an imaginary mobile app:

b) BuddyCloud



BuddyCloud offers its work open source and provides an API, but again it appears to lack an emphasis on federation.

You can demo BuddyCloud here:

The design didn't appeal to me:

What Have We Learned

First, let's give kudos and a shoutout to all these folks and the people who I didn't have time to include. Taking back social networking into the open source fold is extremely important, and these people have put real heart, time and effort into building solutions, many viable.

They've also done a great job emphasizing data ownership, APIs, and open source. The effort they've put in to building decentralized systems is hugely important.

There are some areas that I feel are still weak all around:

Communication and documentation to describe what they're doing, its status, what technologies and standards they adhere to, and product roadmaps.

Clarifying what their aspirations are for decentralization and interoperability with other networks.

Doing well at the most important elements of the user experience, such as posting and timeline. The simplicity of posting to Facebook is one of the things that makes it work so well. There's very little sophistication on the client-side, e.g. Javascript/AJAX, with most of these tools. There needs to be much more; Ghost's interface efforts would be a model to learn from.

In the next part of this series, I'll highlight approaches that I think will be needed for the open source community to succeed at social networking. And I'll walk you through installing the best of these technologies.

If you have any feedback, suggestions, or corrections, please post them in the comments. I'd especially like to hear if I missed any important technologies.



If you'd like to keep up on my future Tuts+ tutorials and other series, please follow @reifman or visit my author page.