Plebbit is a selfhosted, opensource, nonprofit social media protocol, this project was created due to wanting to give control of communication and data back to the people.
Plebbit only hosts text. Images from google and other sites can be linked/embedded in posts. This fixes the issue of hosting any nefarious content.
it has no central server, database, HTTP endpoint or DNS - it is pure peer to peer. Unlike federated instances, which are regular websites that can get deplatformed at any time,
ENS domain are used to name communities.
Plebbit currently offers different UIs. Old reddit and new reddit, 4chan, and have a Blog. Plebbit intend to have an app, internet archive, wiki and twitter and Lemmy. Choice is important. The backend/communities are shared across clients.
The code is fully open source on
Nothing?
DNS exists to give an authoritative answer for who owns something. I would have a completely different design where nobody owns communities.
Basically, I’d treat communities as topics that live on a DHT as keys, posts would be keys semantically related to the community (e.g. “communities.<community>.posts.<post>”), and so on. Anyone can post to that topic or to any posts or comments related to that topic by creating subkeys, all of which use UUIDs to guarantee uniqueness. All entries in the hash table are signed by the author’s key, and people can create identical entries (i.e. the same key), which can be distinguished by the signature. The signature is important, because we can’t trust timestamps to distinguish between collisions (e.g. someone mimicking someone else’s post id vs someone editing their own post).
Moderation consists of a web of trust system, where users are given weights based on how much you trust them. When deciding whether to display a post, you’ll check the moderation of that post by people you trust, and show/hide it accordingly. The same goes for votes, you could disregard votes from users you consider spammers/trolls. Building that moderation graph is largely automatic, if you vote or moderate similarly to someone else, you start to trust them more, and their weight in your graph increases.
In other words, nobody owns communities, so there’s no reason to have DNS, and the main reason to have DNS is for moderation, which becomes moot when moderation is itself distributed.
A domain name system is for naming domains, not moderation. And just use a database instead of reinventing the wheel.
That alternative “show if trusted” approach would be nice in an ideal world where everyone already has a perfect filter bubble with only their perfect friends. But unfortunately the world isn’t like that.
You gotta learn to walk before you can run
Right, plebbit seems to use ENS to connect a name to a place. If the name doesn’t point to a place but instead a distributed collection of posts, you don’t need a domain name system.
A DHT is a distributed key value database. I’m modeling everything in terms of structured keys using existing data structures.
Moderation is the hardest nut here to crack, and that’s pretty much the entire point of this experiment: can I build a distributed trust system? I’ve read a few papers on approaches that could work, and this transitive trust system should do okay. The idea is that I trust user A by X%, A trusts B by Y%, so I should trust B by something less than both X% and Y%. To get a decent result, I need enough data to make it work well, but not so much that computation is slow.
I think it’s feasible. If it works, we don’t need centralized moderation, which solves a ton of problems in current social media networks.
Note: we don’t have centralized moderation here either. We’re talking in two completely different instances. Just like plebbit would have
It’s still centralized in the sense that there are specific individuals who have moderation power. If you think of each instance as a separate thing altogether, it’s the same as Reddit.
I’m on reddthat.com and you’re on sh.itjust.works. These individual instances have their own moderation setups. There’s no central or overarching system here. We’re on two seperate websites. That’s the idea, a bit oversimplified.
But yes, you could go local only, but wouldn’t that kind of defeat the point? I want to be able to switch instances, and talk to friends on other ones. That decentralization brings the huge benefit of not having a u/spez situation
Sure, but something being federated doesn’t make it decentralized, it just makes centralized systems cooperate through established protocols.
This community is on lemmy.world, which neither of us are part of. If the admin of lemmy.world doesn’t like a comment or post, they can delete it. So even though we’re not affiliated with lemmy.world directly, we’re still subject to their rules, because lemmy.world is a centralized service that just happens to share some data with other centralized services. If lemmy.world goes away, so does this community; we’ll still see our respective copies of the data on our instances, but we can no longer see each others’ posts and comments.
The main benefit federation provides is mitigating damage to the service as a whole if a node goes down. It doesn’t protect individual communities at all.
Plebbit is the same as federation, it just cuts the centralization to the community level and distributes load across the network. But it the community owner disables the community, it’s dead.
I prefer that nobody can kill a community. I don’t want to trade one tyrant for a handful of tyrants or even a lot of tyrants, I prefer no tyrants.
You can always zoom in and say “see, this little bit is centralized on it’s own”
Not necessarily.
Is Bittorrent centralized in any way? Once something is seeded by peers, there’s no single authoritative source, and it’s trivial to host new relays (in BitTorrent parlance, either a PEX or Tracker) if some get shut down. You’d have to take a ton down to really impact the Bittorrent network, whereas with Lemmy, you just need to take down one or two instances to cause a mass exodus. With Plebbit, that number is probably a bit higher, but a dozen or so of the most popular communities is probably enough to impact nearly everyone. Likewise, infiltrating (i.e. court gag orders) would be incredibly effective on Lemmy and perhaps Plebbit, but fairly useless on BitTorrent without added technical measures (e.g. seeding something with an exploit).
The gold standard IMO for free speech is complete decentralization with local moderation.
No, it does not “seem”, it explicitly states.
A hash table is a way of storing data, I suppose you could call it a very primitive database. But that’s not the common usage of the word database. Hash tables are used in database indexes, hence why I called it “reinventing the wheel”.
The naming system is still a central part of any network, even if decentralized in design. So it will need some sort or central moderation.
One issue with ens though, is that the control over it is more centralized than dns. But without regulation, it’s worse than the existing solution.
I haven’t used the service or reviewed the code, I’ve only read the whitepaper and read the website. Early stage projects like this have a habit of stating this things that aren’t yet true, hence the uncertainty.
It sounds like you’re limiting your definition of “database” to relationship databases, there are a lot of other types of databases out there. The most common use case for Redis, for example, is as a key value store, and a hash table would be a perfect way to implement that. I’ve used
redb
in this project, which is a disk based key value database.Sure, but DNS systems are authoritative, meaning there’s only one right answer to a given query. This requires synchronization across the network, which creates a ton of complexity.
If we can avoid that synchronization, the design gets a lot simpler, which makes it more robust. In my design, I’m specifically avoiding mandatory deletes and updates, so the only operations my “database” needs to support are creates and reads. Communities are just topics you can post to, and moderation is just client-side filtering. The tricky part is getting the client side filtering good enough to not give spammers and trolls too much visibility.
Some nice parts about this:
Let’s hope it’s not true yet or ever. Did you mean relational? And no, that’s not what I said.
The current dns system works, and has it’s flaws. But ens is not an improvement, it’s worse.
Yes, relational. Stupid auto correct…
And I’m not arguing for or against DNS vs ENS, I’m saying that whole concept is an unnecessary centralization for something that could be implemented without it at all. The only technical reason something like Reddit would need an authoritative answer for name resolution is for moderation (i.e. elevated privileges), so you can verify that you’re getting authoritative moderation.
If you can do distributed moderation, you get a lot of nice flexibility and resiliency. That’s what I’m interested in exploring, and my main criticism of Plebbit. If I take Plebbit to a region that blocks ENS or sending packets to the owner, I can’t use the service, which to me means it’s not truly decentralized. If I take my system there, I can keep using it with locals there provided I find a relay behind that firewall, and I can sync up with my usual peers later. The only hosting needed for my service is a relay to connect nodes, and someone needs to provide storage space on their client. That’s it, and relays are cheap.
Without names you wouldn’t have… names though? We’re still dealing with humans in the end, we like names
There would be names, just no owners of those names. You’d navigate to /c/technology or whatever, there just wouldn’t be anyone who owns or controls that name, it’s just a tag that anyone can post to.
To get the posts for /c/technology, you’d ask your peers, and they’d ask their peers until someone provides that data. Your client would then aggregate all of the responses, filter them through local moderation, and then display the feed.