July 2023 update
Published on July 5, 2023 by Andre Staltz
The world of social media and social networking is still very much unstable, with the decline of Twitter, the rise of Bluesky / Nostr / Mastodon, and the uncertainty involving Instagram's Twitterlike project. What we're building here is still relevant, and people are looking for alternatives. I want to bring to the table something that can be both reliable and novel. SSB has certainly influenced the scene, but it's becoming outdated and we need to learn from its mistakes and redesign.
So, another month, another email full of news about the project, including Manyverse the app itself. This time there is a small Manyverse release with a bug fix done by Andrew Chou. Version 0.2307.3 contains:
- ✅ Bug fix: use dynamic port for blobs
Make sure to update! Now, about our new protocol PPPPP, we have news about the server infrastructure ("hubs") and invite codes.
In the previous email, I described how hubs are servers that will resemble SSB rooms: they allow connecting clients to connect to each other. I'm happy to inform that the proof of concept code is built, and it's working! The code is at ppppp-hub. I also had to build other libraries to support running the Hub, such as:
There are still some other functionality to be built into the Hub, but the proof of concept so far allows one client to create an invite, share it with another client, and then this other client can join the hub. Let's talk about invites now.
SSB doesn't have a user-to-user invite system, it has invites for pub servers and for room servers. But ideally what you want is something simpler to understand: a person inviting their friend to join the network. SSB would get a new invite system called peer invites, but it had issues and was never adopted in the ecosystem. We briefly experimented with room aliases as a way of bringing onboarding people, but it also had issues.
With that history in mind, and with the UX design work that Nicholas Frota put into user friendly invites, we know what we want. Here are some basic requirements for our invite system:
- Invites are issued by end users
- Invites support either onboarding a friend to your network or onboarding a new app to your account, or other future use cases
- Invites can trigger several actions, upon acceptance
- Invites are authorized by the end user who created them, from any device in their account
- Invites are represented as hub-independent URIs or hub-dependent URLs
In summary, here is how the invite system works to satisfy those requirements: the end user creates a local token containing some actions (such as befriending, or granting access to your account, or joining a hub), and the token plus these actions are encoded in a URI. The URI format is flexible and composable, so there can be many variants of invites with different actions. The URI is shared with a friend or a new app joining your account, and the invite itself contains instructions on how it can be claimed. Once claimed, the pre-determined actions are executed, the token is deleted and cannot be used again.
The full details for this system is explained in this GitHub discussion, and the essentials are implemented in the following repos:
It's exciting to see all these pieces working together! I was able to set up a hub server, and then one client creates an invite, while another client claims that invite and ends up gaining membership in the hub.
What's particularly important is how this will allow logging in with various apps into your account. SSB has had a pretty fragile story involving multiple apps and multiple devices, and PPPPP is aiming at elegantly solving both. In SSB, multiple apps with the same account was only a reality as long as these apps shared the same database. This is basically only possible on desktop, because mobile operating systems restrict how apps can use common data. But it still wasn't ideal on desktop either, because apps interfered with each other via common database indexes. In PPPPP, each app will have their own database, but they can easily connect to each other via this invite system. The multi-device story on SSB is also bad: there is no automatic way of linking your device keypairs, and if you share keypairs across devices you risk forking your feed. On PPPPP, there is no risk of forking your feed because we use tangles, but even better, there is no need to share the same keypair, because with identity tangles we can link your keypairs together, and this is done via invites too. Once a new device accepts an invite to join your account, the new device's keypair is added to your identity tangle.
I'm very happy with how this is progressing, take a look at our updated roadmap:
One more time, thank you!