Fork (software) (original) (raw)

In software, 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. This is particularly common in open source software (or free software). This schism can be caused because of different goals or personality clashes. Some see forks as a weakness in Open Source, but they can demonstrate the adaptability of the model. The relationship between the different teams can be cordial or very bitter.

In a fork situation, 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 is a developer forking their own code to develop two versions, such as a windowed version and a command line version.

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.

Some projects attempt internal forks to further development. When the Mozilla suite (Seamonkey) appeared bogged down and overly beholden to Netscape's commercial needs, some Mozilla developers started a separate stripped-down browser project. This developed into Mozilla Firebird, which has been sufficiently successful to be declared the official Mozilla browser when it is ready.

Examples