Jump to content

Archive:Project fork

From IdeaWazaWiki
Revision as of 20:02, 25 November 2005 by 80.192.83.27 (talk)
This article is about "forking" a software development project. For other uses, see fork (disambiguation).

In software engineering, a project fork or branch happens when a developer (or a group of them) takes code from a project and starts to develop independently of the rest. The term is also used more loosely to represent a similar branching of any work (for example, there are several forks of the English-language Wikipedia).

The term is particularly used in free or open source software, when a schism occurs because of different goals or personality clashes. In a fork of this type, both parties inherit identical intellectual rights but typically only the larger group, or that containing the original architect, will retain the full original name and its associated social capital. Thus there is a reputation penalty associated with forking.

This can happen in closed source software as well, if the rights to the common code are shared; but this is rarer, as usually there are strict rules about ownership of the code. More commonly in closed source software, a developer forks its own code to develop two versions, such as a windowed version and a command line version.

Another sort of fork is a standard practice in many projects: to fork a stable or release version which will be modified only for bug fixes, while a development tree continues to get new features added. This is common practice in the Linux kernel, for instance, but has been misrepresented occasionally in the trade press as the more problematic sort of fork described above. [1]

In some cases, a fork can merge back into the original project or replace it. EGCS (Experimental/Enhanced GNU Compiler System) was a fork from GCC which proved more vital than the original project and was eventually "blessed" as the official GCC project.

In the world of free and open source software, forks are most typically friendly. For instance, one could consider the distributed development style of Linux to be the cross pollination of many different developers forks of the same codebase. Part of what made BitKeeper so appealing to Linus Torvalds was its ability to make sense of all of these forks. In the case of parallel development, like the Linux project, it often boils down to a question of trademark. Linus owns the trademark to "Linux" and as a result his fork is Linux. Often two entities will collaborate on the same codebase, and market the effort under different trademarks. Since it is possible to have a fork without having any change in the codebase, forking can be a friendly collaborative process or a violent one with hurt feelings and, potentially, lawsuits.

Views on forking

Some see forks as a weakness in open source, but others believe that they demonstrate the adaptability of the model. The relationship between the different teams can be cordial or very bitter. For instance, because the author of the LMule file-sharing program for Linux was uninterested in porting it to other systems, the xMule team started a "friendly fork" to do so. Disagreements among the developers led to xMule itself being forked into aMule, and the tension between the developers remains high.

On the matter of forking, the Jargon File says:

"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 fissionings 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."

Because of the ease of forking a project but the challenge of continuing to develop and support it, it's common for forks without extensive resources to become inactive — for instance, see GoneME, a fork of GNOME by a former developer, which was discontinued shortly despite attracting some publicity. Some well-known forks have enjoyed great success, however, such as the X.Org X11 server, a fork from XFree86. Most distributions have switched to X.Org, and overall X11 development has sped up as well.

Other examples

  • Enciclopedia Libre is a fork from the Spanish-language Wikipedia to evade possible advertising.
  • Pretty Good Privacy was forked outside of the United States to free it from the restrictive laws on the exportation of cryptographic software.
  • The many varieties of proprietary UNIX — all derived from AT&T UNIX and all called "UNIX", but increasingly mutually incompatible. See UNIX wars.
  • The game NetHack has spawned a number of variants using the original code, notably SLASH'EM. (Nethack was influenced by Rogue, but its code was written independently.)
  • OpenSSH was a fork from SSH, which happened because the license for SSH 2.x was non-free (even though the source was available), so an older version of SSH 1.x, the last to have been licensed as free software, was forked. Within months, virtually all Linux distributions, BSD versions and even some proprietary Unixes had replaced SSH with OpenSSH.
  • Apple Computer's WebCore is a fork of KDE's KHTML 3.1. This technology is used in two web browsers: Safari and Konqueror. In this case, open source code became integral to a proprietary project.

See also

References

de:Fork fr:Fork pl:Fork