Thoughts on Decentralization

2021-12-29

---

A Gemini post^ this morning discussed two types of decentralization and the differences between them. I find this kind of topic fascinating; while I'm not directly involved in software development, I'm very interested in decentralized software as part of my interest in general FOSS and privacy-centric technology.

One issue discussed in the post was terminology. If there are two different kinds of decentralization, what language should we use to highlight the fact that they're different? There's been at least one reply^^ to the post addressing that very question, putting forward the possibility of using "federated" versus "decentralized".

My preferred terms are "distributed" and "federated", both of which fall under the "decentralized" paradigm. This is mostly because of their connotations. When we think of a distributed network, we think of a cluster of individual nodes, each almost always representing one machine or user. In contrast, federated networks also consist of multiple nodes, none of which serve as the central hub, but each node hosts large numbers of users and number of primary nodes is relatively small.

BitTorrent is listed in the original post as an example of a "type 1" decentralized network and what I would call "distributed" network. Typically a BitTorrent node is a single machine running a BitTorrent client, servicing one user: the primary user of that machine. BitTorrent treats every single node equally; in fact, the word "client" is itself a bit of a misnomer, because every client is itself a server that uploads content to other clients. It's about as even a playing field as a technology can get.

An example of the "federated" paradigm, as listed in the original post, is ActivityPub. While it's possible for anyone to run their own Mastodon instance, in practice the vast majority of users don't. They prefer to join an existing instance, usually hosting hundreds or thousands of other users they can instantly interact with, and the instance administrators decide what other instances to which the users can connect.

In common parlance there's not much difference in how these two types of networks are discussed--they're both just referred to as "decentralized". In fairness, I suspect part of the problem is that these two models are not mutually exclusive. There can be some gradation in how a network topology is structured, and in practice some technologies even switch from one model to the other. An example of this would be e-mail, originally used as a fully distributed system but now heavily federated into only a few major providers. Even BitTorrent can become federated on a moderate scale through shared seedboxes, and Gemini is certainly federated on small scales with tildeverses.

Which kind of network is better? That depends very much on what the network does and who uses it. For serving static content à la Gemini and BitTorrent, I feel the distributed model works very well: each peer is fully empowered to share and reproduce data at their discretion, and a very robust network can develop as a result. In the case of systems like e-mail and Mastodon, the network must have strong capabilities of filtering out malevolent content like viruses or spam in order to be successful as a distributed system--and if it can't, federation is probably required to maintain a healthy ecosystem.

Which kind of network do I prefer? If I'm able, I always like to use distributed technologies over federated technologies. That's why I don't yet have a presence on Mastodon, but I've used Tox as a message system for years. My Gemini capsule is served on a Raspberry Pi rather than on a virtual machine or a tilde, and when I dabbled in Gopher, I did the same thing with my Gopherhole. To put it bluntly, I don't trust anyone with my information except myself, and I'd rather keep control over as much of that information as I possibly can.

My issue with a number of decentralized technologies is that when their models shift over time, the shifts always seem to be away from a distributed system and towards a federated system. I'd love to see the reverse trend happen more often: federated systems slowly segmenting into individual components that can connect directly just as easily as large servers connect to each other. I imagine a lightweight ActivityPub client that can itself act as a small server, sending out toots on Mastodon or videos on PeerTube and allowing other clients to connect directly to the user's client to interact with that content. There have already been some similar ideas^^^ floating around Geminispace to make it easier for new users to publish content, and potential concerns about a flood of low-quality content notwithstanding, I think the concept is a worthwhile one.

^ Are there 2 types of decentralization?

^^ Re: Are there 2 types of decentralization?

^^^ Making Gemini Easy

---

Up One Level

Home

[Last updated: 2021-12-29]