May the Fork Be with You: A Short History of Open Source Forks
Every time there is a fork, and I think forks are actually good things, it means somebody sees a need and a technical reason to do something different from the standard kernel. But most forks are failures. They find that the things they needed were not actually worth doing and as a result, most forks die. — Linus Torvalds.
Last week, a number of parties agitated for the forking of the open source Docker container software, citing a number of dissatisfactions with how the technology was progressing, including Docker Inc.’s rapid release schedule. Fork of an existing code base is a weighty decision, one that could force the many parties reliant on the software to choose one option or the other.
The history of open source is full of open source forks. A lot of forks are extremely successful. One of the reasons behind the success of these forks was that they were created out of a need — The need of a community that was not fulfilled by the original project. Original projects may frown at their forks, they may fight back but the reality is, as Torvalds said, somebody saw a reason to branch out. In many cases, forks became more successful than the mother project due to overwhelmingly support for community behind them.
We’re agnostic about whether Docker should be forked, or if a fork would be successful. But in this story, we have picked some of the most successful forks of enterprise software in the history of open source.
Ubuntu a Debian fork?
Debian is one of the oldest Linux-based distributions that became the base of many distros. One of the most popular Debian forks is Ubuntu. Ubuntu takes Debian packages and builds its own packages. It has its own software repository, it’s own kernel. Though many would argue whether Ubuntu is a fork or not, even Mark Shuttleworth is not fully sure.
Oracle Enterprise Linux forked from Red Hat Enterprise Linux
Ubuntu is clearly a friendly fork of Debian as Canonical has hired many Debian developers and they contribute to Debian upstream. Whereas Oracle Enterprise Linux is clearly not a friendly fork of Red Hat Enterprise Linux.
Oracle forked RHEL way back in 2006 and offered what they called “Oracle Enterprise Linux” for free. Its message was that you don’t need to pay Red Hat to run Oracle database, get RHEL for free as OEL.
Red Hat hit back at Oracle by obfuscating its changes to the kernel and not offering to patch files for their changes in the source tarball. Oracle came back with a RedPatch service to offer the public a view of the RHEL kernel changes, broken down by patches.
CentOS forked from Red Hat Enterprise Linux
CentOS (Community Enterprise Operating System) was forked from RHEL in 2004 and the first release of CentOS was version 2. CentOS is built from the source code of RHEL making it compatible with RHEL. Unlike OEL, it was not a hostile fork. On the contrary, CentOS aimed at offering RHEL to those who wanted to run it on web servers without having to pay for support.
CentOS helped Red Hat in a way that it “captured” a huge chunk of web server market from Debian. Looking at the competition between Red Hat and Canonical, every server that moves away from .deb base to .rpm base was a win for Red Hat. For a brief period, CentOS beat Debian to become the most popular web server. Red Hat being Red Hat, made a smart move in 2014 and acquired CentOS. While keeping CentOS independent, Red Hat claimed both paid and free market share.
OpenBSD forked from NetBSD
The grass isn’t greener on the other side. There are many forks in the BSD (Berkeley Software Distribution) land, too. The most popular fork is OpenBSD. Theo de Raadt, the outspoken, co-founder of NetBSD forked the project after he was outed as a senior developer and member of the NetBSD core team. He announced OpenBSD in 1995 which was forked from NetBSD 1.0. OpenBSD is second most popular BSD after FreeBSD.
OpenOffice fork LibreOffice
Oracle acquired OpenOffice through Sun Microsystem acquisition, but OpenOffice didn’t fit anywhere in Oracle’s grand plans. Looking at the fate of OpenSolaris, OpenOffice.org community members formed The Document Foundation in 2010. They forked OpenOffice codebase and created LibreOffice in the same year. LibreOffice quickly became the default office suite for major distributions.
As many core developers joined the LibreOffice project, the fate of Oracle OpenOffice was sealed. Oracle stopped the development of OpenOffice.org and laid the remaining development team. In 2011 Oracle donated the code and trademark of OpenOffice to the Apache Software Foundation.
In an email sent on September 1, 2016, Apache OpenOffice Vice President Dennis Hamilton expressed the possibility of retiring the project due to lack of contributions.
MySQL fork MariaDB
OpenOffice was not the only open source project that suffered under Oracle. When Oracle expressed desire to acquire Sun Microsystem, MySQL founder Michael Widenius objected to MySQL’s acquisition by Oracle and started a ‘Save MySQL campaign. The day Sun acquisition was announced Widenius forked the GPLed version of MySQL to create MariaDB, a drop-in replacement of MySQL. Later on, MariaDB became the default database of many Linux-based distributions, though MySQL remains the most popular open source database.
Ironically, while Oracle never close sourced MySQL, Widenius made MaxScale, an intelligent proxy that allows the forwarding of database statements to one or more database, proprietary. Interestingly, within a few hours of MaxScale announcement, some community members forked it on GitHub under the name GPLScale.
Jenkins from Hudson
Oracle doesn’t seem to have a very good reputation with open source communities. After OpenOffice and MySQL, Hudson was yet another Oracle open source project (acquired through Sun Microsystem) that was forked by its community. In 2011, after a long dispute with Oracle over trademarks, Hudson was forked as Jenkins. Interestingly enough, Oracle saw Jenkins as the fork, while Jenkins contributors viewed Hudson as the fork. Today Jenkins is one of the most popular and widely used continuous integration tools, while Oracle gave up on Hudson, donating the code base to Eclipse.
Nextcloud forked ownCloud
In a high-profile forking earlier this year, ownCloud founder Frank Karlitschek resigned from the very company that he co-founded and forked the project he founded. In June 2016, Karlitschek announced the fork of ownCloud, dubbed Nextcloud. Karlitschek joined hands with Spreedbox founder Niels Mache to create a new company around Nextcloud. Within 12 hours of Nextcloud announcement, ownCloud shut down its US offices due to withdrawal by their investors.
Learning from his ownCloud mistakes, Karlitschek created a Nextcloud foundation that owns and controls the trademark on the name as well as oversees the development of the project. Nextcloud also became one of the few companies to eliminate CLAs (Contributor License Agreements).
OpenSSH is one of the most critical components of modern IT infrastructure. OpenSSH was forked in 1999 from the then free SSH project that was later turned into proprietary technology. OpenSSH is technically a fork of OSSH, which is a fork of SSH project and was created from the code base of version 1.2.12 of SSH whose license allowed forking. OpenSSH is default utility on Linux (and BSD) based system to connect to remote machines. In 2015 Microsoft introduced support for OpenSSH in its Windows PowerShell.
Apache HTTP Server
A lot of open source software is either based on other projects or are forks, including the most popular open source web server Apache. Apache project forked NCSA HTTPd web server in 1995 when the development of the original project slowed down. Interestingly when Apache web server codebase changed its license to Apache 2.0 license, OpenBSD project forked Apache HTTP server and created OpenBSD Httpd.
It’s quite evident that forks that were created by their community have been hugely successful. In fact, in most cases, they overtook the original projects. At the same time, there are some forks that were created out of hostility and those forks remain dormant. What these forks teach us, historically, is that open source can’t be contained; if a project fails to deliver on its promises, if it ignores its own community, it will be forked.
May the fork be with you!