Vas' reviews and other stuff2018-12-01

Decentralisation will fail

Modernity claims another victim: Google Hangouts. Google is on the deathmarch towards outdoing even Yahoo for the company that’s killed off the most services, not that Yahoo is doing bad for itself: tumblr is in the process of purging much of its content as we speak. I’mma give it to you straight: the longer this goes on for, the more of your “beloved” services you’ll see censored or shut down for profit. That’s because most of these services are directly tied to the company’s stock price, or even worse, rely on ads and venture capital (itself relying on ads) to be financially solvent. Since the ad industry is a bubble matched only by bitcoin, the situation is bound to get worse, and decentralisation will not be the solution.

When we talk decentralisation, we need to differentiate between a distributed network and a federated network.

Distributed networks can’t scale

Distributed networks are in theory our ideal solution. Instead of relying on any single authority, information is managed by the network itself. Every node in the network can communicate with any other node, as opposed to having a central access point, for example Google or Facebook. This can range from DNS resolution to payments.

There are already distributed networks out there which work well enough in their domain. DHT works well enough for downloading torrents, but for a web equivalent I’m most used to Freenet and its function is also acceptable. In general, the quality benchmark for your protocol should be whether you can share hurtcore CP without the feds vanning you, and Freenet meets that bar.

What all distributed networks have in common is that their performance sucks, and having more nodes in the network would only make the network suck more. Fundamentally, every time your hardware needs to touch the network, that’s several orders of magnitude of latency piled on top of one another, and the very nature of distribution is that there are more packets exchanged between nodes, constantly.

Problems of trust

Since there is no central authority, distributed networks cannot trust the authenticity of information against tampering. Literally every node is a man in the middle. The solution is to verify authenticity cryptographically, which introduces several problems.

First, you must be extremely careful in designing the hash function, otherwise it’s going to be trivial finding collisions. However, every hash function is mathematically guaranteed to have collisions, so absolutely nothing will guarantee security indefinitely. By design, distributed networks are guaranteed to suffer from collisions, even by accident, so you must provide an internal way to update the hash function and rehash the entire network’s data.

Second, good hashing is by definition computationally expensive to some degree. There are hardware solutions, but these require constant and regular updates by hardware owners. Both are an additional cost that might be acceptable on the individual level but scale up to monstrous sizes on the planetary scale.

Third, humans are fucking retarded and cannot be trusted to manage cryptography well. This is true for professional sysadmins so I have bad news about a normie’s capacity.

Problems of throughput

Now, downloading a resource from the network is one thing, but the real memes start when you start adding resources. You need to communicate the addition to enough nodes that your resource is discoverable. This involves several network hops and processing steps, repeated every single time a pic, blog post, tweet, and chat message is sent.

Bonus meme: you cannot query against a distributed network. The query will only be efficient if you download a full copy of the network; the internet as it stands is at least a few petabytes. Therefore you must partition the network and distribute your search, which by the way should also be guarded against tampering and censorship. However, since you need to decrypt query parameters at some stage to match them against your dataset, I doubt that is even possible; you must assume good faith by all nodes involved.

A web search will need to coordinate between every individual partition of the web. The larger the web gets, the more partitions there are, which means increased latency, processor cycles, network hops, and disk reads. The more searches there are, the more taxing the workload on every single node of the network simultaneously. Imagine if every network had the transactional performance of the Bitcoin blockchain.

This is especially bad because a growing number of devices are mobile and have some network limitation. The network isn’t uniform, and some devices are best suited for being thin clients, if only for the battery savings. You can solve this by using a proxy which will do all the processing and networking for them, but: a) normies aren’t going to start buying and managing VPSes en masse, and b) you’re effectively recentralising your network to fix the dysfunctions you’ve introduced by distributing it.

In short, it is extremely difficult if not impossible to design a distributed network which is superior to our current already inefficient networks in terms of processing, bandwidth, and IO required, which ultimately are electricity and hardware, which ultimately are money, which ultimately is our planet dying out. Your only option is to provide access points getting around this, which brings us to our next point.

Federated networks are proto-centralised

Federated networks improve upon distributed networks because they have centralised authorities, thus less need for aggressive cryptography to merely verify resources haven’t been tampered with. This saves significant resources and retains compatibility with the existing infrastructure and limitations of the web and physical reality. This is why Mastodon and IRC have been successful where Freenet has not.

But no matter how good they are at it, communication within federated services will always be more efficient than between them, for the mere fact of there being more network hops; at least one in the best case. Web search should be more doable cause there's fewer network partitions to query, but that can still mean thousands of partitions versus Bing’s and Google’s one. Case in point: Mastodon has no search and never will across instances.

This means that the network has an efficiency incentive to centralise, and since hardware costs money, there exist the same ad and venture capital-related problems as before. In fact, several Mastodon instances are notoriously censorious, and I would be surprised if some of the largest ones aren’t data mining the deepest reaches of your rectum considering they’re large commercial entities.

I have no doubt that if you let federated services run on for several years, the tendency of capital to accumulate will result in an oligopoly of instances with only the benefit of cross-communication in their favour; the historical example is XMPP (Jabber), which powered Facebook chat and Google Talk, but since then these services became walled gardens.

Economies of scale

The final point I want to make is that all argumentation against centralisation is doomed to be uneconomical on the civilisation scale, simply because tall services scale better than wide ones.

For example, if you are to believe the indie web movement, everyone should have their own domain name for their online presence; a cheap one is $10-15 a year. That’s $10 for every single Facebook user, redditor, blogger, you name it. However, I can host far more than one person in one domain; even if all we’re doing is name resolution, I can have infinite subdomains for me and my entire family.

This holds true for every aspect of the service: a server can service multiple people, a network has enough throughput for several sites’ data, and even clustered databases, like MongoDB, can manage their scaling more efficiently by assuming they are ultimately a unified monolith than any disjointed network ever has in the history of digital computers. We could probably serve every single static website in the world with a few hundred grand and they would work well enough.

Ethical centralisation

Hopefully I have made my point that centralisation is more efficient and more economic. In fact, I strongly believe the web is centralised mainly because it saves money, time, and resources, rather than conspiratorial, capitalistic greed. I also suspect, though less strongly, that there are mathematical reasons why that is the case, i.e. all decentralised networks are doomed to centralisation given enough time. I believe the historical precedent of all networks to have ever existed is sufficiently suspect.

However, I don’t think it is all doom and gloom. Real life faces the same problems, and we have solutions: we can’t have complete anarchy, but absolute monarchy is catastrophic, therefore we have devised democracy. Therefore the solution to Silicon Valley’s dictatorial centralisation is democratic centralisation.

As the Organisation for Transformative Works has shown, it is possible to have a single organisation and a single service with few, if any of the dysfunctions of modernity: no AngularJS, no Bootstrap, no venture capital, no analytics, and no censorship. By making use of existing legislation for nonprofits, we can craft a digital fiefdom that’s guaranteed to serve our interests; and if it doesn’t, we can pursue legal action against it.

Our current problems aren’t ultimately technological; there is no inherent reason why centralisation should be a problem. The attacks on our liberty, privacy, and aesthetic sensibilities are social, and thus the solution has to be social. You cannot defeat twitter by trying to become the next twitter. Be a republic instead.