Open Collective
Open Collective
May 2023 update
Published on May 5, 2023 by Andre Staltz

Hey backers,

Let's look at the progress I've made last month on PPPPP (placeholder name for the upcoming new protocol, successor to SSB). There are no Manyverse app updates this time, but we might get back to bug fixes and improvements in the coming months.

Feed format

In the previous update, I was reporting on proof of concepts, but now I have something that is closer to a final version. I wanted to get the feed format in a stable shape before moving on to other parts, and I'm happy to share with you the result.

Here's what a message will look like in PPPPP:

  "content": {
    "text": "Ola mundo!"
  "metadata": {
    "hash": "XuZEzH1Dhy1yuRMcviBBcN",
    "size": 21,
    "tangles": {
      "3F26EgnwbMHm1EEeeVM1Eb": {
        "depth": 2,
        "prev": [
    "type": "post",
    "v": 1,
    "who": "4mjQ5aJu378cEu6TksRG3uXAiKFiwGjYQtWAjfVjDAJW"
  "sig": "3RAjp5Xn413kXNX9PQ7a2geTX83NK6k7QyydiezHFt1Hcjq

It's JSON, not a binary format. As it turns out, JSON is pretty great. It is supported in all programming languages, it is easy for humans to read, and easy for computers to parse. Parsing and serialization performance in JavaScript engines is amazing, it's actually hard to compete with that using binary formats.

A message has 3 parts: content, metadata, and sig ("signature"). The content is deletable, which allows for deletes in the network, something that SSB has always wanted. A lot of thought was put into the metadata, which holds essential cryptographic and attestation information that supports replication, validation, and other features.

Like teased in the previous newsletter, this is a "tangle feed format", meaning that messages form a directed acyclic graph (DAG).

Let's compare that with SSB's classic feed format:
  • SSB: linear sequence of messages, PPPPP: DAG of messages
  • SSB: content is not deletable, PPPPP: content is deletable
  • SSB: signature is on the whole message, PPPPP: signature is on metadata
  • SSB: JSON serialization follows ECMA-262 stringify, PPPPP: JSON serialization orders keys alphabetically
  • SSB: base64 encoding of identifiers, PPPPP: base58
  • SSB: sha256 as hash function, PPPPP: blake3
  • SSB: all message types in one feed, PPPPP: different message types in different feeds, all signed by the same keypair
  • SSB: timestamps are part of metadata, PPPPP: timestamps are part of content

As you can see, the list keeps on going. I would say in spirit it follows the same principles as SSB, but we've learned a lot since then, inspired by other feed format designs, such as bamboo, bendybutt, buttwoo, minibutt. I think this one a good balance between simplicity and future-proofing, and will serve as a strong foundation!

This is all still open to feedback, though. Let me know what you think!

First repos

As we're leaving the proof of concept phase, I've started to create the first repos for PPPPP. The code here is good enough that it could be put into production, but the goal for now is to just be a foundation for the next components of the protocols.

These repos also contain some "protospecs", which are simple documents that serve as a specification for the protocol. They are not final, they're just notes for now, but help folks understand the protocols.


Taking a zoom out, here's where we are in the roadmap for PPPPP to be validated:

Green means "validated" and yellow means "currently being validated". Notice that things are starting to look ready in the realm of feed formats, database, and replication. That's good, those are the very core foundation of the protocol.

Up next, I need to take a look at secret-handshake and overall networking and connectivity. In PPPPP, you should be able to safely use the same keypair ("identity") across many devices. However, what happens if two of your devices use the same keypair when connecting to each other? Secret Handshake doesn't currently allow that, so I need to figure out how to make it work.

Another realm to explore is "garbage collection", where PPPPP will take an active role at deleting old messages, at a rate that is proportional fetching new messages. This is vital to keep storage usage stable.

PPPPP in a world of Bluesky and Nostr

Let's be frank, we're building decentralized social systems, and if you've been following this space recently, you probably know about Bluesky or Nostr. In particular, Bluesky in particular has been getting a lot of attention, and I think it's important to know what goals PPPPP is trying to achieve versus what goals Bluesky or Nostr are trying to achieve.

SSB is not a very good replacement for Twitter, and neither will PPPPP be. On the other hand, it seems like Bluesky and Nostr are obvious Twitter alternatives. So why are we building PPPPP? What is the point?

One thing is social media, a place where anyone can join any conversation (this is a feature as much as it's a bug!), a place where you talk at people and build reputation or viral content, and a dangerous place that puts people at risk of seeing offensive content or direct harassment.

Another thing are social networks, a place where only people who know each other participate in conversations (this is a feature as much as it's a bug!), a place where you talk to people and build relationships, and a relatively safe place defined by people you know and acquaintances.

I've been following how Bluesky is evolving, and while technically impressive, built a brilliant team who is closely familiar with SSB, I am not excited by the prospect of decentralized social media. They are having to hire content reviewers, do a lot of centralized moderation, and both Nostr and Bluesky are easily flooded by a wall of unsolicited nudes. This is an inherit property of social media, be it centralized or decentralized.

I think we've seen enough social media, and there is still a strong need for a slower paced, more intimate, and safer place to be online. Like SSB, PPPPP is suited for that kind of thing, and we're building it with such principles and goals in mind.

Thanks for reading and for supporting!

ā€“ @andrestaltz