this post was submitted on 27 Aug 2023
282 points (97.6% liked)

Rust

6005 readers
5 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[โ€“] kevincox@lemmy.ml 2 points 1 year ago (1 children)

claim that it is decentralized

Yeah, the truth is a bit more complicated.

  1. Some objects not not decentralized. For example users are only federated. (there are some ideas brewing to improve this but right now they are not).
  2. It is decentralized between "homeservers" (sort of like instances) not end users. But this is really just an optimization and good for privacy. They do have prototypes of running a homeserver on your phone along with the client. So most clients only talk to their homeserver. But your instance works with federated and decentralized objects (depending on the type of object).

But I think the key thing here is that rooms are decentralized and can survive sever losses. If I create a room on matrix.org and matrix.org disappears it can still be fully used by other servers. (As long as at least one other server was participating when matrix.org went offline, much like you need 1 seeder to keep a torrent alive.) Of course if all admins were accounts on matrix.org then the room will no longer have any admins, so it may be crippled, but if there were admins on multiple servers then the room can effectively live forever and survive any number of homeserver losses.

This is very different from federated protocols like ActivityPub as you can probably tell where the death of an instance will kill any communities on it.

And that's certainly something I'm worried about. If the admin of programming-dev gets tired of running the instance, it could just disappear.

And I'm happy with using servers as an optimization, but IMO it should always allow users to host at least a portion of it themselves without a server. As in, everybody becomes a seeder. That way, if an instance gets hammered with a DDOS or something, the network can still survive by routing around it.