10 interesting open source software forks and why they happened

A benefit of open source software is the ability to take the code base of an application and develop it in a new direction. This is, as most of you probably know, called forking, and is very common in the open source community. For example, many Linux distributions can be traced back to either Debian, Fedora or Slackware.

Much of the open source software that is in popular use today was born from other projects. We thought it would be interesting to take a look at the history of some of these software forks and find out WHY they happened in the first place.

We looked at the WHY because software forking is often seen as somewhat of a waste of development resources and isn’t considered a good thing. Sometimes the results can be great, though, as many of the examples below clearly show.

Ubuntu from Debian

Why: Ubuntu was initially a temporary fork of the Debian project done so that a new version of Ubuntu could be released once every six months and therefore provide a more up-to-date system.

Firefox from Mozilla Application Suite

What:Firefox is the web browser with the second-largest user base in the world.

When: Binaries for public testing appeared in September 2002 under the name Phoenix. Version 1.0 of Mozilla Firefox was released on November 9, 2004.

Why: The Firefox project was initially an experimental branch of the Mozilla project, intended as an alternative to the increasingly bloated Mozilla Suite.

Joomla from Mambo

What:Joomla is an open source content management system (CMS) for websites.

When: August 17, 2005

Why: Due to concerns regarding the future governance of the Mambo project, where several core developers felt that Miro had too much control, Joomla was forked and is now a successful CMS in its own right.

OpenBSD from NetBSD

What:OpenBSD is a Unix-like operating system and is one of the more popular BSD variants.

When: October, 1995. The first release (OpenBSD 1.2) came in July 1996.

Why: Theo de Raadt, co-founder of NetBSD, was asked to resign his position as a developer and member of the core NetBSD team in December of 1994, most likely as a result of personality clashes within the NetBSD team. Less than a year later he founded OpenBSD, forked from NetBSD 1.0.

X.Org from XFree86

What:X.Org Server is a popular implementation of the X Window System (a standard toolkit to build GUIs) and is in common use on Linux and other Unix varieties.

When: The first release from the X.Org Foundation was on April 6, 2005.

Why: Disagreements with the new license for XFree86 4.4 and several other disagreements among the contributors to XFree86 ultimately resulted in a fork.

Drizzle from MySQL

Why: Started by Brian Aker, Drizzle was forked from the MySQL 6.0 codebase and is intended as a smaller, slimmer and faster version of MySQL. Contributors include staff from Google, Sun, Canonical and Six Apart.

XEmacs from GNU Emacs

Why: In the period between 1987 and 1993 there was a delay in bringing out a new version of GNU Emacs. In the late 1980s Lucid Inc. needed to update Emacs for a project, so they branched the Emacs code with the intention that these changes would then be incorporated back into the next version of GNU Emacs. However, the Free Software Foundation ultimately rejected most of these changes and XEmacs continued on as a separate fork.

Carrier from Pidgin

Why: We included this mainly because of the reason of why it was forked. A fork (initially called Funpidgin) was done of Pidgin 2.4.0 because there were disagreements about the size of the text entry field. The new fork is intended to be more focused on users’ needs. You can read the argument that sparked this in this Pidgin support ticket.

Webkit from KHTML

What:Webkit is an open source application framework for building web browsers.

When: Webkit was announced by Apple in January 2003 in connection with the launch of Safari.

Why: Apple created a fork of the KDE project’s HTML layout engine KHTML and its Javascript engine KJS to use them for developing the Safari web browser. (These has since been discussions among KDE developers about switching from KHTML to Webkit, “unforking” the software.)

Finishing remarks

Judging from these ten software forks, common causes of forks are disagreements (sometimes purely ideological) and personality clashes, though more practical reasons are also common (such as the Webkit and Firefox examples). It is also interesting to see that many times the forks have surpassed the original software in popularity.

It would be great to hear from some of the people who are or have been involved in the development of these open source projects. Care to share some anecdotes?

Informative interesting article. I would’ve liked a couple more Linux distribution examples to give evidence of most being able to be traced back to Debian, Slackware, and Fedora. Otherwise, interesting

More projects should be forked. Forking is evolution in action. Sometimes it goes somewhere and sometimes it does not. Mono-culture tends to arise in most open source projects. Forking works as a release valve and a counter to the “crossing the chasm” problem.

