![]() |
VOOZH | about |
We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.
Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.
Follow TNS on your favorite social media networks.
Become a TNS follower on LinkedIn.
Check out the latest featured and trending stories while you wait for your first TNS newsletter.
Open source software (OSS) projects start with the intention of creating technology that can be used for the greater good of the technical, or global, community. As a project grows and matures, it can reach a point where the goals of or perspectives on the project diverge. At times like this, project participants start thinking about a fork.
Forking an OSS project often begins as an altruistic endeavor, where members of a community seek out a different path to improve upon the project. But the irony of it is that forking is kind of like the OSS equivalent of the third rail in the subway: You really don’t want to touch it if you can help it.
Open source software developer David A. Wheeler likens forking to a parliamentary no-confidence vote or a labor strike. It can cause a lot of hard feelings for the people involved. It can even tear a community apart.
We’re not talking GitHub-style forks here, either, which are actually short-lived branches that are either pulled back upstream or simply deleted when someone finishes developing a new feature. The forks we’re talking about are when a significant number of developers in an OSS community decide to branch off from the original project in an attempt to improve upon it and eventually replace it.
So why do OSS projects fork? The simplest answer is because of differences in opinion, which could be technical or personal in nature, but there are other reasons as well. A 2012 paper by researchers Gregorio Robles and Jesús M. González-Barahona, “A Comprehensive Study of Software Forks: Dates, Reasons and Outcomes,” identified a number of key reasons for forking a project:
There’s a pretty orderly process for a how a fork proceeds. Other people have written articles and academic papers on how, why and when you should fork a project, so we won’t go into the details here. However, it should be noted that even though it’s seen as a last resort when all other options have been exhausted, forking typically results in a positive outcome.
So what are the possible outcomes when an OSS project forks? Both Wheeler and Robles and González-Barahona, who examined some 220 “significant” forks in depth, identified these potential results:
Take the FRRouting project, a recent fork of network routing software Quagga. The fork arose out of the classic technical differences in the direction of the original Quagga project, compounded by a large and growing backlog of patches waiting to be merged upstream.
“Our engineers had developed tens of man-years of improvements on the upstream project,” said JR Rivers, Chief Technology Officer and co-founder of Cumulus Networks. “We had spent years trying to get that work integrated, but due to various circumstances, the pace was slow. Others either wanted access to our work or to build on top of it, so we found ourselves in a quandary.”
When the team embarked on the fork, they set out to do things differently from the outset. According to Donald Sharp, an engineer at Cumulus Networks and a maintainer at the FRRouting project, they “focused more on building the community than working on the code.” It helped that they already had a lot of new code waiting to be released.
And so, with the code checked in, the community organized and the new project launched, the team set off on a path less often traveled, and like all forks before them, they did it for the same purpose: to take a good product that they know well and are passionate about, and try and make it better.
Feature image via Pixabay.