croqaz / awesome-decentralized

🕶 Awesome list of distributed, decentralized, p2p apps and tools 👍
809 stars 65 forks source link

Federated vs fully decentralized, protocol vs app #20

Open sdgathman opened 2 years ago

sdgathman commented 2 years ago

I really appreciate this list. Please accept a humble suggestion.

The apps listed implement protocols that are federated (mastodon, matrix/element) or fully decentralized (no servers) like scuttlebutt (will make another issue for this protocol), retroshare, tox (I think - exploring).

There is actually a range, e.g. SMTP (email) can be fully decentralized (https://fedoramagazine.org/decentralize-common-fedora-apps-cjdns/), federated (normal email domains), or centralized (everyone uses gmail which refuses to talk to any other domains).

Would you consider tagging each app with a rough estimate of decentralization - from 5, fully decentralized to 1 (facebook). 3 would be federated (Element). 4 would include Signal (P2P calls and messaging but centralized directory). Or use your own scale. Note that there can be fully decentralized implementations of federated protocols (P2PMatrix), so the decentralization score goes with the app, not the protocol.

Finally, all of the apps implement a protocol. In some cases there is only one fully developed app (e.g. retroshare - but there are alternative implementations). In others, like Matrix, you list only Element - but there are dozens of mature apps that interoperate with Element and also implement the Matrix protocol. There are at least 2 server implementations (synapse, dendrite).

So I could suggest adding Nheko to your list, but it should be somehow grouped with Element as a Matrix client.

It does make sense to emphasize one app for each protocol as the "reference app". Not necessarily the most efficient, but the most feature complete and popular. So Element would represent Matrix as the most popular client.

So that is a lot to ask. Each app listed should include "decentralization score" and protocol. It would be nice to list protocols separately as well. If the protocol is not clearly named, just use the name of the reference app in scare quotes.

sdgathman commented 2 years ago

I think you are using "P2P" to suggest 5 - fully decentralized.

croqaz commented 2 years ago

Hi @sdgathman thank you for your idea! I think it's great, however I won't have time to create and maintain such a list.

This repo is a bit of a mess with all kinds of protocols, ecosystems and apps in one place, but it's intentional because it doesn't require constant maintenance.

Ideally they should be grouped like you say, also by type, maybe GUI apps, CLI apps, mobile apps, web apps, protocols, ecosystems, apps for chat, social apps, decentralized websites, decentralized storage, libraries- in Python, in Node.js, in Rust, in Go, etc. It's really useful and I would like to see it, but it's a lot of work.

If you want to start something like that I will gladly help, maybe the README could be programatically generated from a JSON file that has the name of the project, links and some categories and it could be generated duplicate in the README, eg:

"retroshare": {
  "link": "https://retroshare.cc/",
  "score": 4,
  "categories": ["chat", "email", "file-sharing"]
}

or something like that. And when the readme is generated this would appear 3 times in all categories, so when the project changes, you only need to change in 1 place and regenerate.