The Cloud’s Shadow on Grass Computing

Fortunately for all of us, in 15 years since the dot-com bubble collapse, there has been an increased effort from Free Software and other developers to create decentralized systems. Bittorrent,  Tox,  ZeroTier One, TeleHash, Media Goblin, Sandstorm, GNUNet, and countless others.  This includes my own Fire★ project which I have coined Grass Computing.

Grass Computing is running decentralized Free Software.

If Cloud Computing is running decentralized software on rented machines corralled behind a wall. Grass Computing is running decentralized free software on your own hardware in the open. It is the Yin to the Cloud’s Yang.

There are many modern projects that enable people to do this now, but one myth is that this is something new. That in the beginning, the internet and the web was centralized, and it is moving towards a decentralized model. This is how the story is told but the reality is the opposite. The internet and many applications that run on it were first decentralized and have since been centralized. This forgotten history should be a warning to these modern decentralized system developers. Their systems can be co-opted and centralized at any time.

The most obvious example is email. Email is inherently decentralized because anyone can run a mail server and two mail servers can communicate directly without a middle man. Since the late 90s, many companies started to provide centralized email services and now most people in the world don’t run their own mail server, but rely on corporations to mediate their email communications for them.

There are many reasons why this happened, but the most compelling and provocative reason comes from the Telekommunist Manifesto. Which basically states that capitalists didn’t understand what the internet was but knew it was important and started buying everything they could. This led to the dot-com bubble of the late nighties. And in order to monetize on their investments, they invested in centralized computing because they can’t control communication of peer-to-peer software. They need the central control because it is the clearest way to get a return on their investment.

In other words, capital investment moved heavily towards centralized services instead of peer-to-peer ones, starving peer-to-peer software development of resources. The brightest and most well paid engineers now concentrate their minds and bodies to build centralized systems. These are called Star Networks because all communication of all nodes is mediated through a central point, having the shape of a star.

This is why people prefer a central email service. Because it is really hard to run your own mail server and it is really easy to log into Gmail. Imagine a different world where Google invested in making it easy to run your own email server which you can access from any web browser. Imagine a “Download Gmail” button where, with a couple short steps, you can be running your own Gmail software on your own machine at home. There is no technical reason why they could not do it. But there is no incentive for them to do it.

Another example is chat. Before centralized chat programs became popular, people could talk on IRC, which is federated and can be decentralized. I can run an IRC server which you connect to. We can talk directly as a group with each other. Now people use centralized chat services because they are far more convenient than running your own. Not because of any technical limitation, but simply because companies spend more time polishing and making centralized chat easier and more attractive than any competing decentralized chat.

Another example is GitHub, which takes Git’s inherently decentralized model and centralizes it. People use GitHub because it is easier than hosting your own code..

We need more Grass Computing software, and I believe if we had more social and capital investment, fellow engineers can make using decentralized software as easy as logging into Gmail, or talking over Skype (which used to be p2p but became centralized).

Check out redecentralized for some great interviews with engineers making grass computing easier to use. Get inspired and participate. And as a shameless plug, check out my own Fire★ project which aims to make writing p2p software easier than writing client server software.

If you take anything from this post take this:

Spread the idea of Grass Computing and warn others that it is a constant fight not to have decentralized software become co-opted and centralized.

Also fight for a basic income. If we have a basic income, then many more people may spend time working on decentralized systems. Consider it a social capital investment.

My Software is Infinitely Better than Skype

I wrote a little peer-to-peer application platform called Fire★. You can write graphical P2P applications using Lua.

Fire★ will keep track of your contacts and manage the hard parts of p2p programming like UDP hole punching and keeping connections going. There is also a built in application editor where you can pair-program with others in real time.

Much Excite

You can think of it as an extensible Skype, where the modes of real time interaction are defined by the users and not the engineers.

Yes, you can use it for text chat. Yes, you can transfer files with it. Yes, you can do voice chat. Yet none of these things are “built” in features.



However, It Sucks

However, the text chat is terrible compared to Skype. The voice chat isn’t that great, and doesn’t filter out nearly enough noise. The white boarding app is stupid simple and can’t compete with other Skype like applications like Lync. Most of the example apps are just toys and nothing serious has been built with it. In many respects, Fire★ is technically inferior to Skype. It is more difficult to use and not as pretty. There is no support for video yet. There is no phone support. And it probably crashes more often.

But my Software is infinitely better than Skype.

It is infinitely better in a way Skype will never be because it is Free Software. The source code is available under GPL on GitHub.

You can read it and know what it is doing. You can change it for the better. And you know it isn’t spying on you. You have freedoms using it that Skype will never give you, and in this way it is infinitely better.

