Forking Free and Open Source Software
Free and open source software may be legally forked without the approval of those currently managing a software project or distributing the software, per the definitions of "free software and "open source"":
- "Freedom 3: The freedom to improve the program, and release your improvements to the public, so that the whole community benefits"
- "3. Derived Works: Redistribution of modifications must be allowed, to allow legal sharing and to permit new features or repairs".
In free software, forks often result from a schism over different goals or personality clashes. In a fork, both parties assume nearly identical code bases, but typically only the larger group, or whoever controls the Web site, will retain the full original name and the associated user community. Thus, there is a reputation penalty associated with forking. The relationship between the different teams can be cordial or very bitter.
Eric S. Raymond, in his essay Homesteading the Noosphere, stated that "The most important characteristic of a fork is that it spawns competing projects that cannot later exchange code, splitting the potential developer community". He notes in the Jargon File:
Forking is considered a Bad Thing—not merely because it implies a lot of wasted effort in the future, but because forks tend to be accompanied by a great deal of strife and acrimony between the successor groups over issues of legitimacy, succession, and design direction. There is serious social pressure against forking. As a result, major forks (such as the Gnu-Emacs/XEmacs split, the fissioning of the 386BSD group into three daughter projects, and the short-lived GCC/EGCS split) are rare enough that they are remembered individually in hacker folklore.
David A. Wheeler notes four possible outcomes of a fork, with examples:
- The death of the fork. This is by far the most common case. It is easy to declare a fork, but considerable effort to continue independent development and support.
- A re-merging of the fork (e.g., egcs becoming "blessed" as the new version of gcc).
- The death of the original (e.g. the X.Org Server succeeding and XFree86 dying).
- Successful branching, typically with differentiation (e.g., OpenBSD and NetBSD).
More recently, distributed revision control (DVCS) tools have popularised a less emotive use of the term "fork", blurring the distinction with "branch". With a DVCS such as Mercurial or Git, the normal way to contribute to a project is to first branch the repository, and later seek to have your changes integrated with the main repository. Sites such as Github, Bitbucket and Launchpad provide free DVCS hosting expressly supporting independent branches, such that the technical, social and financial barriers to forking a source code repository are massively reduced.
Forks often restart version numbering from 0.1 or 1.0 even if the original software was at version 3.0, 4.0, or 5.0. An exception is when the forked software is designed to be a drop-in replacement of the original project, e.g. MariaDB for MySQL or LibreOffice for OpenOffice.org.
Read more about this topic: Fork (software Development)
Famous quotes containing the words free, open and/or source:
“The free man is a warrior.How is freedom measured among individuals, among peoples? According to the resistance that must be overcome, according to the trouble it takes to stay on top. The highest type of free man must be sought where the highest resistance is constantly overcome: five steps away from tyranny, close to the threshold of the danger of servitude.”
—Friedrich Nietzsche (18441900)
“The world is a puzzling place today. All these banks sending us credit cards, with our names on them. Well, we didnt order any credit cards! We dont spend what we dont have. So we just cut them in half and throw them out, just as soon as we open them in the mail. Imagine a bank sending credit cards to two ladies over a hundred years old! What are those folks thinking?”
—Sarah Louise Delany (b. 1889)
“Because relationships are a primary source of self-esteem for girls and women, daughters need to know they will not lose our love if they speak up for what they want to tell us how they feel about things. . . . Teaching girls to make specific requests, rather than being indirect and agreeable, will help them avoid the pitfalls of having to be manipulative and calculating to get what they want.”
—Jeanne Elium (20th century)