Reading through the Bluesky protocols
2023-05-06 08:47:00 +07:00 by Mark Smith
There’s been a huge amount of activity in the alternative social medias space the past few weeks. Whereas the focus in social media for the past 10 years has been on centralised systems such as Twitter, Instagram, Facebook etc, the current focus is towards decentralised systems. Many have been expecting and waiting for this change for a while now, and they have been building open protocols that would enable such a transition to become a reality.
I've been trying out some of these new decentralised Twitter alternatives and related open protocols. First I tried out Nostr, with mixed results, though I remain intrigued by it’s possibilities, and I very much like it’s simplicity. Then I took Scuttlebutt for a spin, and that was ultimately very disappointing for my situation, but I could see how it could be quite cool if you already had a group of people. I also did somewhat of a deep dive into ActivityPub, a social media protocol started a number of years ago, that has gained a lot of traction recently. In some ways it feels a bit old fashioned in its design, but you can actually build some very interesting things on top of it.
The latest hot decentralised social network to blow up is Bkuesky. It was started what feels like a couple of years ago and got a lot of attention since it was being led by the Twitter founder Jack Dorsey. At the time his vision was for Twitter to be powered in some way by the new protocol. The project sort of faded into the background but resurfaced in the past month, and it appears they have been very busy designing and building.
It’s still invite only, and sadly I don’t have an invite yet, though I have added my name to the waiting list. The hype cycle is in full force, with loads of articles being written about people’s initial experiences, and it sounds very much like how I remember the first few years of Twitter to be like. Other people agree with the sentiment. Oh goodness maybe the good old days are back, this time with hellthreads and people being very silly. Hellthreads, fun in social media, not so fun in real life. Let's please remember the difference.
With no access to the network I decided to have a read through the protocol docs, to get a sense for what the foundations look like. A good place to start is this blog post because it highlights some of the key high level design goals:
I note that they started out doing an ecosystem review, looking at existing solutions including ActivityPub and SSB for social, Matrix and IRC for chat, and RSS for blogging. That’s essentially what I’ve been doing on a smaller scale! Great minds… :)
The high level mission:
Bluesky’s mission is to drive the evolution from platforms to protocols
Why would I be interested in all this? What are they trying to build?
An open and durable decentralized protocol for public conversations can allow users a choice in their experience, creators control over their relationships with their audience, and developers freedom to innovate without permission from a platform.
Some the features and goals that stood out to me:
We want users to have an easy path to switching servers, even without the server’s help.
We want to give users the option to participate in global conversations the way they do on large social networking platforms.
Make global conversations possible while preserving the freedoms users gain from interacting through an open protocol.
Build around trust from the start by exposing what’s going on under the hood and allowing users to adjust their experience.
Work towards a transparent and verifiable system from the bottom up by building a network that is open by default. We’ll do this by giving users ways to audit the performance of services and the ability to switch if they are dissatisfied.
All very great. We are talking about systems that will mediate our day to day interactions, so it’s important to get the high level stuff right. This definitely feels like it’s in the right direction to me.
On a more technical level, the whole system is built around the idea of self-authentication, the key pillars of which are:
The three components that enable self-authentication are cryptographic identifiers, content-addressed data, and verifiable computation.
With the pre-amble out of the way, I moved on to the protocol, or to be more precise, the collection of protocols. There’s an overview that lists the various relevant documents and various guides that look at concepts in more depth. I spent what was probably about an hour reading through everything.
My first impressions:
- It’s quite short
- Very easy to read, it’s not a bullet point heavy W3C hellspec
- Quite a lot of new concepts and entities but they are very clear and differentiated
- Initially I was a bit put off by how many documents there were, but actually the way things are divided up makes sense
- Feels like it’s been well thought through
- Entities are loosely coupled to avoid lock-in
- Lots of different types of ids, but users mostly probably won’t need to interact with these
- Compared to the others I’ve read, it feels the most professional and well put together
- I like that you can easily drop down into the technical detail and see how things are strung together
As I read through these docs, I found myself nodding my head quite a bit, and was pleasantly surprised by some of the elegant design. Whereas some of the other protocols in this space feel a bit disorganised, convoluted and like they were mostly designed on paper napkins, Bluesky feels like a design that is more towards the Cisco side of the technical design spectrum. I am overstating things here somewhat. The other protocols aren’t paper napkin protocols and the Bluesky AT protocol isn’t a Cisco concoction. Neither of those characterisations would be desirable for social media. But broadly that’s the sense I get.
I like it. I like it quite a lot. I can envisage it being very cool. I can imagine many interesting tools and services being built on it. It could be amazing. Having said that, I can also see possible dangers. There are a lot of new things introduced, and it might take a while to really iron out the wrinkles.
We will have to remain vigilant to be sure we haven’t done something dumb. How these protocols get used in practice might be unexpected. I think it will be important to have a diversity of protocols going forward. Keep using and improving the simpler protocols ‘just in case’. Remembering that it took close to 10 years to figure out that entirely centralised systems weren’t desirable. It could take the same amount of time or longer to really get to grips with modern decentralised social media.
I’m looking forward to being able to build and participate.