I love that Tox exists. I love that Pidgin exists. And I love that my little p2p communication tool exists. We need more Free Software, even if it is to scratch a little itch.

So far there have been only two contributors to this project. I don’t expect it to ever have more because the median amount of contributors to a Free Software or Open Source project is one.

I am a realist. It will never be better than Skype for communication and features. It doesn’t have a multi billion dollar company behind it. However, I still consider it a success because it will benefit whoever uses it in a way that Skype can’t.

The Master and the Slave, the Open and the Free

The Open Source movement has been at war with the Free Software movement for over 14 years and at the heart of this fight are their conceptions of freedom. I want to argue here that the Open Source movement’s idea of freedom is drenched in historical violence which bleeds into our modern times. While the Free Software movement is on the correct side of history.

Software, unlike physical goods, can be copied with very little effort and energy. One of the Free Software movement’s core strategies is to use licensing to keep source code open down this line of copying and editing. These licenses are known as copy-left licenses and to ensure that people keep copies and modifications open, there are restrictions put in place on what you can do with the work. These restrictions are designed to prevent you from taking an open work and closing it. For example, taking a program like GCC and selling it as “Joe’s Compiler” without providing the source code.

It is these restrictions that are a thorn in the side of companies and individual developers. And they offend these people deeply, to their core. Why? Why are these restrictions anathema to the Open Source movement, who’s distinguishing feature is software licenses without these restrictions? It seems interesting that a modern social movement can spring up because of a contradiction on this one belief of what freedom is.

The reason Free Software’s idea offends the Open Source people is because the Open Source’s conception of freedom is deeply engrained in the western world’s privileged class and can be traced back to the Roman times.

Throughout human history, in most languages, the word for “freedom” essentially meant “not slavery”. In the English language, “free” traces back to the same root as “friend”. It is the freedom from masters. Freedom meant being around people who are equal to you. The ability to make friends, have a family, and make promises. And it is no surprise that slaves were treated as non human, or dead. They are stripped of all ties from their family and community and brought to a foreign place to live the zombie life.

Romans kept slaves and they had laws governing property. In Roman law, you can do absolutely anything you like with your property, except for those things you are not allowed to do. This was the Roman’s idea of freedom and it is a very strange one with a deep contradiction. If you can do anything you like, except for those things you can’t, then slaves must be free too, because they can do anything they like except for the things they can’t.

In other words, property rights are at the center of this conception of freedom, and property rights are often confused with a person and their relation to some thing. But in reality, property rights are relations between two people about some thing. If you are in a desert island, it doesn’t make sense that you own a tree, or a rock on the island unless there is someone else there with you. If you are alone, whether you “own” that rock or don’t doesn’t matter because there is nobody to stop you from doing what you please.

The reason the Roman law had this idea of property and freedom is because the magistrates in the Roman empire were imagining the relationship, not between person and thing, but between two people, where one of them is rendered an object or “thing”. This was the slave law and it shifted the idea of freedom as “not being a slave” to “having power as a slave owner”. In Roman law, a free person is someone who has slaves, or some private domain, where they can do whatever they please.

It is this Roman freedom that the Open Source movement advocates. That you have the right to do as you please in your private domain, and you have the right to become a master, by closing an open program and selling it as proprietary software. People who make proprietary software and their users have similar relations to that of a master and a slave. In proprietary software, the relation between the software creator and the software, and the relation of the user and the software, is different. The user does not have the same control over the software that the creator does. But more than that, the relation between the owner and user is not that of people who are equals. The software owner can send people with guns to the user’s house over the software, while the user cannot do the same to the owner.

Behind this Roman freedom is violence. Because after all, if I can own my modifications and sell them, I need a system to enforce the ownership. If I copy your modified software that you closed, you can send the police after me, who will come with real guns, that have real bullets. You can turn open bits and bytes into closed guns and bullets. Some would argue you are free not to use the proprietary software. But imagine a world where all software is proprietary, would the argument then be you are free to choose your master? Because the only alternative is to not use computers, which is not a satisfying, or often realistic, alternative.

The Free Software movement believes in the more conventional idea of freedom, that of friendship and brotherly/sisterly love. That freedom means your social relations with others are relations of equals. And that nobody can be a master over you.

This quite clear when you look at the history of how Richard Stallman was motivated to start this movement. It was his reaction when developers started distributing only runnable versions of software. He was working at MIT and a company Symbolics made modifications to MIT’s lisp machine. He wanted access to the modifications which Symbolics did not provide.

I believe in the Free Software movement’s idea of freedom because they are on the right side of history.

EDIT: Made some changes related to my use of language.