ssbc / rooms2 Goto Github PK
View Code? Open in Web Editor NEWDesign doc for the next edition of SSB Room servers
Home Page: https://ssbc.github.io/rooms2
Design doc for the next edition of SSB Room servers
Home Page: https://ssbc.github.io/rooms2
While I like the look of https://${alias}.${roomHost}
very much, I'd prefer https://${roomHost}/${alias}
for practical reasons.
The subdomain approach requires a wildcard certificate setup. For LetsEncrypt that means DNS-based challenge-response setup which is quite a bit more hassle to deal with (changing the TXT record of the domain). With the cert validity time-frame getting smaller over time this will basically require an integrated registrar with API support or admins will need to update it by hand every other week at some point.
With #22 merged it could be cool to have the current release as a github pages thing and not only a downloadable release maybe?
@cryptix You mentioned that we could/should have APIs like rpc.room2.registerAlias
. Currently this document specifies them as rpc.room.registerAlias
, because rpc.room
is not a namespace used anywhere so far. Instead, we have APIs under rpc.tunnel
such as rpc.tunnel.isRoom
and rpc.tunnel.announce
.
We could adopt rpc.room2
, but that leaves the space open for someone to use rpc.room
, which could be confusing if the 3rd edition of rooms chooses to use rpc.room
(because we'd have v1 using rpc.tunnel
, v2 using rpc.room2
and v3 using rpc.room
), so I'm kind of preferring to use rpc.room
for v2, and otherwise referring to "rooms 2.0" only in spoken and informal situations.
What are your thoughts?
Continuing the conversation from arj03/ssb-browser-demo#186
This was actually a very interesting case. It surfaced a bunch of assumptions about how SSB works with random connections both before and going forward. The sum up: this is by design in EBT, and rooms 2.0 will have the same model of tunneled authentication requires mutual follows. The really important thing here is to make that clear to the user I think. That would solve a lot of problems. It is actually a "hack" that it works right now for non-EBT transfers and we might tighten that up in the future so you can't do that.
Originally posted by @arj03 in arj03/ssb-browser-demo#186 (comment)
Hm. That's...troubling. That means that, for onboarding new users to SSB, rooms can never truly obsolete pubs. Otherwise it's forcibly invite-only and can never be made accessible to the general public. And there would be no way for potential users to look at the content posted to SSB to decide if it was worth joining.
The same would even be true for folks who had to reintegrate with the network after something like forking their feed. Unless they had an outside-of-SSB channel for communicating with someone that they should follow them, they'd be locked out. Which means that SSB can't realistically run in a vacuum like it otherwise could.
It seems like a very strange decision for something that's otherwise very well-designed for the free and open flow of information.
Originally posted by @KyleMaas in arj03/ssb-browser-demo#186 (comment)
Thinking about this more, requiring mutual follow also breaks the use case of a person travelling off the grid and getting updates from anyone and everyone they come in contact with. The ability to support spurious ephemeral connectivity is a huge plus for SSB - otherwise, there's far less reason to do chained message signing (instead of an independent per-message signature), since you have to establish a "trust" relationship with anyone you want to get messages from anyway.
Originally posted by @KyleMaas in arj03/ssb-browser-demo#186 (comment)
I think it would be best to have this discussion in the rooms2 repo. I'm sure Henry and André have input on this.
Originally posted by @arj03 in arj03/ssb-browser-demo#186 (comment)
The gist of this is: SSB is designed for off-grid use with only occasional contact with the outside world. By requiring mutual follow to replicate anything, it means that there is no such thing as a spurious read-only contact when coming off-grid. It means you can only contact the network through people you have a trust relationship with. This may be fine under normal circumstances but breaks down in several possible scenarios:
This also means that rooms cannot truly replace pubs. There will always need to be pubs to onboard new users or people who have had to replace their feed. And these will continue to have a tendency to quickly become massive messes just like open-invite pubs with tons of follows do now. But with a mutual follow requirement, they stay the same "evil" but become even more "necessary".
In short, a "follow" is an implied trust relationship. You trust the other person to not shovel garbage into your database. I see the requirement to establish a mutual trust relationship with a stranger to be able to view publicly-posted messages to be a huge step backward. Why should they have to trust me for me to be able to read? I'm hoping maybe this can start a dialog on how to support these use cases, because I would really hate to lose the ability to safely replicate off-grid from strangers.
alice.scuttlebutt.eu
not @[email protected]
this is probably a silly question, but wanted to ask in case it wasn't considered.
would it be sensible to use something like STUN/TURN for the tunneling parts of ssb-room? eg. https://github.com/coturn/coturn
failing that, perhaps building on something like https://github.com/sockethub/sockethub
are there other requirements, such as that the tunnel must be able to run from within an ssb-pub process?
Internal users need to perform actions such as register alias, revoke alias, resolve other aliases, create invites, and moderators need to perform actions too, such as block some IDs, remove aliases, etc.
For each of those actions, there would be a new dedicated muxrpc API.
secret
would still need to be backed-up in a separate mode (this is true for all these solutions listed in this issue)This isn't about the content but the presentation. I find it really distracting that the links can't be clicked leading to a lot of scrolling or fulltext search. Additionally a table of contents and proper document outline would be very helpful since it's a lot of small sections.
@staltz what do you currently use to turn it into PDF? The tools
folder only turns it into one giant markdown document AFAICT.
Should the room have an SSB feed where it posts one message for each action performed on the room (e.g. via web dashboard)? This would allow easy backups/restore as well as allow easy audit of what was done.
In general the document is saying "mutual follows are required to build a tunnel" but the document is scarce on how this will work for new guests/people consuming invites.
While the consuming side can follow the creators public key since it's on the tunnel address, it's currently not specified how this will happen for the creator.
So in general we need some mechanism so that the the consumer can tell the room their public key and then the room needs to notify the creator that the invite was consumed (and that new public key they need to follow/allow).
Two solutions come to mind with varying tradeoffs:
Have the creator check the room for consumed invites.
Either via polling some HTTP endpoint or via some muxrpc source to be a bit more event driven.
This might be a bit quirky or delay intensive. The client would need to remember some state for resumption. Sounds a lot like a log/feed.
Have the room send a SSB direct message to the creator.
Easy resumption and even transport the notification across different routes, not just between room to creator.
Downside: the room would publish stuff just for this one case(?) and not as ephemeral (with the current ssb feed format at least).
https://github.com/ssb-ngi-pointer/rooms2/blob/main/docs/Stakeholders/Internal%20user.md links to Joining.md which is an invalid link
See cel's thread on SSB
Probably need it for:
Probably don't need it for:
See the discussion at https://gitlab.com/staltz/manyverse/-/issues/1087#note_479441556
JSON POST request to inform the SSB ID? (And response is a multiserver address?)
Or muxrpc:
The web endpoint schema only defines the happy route but not what to do when an error happens (i.e. alias undefined).
Maybe we could require a status string
as well which should be successful
for known aliases and if it's not there can be an error string
as well on the object.
The doc for the moderator dashboard says that moderators can
https://github.com/ssb-ngi-pointer/rooms2/blob/main/docs/Room/Moderator%20dashboard.md
Change the privacy mode of the room
This seems like a very powerful action, as it could completely change the meaning of what the room is for all of the users that had previously signed up. Maybe more appropriate for Admin role? (since Admin's hold the keys)
When poking @cryptix regarding vaguely specified behaviour in the spec, he noticed that the described security invite considerations was now inaccurately described, and wanted me to make an issue. Here's the issue!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.