Lots of people keep trying but they have a ton of problems.
I have done a lot of research and thought about this quite a bit.
* For a long time P2P automatically meant crypto. I'd rather Google use my data to get richer than Bitcoin bros waste electricity to do the same.
* Many were laboring under the delusion that self hosting is a sane idea. Anyone who's ever self hosted anything knows it takes actual effort and sometimes money, and probably won't be as reliable as Facebook.
* Protocols that are immutable-first are bad. You should at least be able to try to delete your old embarrassing posts.
* Normal people do everything on mobile. It's just so much better of an experience than any desktop OS. Add a keyboard and Android is the perfect device for basic stuff. P2P devs don't usually support mobile.
* Bandwidth is a thing. IPFS still uses too much of it. Helium used way too much last I checked. Disk wear and CPU is also a thing.
* Centralized servers are really good for performance. I think that an ideal platform probably wouldn't use any kind of DHT or anything, it would use a combination of local discovery, and semitrusted servers that are separate from your actual identity.
* Federation as seen today isn't that meaningful in practice. If my identity is tied to a server, there's only one server I'm going to consider choosing. The biggest most popular one that might stay around the longest. Might as well just do centralized FOSS at that point.
* You need a killer app to make normal people who aren't in it for political reasons use your thing. If you don't have that, your app will become KaczynskiNet, and I'll just ignore it, because... nobody I know will want it and I probably won't be able to convince them. Free speech is a good thing, and the "controversial" platforms might have a valid place.... but I'm not going to spend much time on platforms almost entirely full of communities I'm not part of and don't agree with, there's not enough hours in the day for that.
* Endless scrolling is evil and sent to instantly kill any idea of persistent communication. It does not belong anywhere but a news feed. Even pagination isn't ideal, we should probably be using time-based "Next N records after $date" pagination.
* I believe it also may subtly cause low grade anxiety by removing reference points and causing content pages to feel like they could change at any moment
* The current social media model developed around centralized servers. Things might have to change a bit.
* Heirarchal nested threads do not mirror real life conversations, and complicate the UI a lot, and make it easy to miss stuff if you aren't familiar with how stuff works.
The protocols involved are Not That Hard. It's been done several times, just never polished. Retroshare, BitTorrent, SyncThing, Jami, and Dat between them probably have 100% of the technology needed to make it work.
Possible solutions for a semi-decentralized model preserving some of the advantages of decentralized:
* Private Key based identity, no unique human-meaningful names at the protocol level. Just use some other platform to actually find your friends instead of trying to replace the whole internet.
* Your data is on your device, and on any server you are registered with and set up sync with. They can be free or paid, not the.protocols problem.
* Actually finding where to look for your friends stuff is not the protocols problem. You have LAN discovery, you can manually enter a server, and the clients know to try the common servers. Add whatever name servers or DHT extensions you want to that.
* Discussion threads could just be best-effort sync. Maybe you don't see every message if the network was partitioned but you probably will eventually.
* Threads could be "Hosted" at all servers that a user who made them is registered with.
* Messages contain lists of what other servers you are registered at, and you get a certificate from all of them proving it.
* That means the client can always find your other stuff somewhere else even if one server goes down.
* You can always choose to mirror a thread on all your own devices and servers for archival, and make it visible on your profile, it stays in sync, or you can freeze it so it doesn't, or you can copy it to a brand new thread.
* Posts are editable and deletable.
* Tombstone problem solution: Content is truly gone if you know the full list of servers a user is synced with, all those servers are up to date with their device, and none of them have it.
* You can make a thread that requires membership at a specific server to post at, for spam restrictions.
* There are no categories. You just share your thread to other threads.