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.
ENS domain are used to name communities.
Plebbit currently offers different UIs. Old reddit and new reddit, 4chanw, andhave 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 moment I read “no transaction fees”, I immediately wondered why that would be listed as a feature. Turns out it’s because it uses crypto, though I don’t understand why. Free domain names?
It doesn’t need crypto, it only needs IPFS (but we could change underlying protocol in the future, if someone creates a better alternative to IPFS).
“no transaction fees” is listed as a feature because blockchain-based social media exists, and unlike them a plebbit full node doesn’t have to sync (because it’s a IPFS node), it just runs immediately like a BitTorrent node would, and it runs on 4GB of RAM even on a raspberry pi, on consumer internet (consumes less bandwidth than YouTube) and it only uses a few GBs of storage. Blockchain social media fundamentally cannot scale because of node requirements, that is if you want the platform to be “decentralized” (enough full nodes).
We do have crypto features, as an addendum. Mainly, we use crypto domains such as .eth (ens.domains) end .sol (sns.id) to resolve plebbit author/community addresses to readable names, because they are IPNS public keys (very long and impossible to memorize, e.g.
12D3KooWMLCgrZT8Ucaw2DWnv1HsQianf9tVi8sK6JCbCod3XK8T
). Unlike DNS, crypto domains are censorship resistant. They are cryptographic property, you hold them in your wallet, which means if you change the address of your plebbit community to one such domain, you are tokenizing your community. In theory, the more users your community has, the more people have saved your domain, the higher its value. Compare that to Reddit for example, where all subreddits are owned by Reddit, they can ban your community with millions of subs, because it’s not your property, it’s theirs.so you host individual communities instead of servers on lemmy?
In theory, the more users your community has, thw more people have saved your domain, the higher its value
Why would i want a community to have value? and how would people saving something make it more valuable? What Theory?
“In theory” is not used to refer to a specific existing named theory
Get out of here with the crypto nonsense, we dont need more tech bro spaces for people to talk about AI automation and why the grind is more important than workers rights.
What’s wrong with Crypto ? It’s an interesting technology, unlike you
what? No crypto / ai is mentioned here?
ENS domains ?
I have just timed and 60 seconds wait time is atrocious for 8 text posts.
IPFS is nice but it doesn’t make sense for things that are under few of mb
IPFS has been breaking for a few years, it’s just slowly degrading, trying to staple something like this on top of it will just drag the DHT to a standstill.
There’s an XKCD for that, although i do think ActivityPub could be improved.
It’s not a competing standard, it’s a whole new approach to decentralize forum-based social media.
ActivityPub is not fully decentralized, it’s a federated design, meaning it’s a network of instances, and each instance is just a regular website with servers. Anyone can run an instance, but it’s expensive, tiresome and you’ll get banned for it; they are regular websites.
whereas Plebbit is fully decentralized, it’s purely peer to peer, meaning it’s a network of peers where every peer can potentially be a full node by simply using the desktop app (or in the future, a non custodial public rpc on mobile), and you don’t have to run any site/domain for it, it’s censorship resistant just like running a torrent with a BitTorrent client.
Also to be clear: like ActivityPub is a protocol with clients, such as Mastodon and Lemmy, Plebbit is a protocol with clients, such as Seedit and Plebchan.
Reading these comments about your work must be so hard. I remember getting this kind of feedback for my projects from know-it-alls who never completed anything themselves. Keep up the good work, decentralize everything!
So technically Plebbit is distributed then ?
Yes. Reddit is A, ActivityPub (Lemmy, Mastodon) is B, Plebbit (Seedit, Plebchan) is C:
How does it compare against let’s say Steemit ?
Steemit is A, it’s a regularly centralized website with global admins, claiming to be “decentralized” simply because it’s built on a blockchain. Whenever you are asking yourself whether something is “decentralized” or not, ask “how can I run a full node”? “What are the hardware requirements”? Steemit admins won’t answer those questions. Whereas you can easily spin up your own ActivityPub (Mastodon or Lemmy) instance (even though those instances work like regularly centralized websites, at least you have the option to run your own).
On Plebbit, just using the desktop app of a client (like Seedit’s desktop app you can download here means you are running a full node already. The app runs an IPFS node in the background, seeding all content you browse automatically, thereby improving the speed of the network for everybody else. The more nodes there are, the more decentralized the network is, so if all users can easily run a node and are incentivized to do so, then the network is properly decentralized/distributed. On Seedit, you can’t run a community if you don’t run a full node (the community is the node, acting like a server, and users connect to it P2P). There are no global admins.
deleted by creator
Well if you see ActivityPub as the standard way of using decentralized social media…
deleted by creator
smells like mastodon, only with worse content searching, worse scalability, worse moderation and less content reliability.
awesome.
worse content searching
It’s pure p2p so it can’t have content searching straight out of the box, but it can easily have indexes like 4chan archivers to search in known subplebbits. It’s entirely possible to crawl all active subplebbits and archive them all in a central database, and use that for search. This will happen, and plebbit clients will probably implement multiple such archivers to run search in them. And search engines will be able to index.
worse scalability
It’s orders of magnitude better scalability than regular sites such as federated instances. Because it works like torrents, except you always seed, so plebbit nodes will inevitably improve the network speed more and more as more nodes join. And running a node works on a rasp pi. And all content is just text (including links from which media is embedded by the clients), so there’s no scalability issue relatively to storage, either.
worse moderation
It has way better moderation, because it’s just like reddit in that every community moderates itself, except there’s no global admins able to censor a community/node or impose global rules. Plebbit clients are simply static HTML tools to browse the p2p network to connect to each community directly. Every community is incentivized to moderate itself effectively, or they become unusable, and to enter the homepages of the clients they must get voted for by holders of the plebbit token, via a gasless governance system using pubsub it’s this page, you’ll be able to vote for communities, i.e. downvote communities that aren’t well moderated to remove them from the homepage for everyone). Right now, this homepage default list is centrally controlled by the developers, it’s the only remaining centralized part of the project.
deleted by creator
the comic itself is stupid
The comic isn’t so much a criticism as it is a comedic observation of what happens in the real world.
At least that’s how I interpret it.
Great work! I’ve always considered lemmy to be an interim solution as it doesn’t resolve the core issue of mod centralization. How does your solution
differcompare to something like nostr, which is more decentralized than ActivityPub, and not P2P, but also seems to eliminate the mod issue and enable “direct” subscribing to users.Would your goal be to shard/raid data across IPFS nodes at scale? If not, what would the local nodes size be with millions of users and years of history (e.g. Reddit’s scale)?
My next hope is a fully decentralized and distributed internet archive + piratebay using IPFS over I2P.
Plebbit differs from Nostr in that Nostr is federated (using instances), whereas Plebbit is P2P (fully decentralized). Plebbit uses IPFS, which is more similar to BitTorrent, which is pure P2P as well.
The issue with federations is that their instances are not easy to set up, most users don’t have an incentive to do so, and even if they did, they are not censorship resistant at all, because they work like regularly centralized websites. Your Nostr/Lemmy/Mastodon instance can get DDOS’d, deplatformed by the SSL certificate provider, deplatformed by the datacenter, deplatformed by the domain name registrar. The instance admin can get personally doxxed and harassed, they can get personally sued for hosting something a user posted, etc. And instances can block each other.
Whereas running a node on Plebbit is as easy as opening up one of its desktop clients, which automatically run the custom IPFS node in the background, and seed all the protocol data automatically (similarly to how a BitTorrent client seeds torrents). It runs on a raspberry pi, on 4GB of RAM and consumer internet. It scales like torrents, i.e. the more users connect p2p, the faster the network gets. And most importantly, nobody can stop you or block you from connecting to another user, because there’s nobody in between. This means nobody can stop you from connecting to a subplebbit (subreddit clone). If you run your own community, you’re always reachable by any user on plebbit.
Reading the white paper you find the “serverless” has servers. Each community needs to be always online to serve captchas to posters. The system is federated on community level, instead of instance level, and uses DHT instead of DNS.
Nostr is not really federated because the servers just send data for you. Nobody calls the internet federated because the switches transfer your data
Nobody calls the internet federated because the switches transfer your data
Actually, a lot of people refer to the internet as federated, because most all of it is very decentralized, and independently managed.
Take IP routes… The BGP table is a giant exercise in federation. Any transit provide can blackhole your traffic, or just refuse to accept the announcements (ie, a lot of places reject North Korean BGP announcements, for example).
DNS is another example of a federated system, a number of countries operate the root servers, who merely hold pointers to where to get answers for a TLD, which in turns just provides answers on who can provide answers for a domain.
You can even create your own TLDs, and use them!
Its a giant, federated system. The apps sitting on top of it are not so much anymore.
How does one create their own TLDs ? Do you have any guides or example videos on it ?
Technically all you need is a DNS server.
No computer knows where <whatever.tld> is located, unless that route is hard-coded in a host file somewhere. It always has to ask a DNS server for that information. If that DNS server doesn’t know, it will probably try asking some other DNS server, and so on up a chain. Eventually, it reaches a master DNS server that either has the answer on-hand somewhere in a database, or it says, “lmao, that doesn’t exist”. All the DNS servers and your PC down the chain take that answer. They might memorize it for a little while and hand it out to anyone who asks them, but after a while they’ll ask their way up the chain again to see if the answer has changed since the last time they asked.
In order to “create” a TLD, all you have to do is make a DNS server that doesn’t ask up the chain. Just pre-program the list of valid domains yourself. You can make them anything you want. You can even “steal” existing domains and make them point to anywhere you want. Nothing is stopping you. Your DNS server will confidently report its pre-programmed answers to anyone who asks.
The catch is that any Internet-enabled device that you want to be able to use your fancy new custom domains needs to be configured to ask your DNS server in particular. People would have to manually set your DNS server as their master server to ask, or they’d have to set it to ask some other DNS server that is itself pointed through some chain up to your DNS server. This is an explicitly opt-in system, and getting a significant mass of people to do that voluntarily is practically impossible. But it’s not technically impossible.
The only reason you don’t have to do this manually with every single device you buy is because most devices either come from the manufacturer with a hard-coded list of DNS servers they should trust by default, or a device on the local network whispers in their ear and tells them who the local DNS server is and the device just goes along with it. It’s still technically an opt-in system; devices are simply either already “pre-opted in”, or there’s a system running on your network that auto-opts-in every device that connects, and most devices are designed to accept that auto-opt-in the moment they detect it.
Provided you manage to get the devices you want to listen to your DNS server, you may additionally want to set up a root certificate authority. The thing that makes the little padlock show up in your browser URL box to let you know the connection is secure. Kind of like the DNS server thing, this is also very simple–just run a cheeky little OpenSSL command or two and you can be a root CA in no time–but it suffers from the same “opt-in” problem. You have to manually configure any device you want to use your system to trust your certificates. Most devices just come with a list of “acceptable authorities” built-in, and those defaults are all most people are using. But nothing is stopping you from adding anything you want to that list at any time. You’re just limited to doing it on a device-by-device basis.
At my company, we’ve set up our own custom DNS server and our own root CA. We serve internal websites at a custom TLD we made up, and we sign them with our custom certificates to keep the connections secure. But that only works because we’ve manually configured our workstations to ask our internal DNS server for DNS requests, and we’ve manually configured all the workstations to trust our root certificate authority. A random device that connects to our network that isn’t configured with either of those things will not resolve any of our custom domains, nor will it securely connect to them. It also breaks if the configured devices aren’t on the local company network, since the DNS server isn’t reachable from the public web. Which is fine for us, since those internal websites aren’t reachable on the public web either. But yeah, that’s an example of the limitations.
If you want to create a TLD that will be auto-accepted by everyone who is already running the default chains of trust (which is probably what most people actually mean when they ask something like this), you have to seek out the big daddy at the root of that chain of trust and ask them to poof your TLD into existence for you. That would be ICANN, and they probably won’t do anything like that without a big fat check and a lot of corporate lobbying.
tl;dr - The tech is built in such a way that nothing is stopping you from making your own toy, and anyone can play with your toy without needing to do much. But if you want your TLD to “just work” for everyone in the world without asking every single one of them to explicitly opt-in, which is probably what you actually want, then no, you basically can’t do that.
If it is selfhosted, and text only, why use IPFS?
Because this way 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, plebbit full nodes are customized IPFS Kubo nodes, and running one is as simple as downloading the Seedit client desktop app (available on github) and keeping it open. It runs the node automatically, and seeds content automatically as you browse it. It runs on a raspberry pi, so we expect to see a lot of plebbit users running their own full node.
How do you share data between nodes in a decentralised manner? IPFS is just a DHT so you can’t communicate solely using it?
we use IPNS for mutable data (like upvote counts, reply counts, etc) https://specs.ipfs.tech/ipns/ipns-record/ and gossipsub for an author node to communicate their publication to a community node https://docs.libp2p.io/concepts/pubsub/overview/
“no no, you download this black box binary and run it all day. Trust me brah”
There’s just so much to unpack
All the code is fully open source on github.com/plebbit
I’m all for decentralized community-based hosting for large media files such as video, but i guess for text/structured databases it wouldn’t work due to synchronisation issues.
Bad idea.
The closest to a good idea IMHO is NOSTR. By the way, there is a standard for moderated communities for it, I don’t know whether anything implements it yet.
In general, not in fact.
Curious, I thought IPFS was completely empty. I have the desktop client and there’s just nothing
Text only?
Wait till people start making browser plugins for base64 images.
Links have a character count limit, you can’t link to a base64 image on plebbit.
You wouldn’t need to link base64. Base64 is just ASCII text that would go into the comment. But you can tell a browser or extension that it’s an image and have it decided accordingly. You can see examples of this in the .mht files ie/Firefox makes.
if there is a character limit, you can’t store too much data. You can only store a few pixels in the base64 image string
a 1 pixel base64 gif is around 70 characters
Nifty project. Definitely I could see this being useful for discussing things that would traditionally be censored on other more centralized or semi-decentralized platforms (piracy, anti-authoritarian discussions in an oppressive country, etc).
I gave it a try and the loading times are atrocious, though. I suppose that’s an unfortunate problem with running decentralized.
Definitely I could see this being useful for discussing things that would traditionally be censored on other more centralized or semi-decentralized platforms (piracy, anti-authoritarian discussions in an oppressive country, etc).
IPFS by default isn’t set up to work around censorship or anything of the sort. Protocol Labs (creator/maintainer of IPFS and Filecoin) have always honored copyright takedowns, etc. on their own infrastructure and have done a fair amount of work on content blocking within the default IPFS clients and such.
e.g. https://blog.ipfs.tech/2023-content-blocking-for-the-ipfs-stack
Plebbit Protocol is not lemmy competitor
Maybe leave a link
Apparently https://plebbit.com/
Neat but it loads really slow and there doesn’t seem to be much content beyond bitcoin stuff so far. Maybe if more people join the… mesh?
Seedit looks like reddit to me
Can we get a link ?
https://seedit.app/ is a fully decentralized client for the Plebbit protocol, using a old.reddit UI.
You can also try a demo of a much faster version of Seedit, it works via public RPC: https://plebbit.mooo.com/seedit/#/hot (warning: you’re using someone else’s full node to browse fully P2P, so if you create a community it’s in their node, it’s not yours). This version showcases how you can create a community even on mobile device, running a full node remotely. But we have to build user auth for this, it’s in our roadmap.
I din’t see any benefit over our existing decentralized options. Neat idea though.
The downside is big instances decide which content to show their users. If lemmy.world defederates some instance that’s content I would never know existed.
So… sounds like you need a new instance? One that doesn’t defederate from all the content banned by another instance.
The last time I checked FediVerse is rife with Defederation
And thats a good thing! It’s known as a right to free association. You can choose who you hang out with, and who you do NOT hang out with.
Yeah in other words censorship & echo-chambers When you call yourself a “Platform” you don’t get to “associate”
You can always run your own instance and federate with everyone
Oh boy, you have any idea how costly running an instance is ?
The point is I don’t control what the admins do