language-icon Old Web
English
Sign In

Fork (software development)

In software engineering, a project fork happens when developers take a copy of source code from one software package and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a development branch, but also a split in the developer community, a form of schism.Creating a branch 'forks off' a version of the program.The freedom to distribute copies of your modified versions to others (freedom 3). By doing this, you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.3. Derived Works: The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.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. In software engineering, a project fork happens when developers take a copy of source code from one software package and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a development branch, but also a split in the developer community, a form of schism. Free and open-source software is that which, by definition, may be forked from the original development team without prior permission, without violating copyright law. However, licensed forks of proprietary software (e.g. Unix) also happen. The word 'fork' has been used to mean 'to divide in branches, go separate ways' as early as the 14th century. In the software environment, the word evokes the fork system call, which causes a running process to split itself into two (almost) identical copies that (typically) diverge to perform different tasks. In the context of software development, 'fork' was used in the sense of creating a revision control 'branch' by Eric Allman as early as 1980, in the context of SCCS: The term was in use on Usenet by 1983 for the process of creating a subgroup to move topics of discussion to. 'Fork' is not known to have been used in the sense of a community schism during the origins of Lucid Emacs (now XEmacs) (1991) or the BSDs (1993–1994); Russ Nelson used the term 'shattering' for this sort of fork in 1993, attributing it to John Gilmore. However, 'fork' was in use in the present sense by 1995 to describe the XEmacs split, and was an understood usage in the GNU Project by 1996. Free and open-source software may be legally forked without prior approval of those currently developing, managing, or distributing the software per both The Free Software Definition and The Open Source Definition: 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:

[ "Operating system", "Programming language", "Utility model", "Fork (system call)", "Structural engineering", "Bolitotherus cornutus" ]
Parent Topic
Child Topic
    No Parent Topic