Update
While not everything is figured out regarding the new msg format with identity tangles, I took a break from that because it seems to be validated enough. No need to go deep and polish at this point.
I moved my attention to the network topology and onboarding. This means: how are peers born and how do they discover each other over the internet or locally. Something something servers.
I want to build on lessons learned (good decisions and bad decisions) from easy-ssb-pub, ssb-room, and rooms 2.0 SIP7.
Goals:
- Invite-only onboarding, no way of entering the network otherwise
- No singletons (no hard-coded servers, no distributed hash table) same as SSB
- As easy as possible UX without hurting security
- Support both: invite my friend to the network, and "open my account on this new app"
- Support new app on either desktop native app, phone native app, or browser
Initial design is to do "Rooms 2.0" except removing aliases and the open mode. I'm calling it "hubs".
Here are a few questions that I'm pondering:
- Should we have a firewall (and exceptions management) or not?
- Maybe not?
- Are hubs open for anyone to join?
- Maybe not?
- Do you have to join a hub separately from "accepting a friends' invite"?
- Should not
- Once a user is in a hub, how do they discover more hubs (to create resilience)?
- Once a user is in a hub, do they connect to all peers in the hub, or just to friends?
- Connect to anyone in the hub
- In SSB we connect to all peers within our hops, but in PPPP we have no hops
The invite-a-friend flow is the easiest and I think I have it well covered. The problem is the sign-in-to-new-app flow, where I've been pondering how to: (1) ask for a subset of permissions, (2) how your two devices will discover each other. See diagram below
"Pairing" via sound, e.g. ggwave would be super interesting, and would work in all cases, but I still have some hesitations about using something so esoteric like that. There Should Be Some Simpler Way.