Minimum Viable FreedomJun 1, 2014
It comes in many shapes and flavors.
Being a software developer, I was always interested with the concept of freedom in computing. I’d like to take a moment to elaborate a pragmatic viewpoint on the matter. One that doesn’t unconditionally forbid use of certain kind of products but, still, allows oneself to do a conscious choice.
According to the FSF there are basically two kinds of software systems: those which are free (as in freedom) and those which are not. Free software “comes with permission for anyone to use, copy, and/or distribute, either verbatim or with modifications, […] In particular, this means that source code must be available.”. This notion extends to hardware, as in, every component capable of executing general-purpose code must be free (again, as in freedom, following the definition above).
Some people take this concept to an extreme and turn it into the lens through which they see the world. Suddenly, everything becomes “us” versus “them”, then they go to great lengths to fulfill their absolutist vision of the world.
But the world isn’t all black and white, there are many shades of gray. And colors, too.
But what is an acceptable level of freedom? One which doesn’t sacrifice convenience, one which still makes room for commercial software but doesn’t lock you in to an ecosystem?
For me this all boils down to three requirements:
- If I’m buying a general purpose device, one which can run arbitrary programs, and that device is locked, there must be a simple way to unlock it, even if it means voiding the warranty. Additionally, it must retain full functionality even after being unlocked.
- I must be able to swap out almost every software component, don’t care whether it’s free or not, with those of my own choice, without asking anyone’s permission.
- All data I care about must be saved in an open and documented, possibly text-based, format. If not documented, it should be fairly easy to interpret the data. Obscure, undocumented, binary formats are a no-go.
But what does it means in practice?
Speaking of the first point, the most blatant example which comes to mind is smartphones. These are full blown pocket-sized computers but, for some reason, these devices come locked, presumably to prevent users from doing stupid things with their cellphone like they do with their computers. Nonetheless, there are different ways a manufacturer can lock down a device.
One is the Apple way, which I find totally unacceptable: there is no known way to unlock the device, and you have to ask Apple permission to do anything on it. I can’t install applications without going through Apple and I can’t install applications I develop on my own device without paying Apple a ludicrous fee 1. You can unlock an iPhone/iPad by going through a process called “jailbreak” but then your phone is crippled. Not only you void the warranty, but you have to make sure to never install OS upgrades ever again. Since jailbreaks are based upon security holes, an upgrade might close the security hole and “undo” the process. It is not something you can rely upon to regain control of your own device.
Let’s contrast it with the Google way. When you buy a Nexus device, it is still heavily locked down, just like an iPhone is, but it is fairly easy to enable application sideloading. I don’t have to ask anyone’s permission to install an application I’m developing on my own device. Also, it’s still relatively easy to unlock the phone’s bootloader so that you can, for example, install CyanogenMod on it (seriously, it’s a one liner command).
Moving on to the second point, I can draw again a parallel between iOS and Android. I can’t change the browser on an iPhone, Safari is all I can get and it is the hard-coded default browser. All alternative browsers out there just use Safari’s WebView because, again, Apple mandated that. On Android, however, I can swap out Chrome for a full-featured version of Firefox. Or Opera. Or Dolphin. Nobody cares.
This is why, for example, I carry around a MacBook Pro but not the iPhone 2. The first still allows me a degree of freedom the latter simply doesn’t allow.
Given the choice, I always tend to prefer free software, otherwise I don’t mind using commercial stuff when it is objectively superior or more convenient, provided it meets the requirements above.