Fork (software development)

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. 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 (see xMule and its fork aMule).

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.

Other examples

See also

External links

See also: Fork (software development), AMule, Apple, Berkeley Software Distribution, Closed source, Command line interface, DragonflyBSD, EGCS, Emacs, Enciclopedia Libre