There’s a grave misconception about the open source world.
Far too many people think that it consists entirely of people working together for a common goal. That those who choose to write code, and give it away for free, are Digital Hippies; bearded, bespectacled, sandal-wearing folks who, if they had never discovered computers, would be sitting around a camp fire, strumming a guitar and singing Kumbaya.
False. Totally, utterly false.
There have been times when serious rifts have emerged in the open source community, which produced bitter feuds, schisms, and bad blood not seen since the heady days of Oasis and the notoriously tempestuous Gallagher Brothers.
But whilst Noel and Liam Gallagher solve their differences with flying fists and witty one-liners, the open-source community instead chooses a (typically) more productive way. Forking.
What Is Forking?
Forking has nothing to do with your utensil drawer. Rather, it relates to the direction an open source project takes.
Most open source software is licensed under open, permissive licenses that are permit the user to take advantage of the four freedoms of Free Libre Software. The Free Software Foundation describes them thusly:
The freedom to run the program as you wish, for any purpose (freedom 0).
The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
The freedom to redistribute copies so you can help your neighbor (freedom 2).
The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
When a programmer ‘forks’ a program, they take a copy of some already-written code and treat it as an entirely separate project. They might rename it, and any changes made will only be reflected within that particular ‘branch’.
There are many reasons why a piece of software might get forked. Sometimes, the end-user benefits greatly. Sometimes, the fork is done under a shroud of anger, hatred and animosity. Let’s look at some examples: one good, one great, and one ugly.
The Good – LibreOffice and MariaDB
In the nineties and early noughties, there was a company called Sun MicroSystems. Sun was a pretty large company, with thousands of employees, and revenue dwarfing the (then ailing) Apple.
Sun Microsystems built a family of processors called SPARC (which, in many respects, had a lot in common with the ARM chips that power most mobile phones and tablets, and some Chromebooks), as well as servers which were powered by them. They also built a huge amount of computer software that is still heavily used today.
Software like the Java programming language/virtual machine, and the MySQL database. Software like OpenOffice, which virtually ended Microsoft Office’s absolute monopoly.
Unfortunately, all good things must eventually come to an end, and in 2009 Sun Microsystems was taken over by Larry Ellison’s Oracle Corporation. This spooked the Open Source community, given Oracle’s poor track record for openness and egalitarianism when it comes to free software. This was exemplified in 2010 when Oracle took Google to court for violating their copyrights and patents over the Java programming language used in the Android mobile operating system.
This was the straw that broke the proverbial camel’s back. Members of the open source community took two of the most significant Oracle products, and forked them. MySQL became MariaDB, whilst OpenOffice became LibreOffice.
This move ensured that these products would be able to be used for years to come, whist still under a permissive license and at no cost to the consumer. Crucially, Oracle wouldn’t be able to do anything about it.
Today, LibreOffice is one of the most used office suites in the world, and comes as default with a number of Linux distros; OpenOffice has been taken over by the Apache foundation and is now known as Apache OpenOffice. MariaDB has similarly had a great deal of success, and has replaced MySQL on a number of Linux distros, including Fedora starting from version 19.
The Great – Node.js And Node Forward
The grand patriarch of the Node world was Joyent, a major cloud-hosting company based in San Francisco. Although Node was open source, it was dependent upon Joyent for financial support, and many started to feel that Joyent had taken the role of ‘Benevolent Dictator For Life‘ and had exerted too much control on the direction of the Node project.
Some core developers, feeling the need for Node to take a more independent direction, forked Node. Node Forward was born.
This schism has been pretty traumatic for the community, but it is hoped that the decision to fork Node will eventually result in a more open, more democratic approach to developing one of most significant software projects in the world.
You can get involved, or follow their progress on Github.
The Ugly – SystemD
Calling systemd controversial is a bit like describing deep fried butter as ‘somewhat unhealthy’. The truth is, systemd almost split the Linux community into two.
But what is it? Well, first, let’s talk a bit about how Linux works. Until recently, whenever a computer running Linux was booted up, it would first launch a program called init. This would run until the computer was eventually shut down, and is responsible for launching your computer and handling orphaned processes.
The problem is, Init isn’t all that great. Mostly because it’s slow. Like, really slow. That’s because it launches tasks serially, or one at a time. For a new task to start, it first has to wait for the last one to finish. Although this might have been a useful feature a long time ago, when computers were chronically underpowered, it’s not really that helpful in 2015, where most computers are multi-core behemoths with gigabytes of RAM.
So, systemd was created. The problem was, systemd broke an important design philosophy of how system tools for Linux should work. Instead of doing one thing, and doing it well, systemd did multiple things besides boot the computer. It sounds innocuous, but in the Linux world it’s as close as you can possibly get to grand treason.
At this point, the Linux world split into two camps. One which desperately wanted to ditch the old, slow, and outdated init daemon. The other strongly objected to systemd as a matter of principle, and didn’t want it to be anywhere near their Linux machines.
Things got heated.
Bloggers decried what would be the ‘end of Linux’ as they knew it. Linus Torvalds, creator of the Linux kernel, went so far as to ban a key systemd developer from working on the Linux kernel, although he later stated he had ‘no strong thoughts’ on the systemd controversy.
With the schism in the Linux world gaining column inches in the technology press, griefers and trolls took note and started causing mayhem in a number of major Linux mailing lists and forums.
As more and more distros announced they’d be moving to systemd, a group of frustrated programmers took matters into their own hands and launched a systemd-free fork of Debian called Devuan.
Spins and derivatives of existing distros aren’t exactly rare, but by all accounts Deuvan has picked up an impressive amount of steam. Developers are working hard on a future public release of the OS, whilst the organizers have already started soliciting for donations.
Although the fork of Debian will undoubtedly result in greater choice when it comes to how Linux is used, and may one day become an important player on the Linux landscape, it’s important to remember where it came from. A tumultuous, acrimonious place which almost brought one of the most culturally and commercially significant open source projects to its knees.
A Fork Too Far
The systemd controversy shows that forking can be indicative of a schism, or a deep conflict, within a project. But in the same breath, it can also be a cry of independence from an overbearing, corporate backer. Indeed, forking can sometimes ensure free software remains just that. Free.
What do you think? I’d love to hear your thoughts. Drop me a comment below, and we’ll chat.