While NeoOffice did a tremendous job during the dark days when there was no official Mac port of OpenOffice.org, there is now a full official Aqua port of OpenOffice.org that is actually more current than NeoOffice.

The Ethereal-Wireshark thing wasn’t a fork: the developer of Ethereal changed jobs, and his old company claimed that the trademark was their property, so he changed the name. It’s not a fork when the same guy is running the show before and after.

Why: Apple coulnt code their own kick ass OS so they took the best one they could find which by shear luck was owned my a bunch of not lawyered up geeks and stole it. Putting a fancy blue background on it and swooshing soundeffects fooled everyone and since they stole the best OS and it crashes very seldom nobody gets to the the coredump text which is so full of bsd references that there isnt a single one from apple there, strange….

Is Firefox really a fork? It’s always been part of the same project, and still carries the Mozilla label. Mozilla was a suite, Mozilla Firefox was an attempt to create a stand alone web browser, allowing them to drop the bloat. A MORE interesting open source fork is Netscape -> Mozilla. That set up the development of Firefox.

OpenOffice to NeoOffice? It’s a port to be native in OSX, something OpenOffice hasn’t attempted, as it runs in OSX X11. Again, a MUCH more interesting fork is OpenOffice from Sun’s StarOffice.

In your finishing remarks you list Webkit as an example of a fork that happened for a practical reason, but you don’t actually list the practical reason anywhere. I’m curious because I’ve never actually had anyone explain to me *why* they had to fork it for Safari, other than “Apple does what Apple wants to do”.

Ubuntu isn’t so much a ‘fork’ of debian as a derivative of it. ‘Fork’ to me implies starting to take most of your code from somewhere other than the project you forked from. I guess there’s shades of grey lurking there – the difference between a fork and a derivative is a bit unclear…

It’s true that ”Ubuntu was initially a temporary fork of the Debian project”, but it wasn’t ”done so that a new version of Ubuntu could be released once every six months”. Rather, that’s a regular part of Ubuntu’s development process: Ubuntu forks from Debian in that same way every six months, and many of its software packages are synchronized with Debian even more often than that.

centuren: Yes, Firefox did start out as a fork of the Mozilla suite. The first several checkins to the mozilla/browser code (as it was called initially, before it was renamed to Phoenix) consisted almost entirely of deleting unwanted stuff from their copy of the suite.

agelessstranger: During the period Apple was developing Safari, they were dependent on Microsoft to provide Mac OS X’s premier Web browser (Mozilla for the Mac was a sloth, and OmniWeb and iCab were nifty but not really compatible enough). Apple rarely comments on future products anyway, but even if they had revealed that they were working on a browser, Microsoft would likely have given up on Internet Explorer for Mac (as indeed they did, shortly after Safari was released), raising serious questions about the viability of the Mac. And if Apple employees had started publicly contributing to the KHTML project, it would have been pretty obvious why they were doing that. So Apple forked KHTML secretly. The day Safari was announced, they submitted their patches to the KHTML project, but for various reasons those patches weren’t all merged, so the projects remained separate.

Forking WebKit from KHTML wasn’t a conscious act as much as it was a consequence of Apple’s development efforts not meshing well with KDE’s.

Apple programmers made updates to KHTML over time, and indeed released their changes back upstream to KHTML. However, Apple did so by periodically releasing tarballs of the modified KHTML. There was no indication of which change corresponded to which feature.

KHTML was left with the option of either incorporating Apple’s changes blindly (which would have been irresponsible) or laboriously analyzing diffs of Apple’s tarballs with the KHTML trunk to try to figure out why changes were made on a line-by-line bases (which would have taken an inconvenient number of decades).

Since neither option was possible, Apple’s version became a fork, and that fork is named WebKit.

> Actually Fedora itself is a fork from Red Hat. Even CentOS is a fork of RHEL, I can’t think of anything that was forked from Fedora.

Not quite like that. Yeah, CentOS is a fork, kinda. It’s compiled from the SRPM’s of RHEL which are freely available and with added CentOS looks.

Fedora is a continuation of the Red Hat Linux which used to be the free version name earlier. RHEL on the other hand is always been a fork of some version of Red Hat Linux/Fedora as they grab the codebase from some version that is stable enough. RHEL 6 is going to base it’s functionality into Fedora 9/10 whereas current RHEL 5 bases it’s inner workings on Fedora 7 (I think it was 7, might have been 6).

Forking from Pidgin may have been spurred by the text-entry bug, but it was truly a long time coming and is probably more similar to the OpenBSD/NetBSD personality clash reason than a simply UI issue. The main Pidgin devs have a reputation for holding “their” code really close, complaining when users do things users do (like ask why x isn’t implemented or when version y will be released) and not being very accommodating of new devs.

If Carrier receives some decent support from the developing community, it has a lot of potential to become something quite superb. It also has the potential to become extremely bloated with feature creep, which the Pidgin devs have done a pretty good job of avoiding.

The whole blog posting is a bit thin. Going from the title I’d have expected a bit more on the history and background, for example: do both parts of the fork live on (as in Joomla/Mambo or *BSD)? Or has the fork more or less replaced the parent (xfree86 is pretty much dead AFAIK)? Or has the fork been reconciled? (egcs, although IIRC it was more a case of gcc being so dead that the FSF just accepted egcs as the new gcc.)

+1 for the comment about Ubuntu being a derivative instead of a fork, although it may be hair splitting.

You forgot one famous fork: gcc vs egcs. Don’t have the date in minds, it’s probably 10 years ago.

RMS did not want to include better C++ support in gcc, so a fork was created to work on C++ support and was named egcs. Eventually after 2-3 years, the gcc team stopped developing gcc and declared egcs as the new gcc.

Bluebird, that’s inaccurate. It’s more that the original one-maintainer private-repository insular development model was plainly not working (it had been five years or more since the last *minor* GCC release). This wasn’t helped by the then official maintainer using C and GNAT and not really caring terribly much about the other languages GCC supported.

So the fork was a fork of *development model* as much as codebase: everything was opened up much more, development took place in public and so on. And it worked, excellently. It wasn’t a fork of developers: the same people worked on egcs as had long worked on GCC (at least at first: egcs grew fast, though), it remained FSF-owned and employer disclaimers and copyright assignments (the cause of the Emacs/XEmacs split) were still required.

In the end the official GCC maintainer realised that he was spending a lot of his time just porting changes from egcs into GCC, and everyone agreed to redesignate egcs and make it official: the experiment was successful. Nobody left the project in a huff

Ubuntu is not really a fork of Debian. They didn’t copy Debian and then start developing their own version. One of Debian’s design goals is to allow people to build distributions on top of Debian, just like Ubuntu does. You can’t really call it a fork if Ubuntu is using Debian as it was designed to be used.

It is similar to a fork, in that they take Debian packages and modify them. But even if you call that a fork, then each release of Ubuntu is a separate fork of Debian, because each Ubuntu release goes back to Debian packages.

@drew: Gnome is not a fork of KDE. Gnome started from scratch using C language and the (C based) GTK+ because their developers felt KDE wasn’t free enough as it was based on the Qt toolkit (C++ based and therefore KDE is written in C++ too).
But they didn’t shared a single line of code (besides external libraries)

libdvdread and libdvdnav
What: libraries for accessing DVDs
When: April 2007
Why: Upstream has become unresponsive, basically dead. Some developers from MPlayer took created a fork to fix long-standing bugs and add improvements.

do these projects inherantly have a patching system?
i am not use to this mentality.
i am not saying its correct , however do you put a patch application
at the top priority? i remember downloading dll’s and exe’s at one
time but a patch to the applications doesn’t sound that safe.
maybe i am just stuck reading about patchs so often i need to get
away from it for awhile!?
does anybody go onsite anymore.
walk around a assess a clients needs?

What about vnc and it’s many variants? ORL (Olivetti & Oracle Research Lab) was bought out by AT&T. AT&T closed the lab which developed VNC. Some of the developers from AT&T left and started RealVNC. Now RealVNC has multiple forks (tightVNC, UltraVNC, etc).

Consider Pingdom

With Pingdom website monitoring you’ll be the first to know when your website is down. Whether you have a big or small website, we offer a range of options that suit you — always with a free 30-day trial.