Jump to content

Archive:Project fork: Difference between revisions

From IdeaWazaWiki
wikademia>Kry
As reflected on lmule page, friendly fork is not exactly the proper description.
wikademia>Wikademia
 
(130 intermediate revisions by 91 users not shown)
Line 1: Line 1:
:''This article is about "forking" a [[software development]] project. For other uses, see [[fork (disambiguation)]].''
In software engineering, a '''project fork'''  happens when developers take a copy of source code from one Computer software|software package and start independent development on it, creating a distinct piece of software.


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]]).
free software|Free or open source software is that which may be forked from the original development team. However, licensed forks of proprietary software (''e.g.'' Unix) also happen.
{{ntnes}}
== Branching ==
A kind of fork that is standard practice in many projects is a '''''stable''''' or '''''release''''' version, modified only for bug fixes, while a ''development'' tree develops new features. Such forks are usually referred to as "branching (software)|branches".


The term is particularly used in [[free software|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 [[software architecture|architect]], will retain the full original name and its associated [[social capital]]. Thus there is a reputation penalty associated with forking.
==Free software==
Free or open source software may be forked with no prior permission, per the definitions of "free software" (''"Freedom 3: The freedom to improve the program, and release your improvements to the public, so that the whole community benefits"'') and "Open Source Definition|open source" (''"3. Derived Works: redistribution of modifications must be allowed. (To allow legal sharing and to permit new features or repairs.)"'').


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 [[Window (computing)|windowed]] version and a [[command line interface|command line]] version.
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 (''e.g.'', Ubuntu and Debian) or very bitter (X.Org Server and XFree86, or cdrtools and cdrkit).
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. [http://www.groklaw.net/article.php?story=20041121124609671]


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 [[GNU Compiler Collection|GCC]] which proved more vital than the original project and was eventually "blessed" as the official GCC project.
Forks are considered an expression of the freedom made available by free software, but a weakness since they duplicate development efforts and can confuse users over which forked package to use. Developers have the option to collaborate and pool resources with free software, but it is not ensured by free software licenses, only by a commitment to cooperation.


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.
''The Cathedral and the Bazaar'' stated in 1997 [http://www.catb.org/~esr/writings/cathedral-bazaar/homesteading/ar01s03.html] that ''"The most important characteristic of a fork is that it spawns competing projects that cannot later exchange code, splitting the potential developer community"''. However, this is not common present usage.


==Views on forking==
In some cases, a fork can merge back into the original project or replace it. EGCS (the Experimental/Enhanced GNU Compiler System) was a fork from GNU Compiler Collection|GCC which proved more vital than the original project and was eventually "blessed" as the official GCC project. Some have attempted to invoke this effect deliberately, ''e.g.'', Mozilla Firefox started as an unofficial project within Mozilla that soon replaced the Mozilla Suite as the focus of development.


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


On the matter of forking, the [[Jargon File]] says:
It is easy to declare a fork, but can require considerable effort to continue independent development and support. As such, forks without adequate resources can soon become inactive, ''e.g.'', GoneME, a fork of GNOME by a former developer, which was soon discontinued despite attracting some publicity. Some well-known forks have enjoyed great success, however, such as the X.Org Server|X.Org X Window System|X11 server, a fork from XFree86 which gained widespread support from developers and users and notably sped up X development.
:"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|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 shortly discontinued despite attracting some publicity. Some well-known forks have enjoyed great success, however, such as the [[X.Org Server|X.Org]] [[X Window System|X11]] server, a fork from [[XFree86]]. Most distributions have switched to X.Org, and overall [[X11]] development has sped up as well.
==Proprietary software==


==Other examples==
In proprietary software, the copyright is usually held by the employing entity, not by the individual software developers.  Proprietary code is thus more commonly forked when the owner needs to develop two or more versions, such as a Window (computing)|windowed version and a command line interface|command line version, or versions for differing operating systems, such as a wordprocessor for IBM PC compatible machines and Apple Macintosh|Macintosh computers. Generally, such internal forks will concentrate on having the same look, feel, data format, and behavior between platforms so that a user familiar with one can also be productive or share documents generated on the other. This is almost always an economic decision to generate a greater market share and thus pay back the associated extra development costs created by the fork.


*[[Enciclopedia Libre]] is a fork from the [http://es.wikipedia.org Spanish-language Wikipedia] to evade possible advertising.
A notable proprietary fork not of this kind is the many varieties of proprietary Unix &mdash; all derived from AT&T Unix and all called "Unix", but increasingly mutually incompatible.<!-- see the see-also for the reference for this --> ''See'' UNIX wars.
*[[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|UNIX]] &mdash; 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 (computer game)|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 browser]]s: [[Safari (web browser)|Safari]] and [[Konqueror]]. In this case, [[open source]] code became integral to a [[proprietary software|proprietary]] project.


==See also==
The BSD licenses permit forks to become proprietary software, and some say that commercial incentives thus make proprietisation almost inevitable. Examples include Mac OS X (based on Nextstep and thus BSD), Cedega and CrossOver (proprietary forks of Wine (software)|Wine),
*[[revision control]]
[http://www.enterprisedb.com EnterpriseDB] (a fork of PostgreSQL, adding Oracle compatibility features), [http://www.fastware.com.au/docs/FujitsuSupportedPostreSQLWhitePaperV1_02.pdf Fujitsu Supported PostgreSQL]  
with their proprietary ESM storage system, and [http://www.netezza.com/media/2004/Weblog.htm Netezza]'s proprietary highly scalable derivative of PostgreSQL. Some of these vendors contribute back changes to the community project, while some keep their changes as their own competitive advantages.


==References==
==Other notable forks==
*[http://linuxmafia.com/faq/Licensing_and_Law/forking.html Fear of forking] (Rick Moen)
*[http://www.dwheeler.com/oss_fs_why.html#forking Forking] ([[David A. Wheeler]])


[[Category:Software engineering]]
*Most Linux distributions are descended from other distributions, most being traceable back to Debian, Red Hat Linux|Red Hat or Slackware. Since most of the content of a distribution is free software, ideas and software interchange freely as is useful to the individual distribution. Merges (''e.g.'', United Linux or Mandriva) are rare.
*Pretty Good Privacy was forked outside of the United States<!-- see that article for ref--> to free it from restrictive US laws on the export of cryptography|exportation of cryptographic software.
*The game ''NetHack'' has spawned a number of variants using the original code, notably ''Slash'EM'', and was itself a fork of ''Hack (video game)|Hack''.
*OpenBSD was a fork of NetBSD 1.0 by Theo de Raadt
*OpenSSH was a fork from Secure Shell|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.
*DragonFly BSD was forked from FreeBSD 4.8 by long-time FreeBSD developer Matt Dillon (computer scientist)|Matt Dillon, due to disagreement over FreeBSD 5's technical direction.
*Adempiere is a community maintained fork of Compiere 2.5.3b, due to disagreement with commercial and technical direction of Compiere Inc.
*NeoOffice is a fork of OpenOffice.org, with an incompatible license (GPL rather than LGPL), due to disagreements about licensing and about the best method to porting|port OpenOffice.org to Mac OS X.
*MiaCMS (and Lite) is a fork of Mambo (and Lite). As well as Joomla! 1.0.xx is a fork.


[[de:Fork (Projektaufspaltung)]]
==External links==
[[fr:Fork]]
* [http://linuxmafia.com/faq/Licensing_and_Law/forking.html Fear of forking] - An essay about forking in [[free software]] projects, by Rick Moen
[[pl:Fork]]
* [http://www.dwheeler.com/oss_fs_why.html#forking Forking] ([[David A. Wheeler]])
* [http://www.usemod.com/cgi-bin/mb.pl?RightToFork Right to Fork] at [[Meatball Wiki]].
 
[[Category:Software development]]
[[Category:Software forks| ]]

Latest revision as of 17:27, 12 June 2009

In software engineering, a project fork happens when developers take a copy of source code from one Computer software|software package and start independent development on it, creating a distinct piece of software.

free software|Free or open source software is that which may be forked from the original development team. However, licensed forks of proprietary software (e.g. Unix) also happen.

Branching

A kind of fork that is standard practice in many projects is a stable or release version, modified only for bug fixes, while a development tree develops new features. Such forks are usually referred to as "branching (software)|branches".

Free software

Free or open source software may be forked with no prior permission, per the definitions of "free software" ("Freedom 3: The freedom to improve the program, and release your improvements to the public, so that the whole community benefits") and "Open Source Definition|open source" ("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 (e.g., Ubuntu and Debian) or very bitter (X.Org Server and XFree86, or cdrtools and cdrkit).

Forks are considered an expression of the freedom made available by free software, but a weakness since they duplicate development efforts and can confuse users over which forked package to use. Developers have the option to collaborate and pool resources with free software, but it is not ensured by free software licenses, only by a commitment to cooperation.

The Cathedral and the Bazaar stated in 1997 [1] that "The most important characteristic of a fork is that it spawns competing projects that cannot later exchange code, splitting the potential developer community". However, this is not common present usage.

In some cases, a fork can merge back into the original project or replace it. EGCS (the Experimental/Enhanced GNU Compiler System) was a fork from GNU Compiler Collection|GCC which proved more vital than the original project and was eventually "blessed" as the official GCC project. Some have attempted to invoke this effect deliberately, e.g., Mozilla Firefox started as an unofficial project within Mozilla that soon replaced the Mozilla Suite as the focus of development.

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

It is easy to declare a fork, but can require considerable effort to continue independent development and support. As such, forks without adequate resources can soon become inactive, e.g., GoneME, a fork of GNOME by a former developer, which was soon discontinued despite attracting some publicity. Some well-known forks have enjoyed great success, however, such as the X.Org Server|X.Org X Window System|X11 server, a fork from XFree86 which gained widespread support from developers and users and notably sped up X development.

Proprietary software

In proprietary software, the copyright is usually held by the employing entity, not by the individual software developers. Proprietary code is thus more commonly forked when the owner needs to develop two or more versions, such as a Window (computing)|windowed version and a command line interface|command line version, or versions for differing operating systems, such as a wordprocessor for IBM PC compatible machines and Apple Macintosh|Macintosh computers. Generally, such internal forks will concentrate on having the same look, feel, data format, and behavior between platforms so that a user familiar with one can also be productive or share documents generated on the other. This is almost always an economic decision to generate a greater market share and thus pay back the associated extra development costs created by the fork.

A notable proprietary fork not of this kind is the many varieties of proprietary Unix — all derived from AT&T Unix and all called "Unix", but increasingly mutually incompatible. See UNIX wars.

The BSD licenses permit forks to become proprietary software, and some say that commercial incentives thus make proprietisation almost inevitable. Examples include Mac OS X (based on Nextstep and thus BSD), Cedega and CrossOver (proprietary forks of Wine (software)|Wine), EnterpriseDB (a fork of PostgreSQL, adding Oracle compatibility features), Fujitsu Supported PostgreSQL with their proprietary ESM storage system, and Netezza's proprietary highly scalable derivative of PostgreSQL. Some of these vendors contribute back changes to the community project, while some keep their changes as their own competitive advantages.

Other notable forks

  • Most Linux distributions are descended from other distributions, most being traceable back to Debian, Red Hat Linux|Red Hat or Slackware. Since most of the content of a distribution is free software, ideas and software interchange freely as is useful to the individual distribution. Merges (e.g., United Linux or Mandriva) are rare.
  • Pretty Good Privacy was forked outside of the United States to free it from restrictive US laws on the export of cryptography|exportation of cryptographic software.
  • The game NetHack has spawned a number of variants using the original code, notably Slash'EM, and was itself a fork of Hack (video game)|Hack.
  • OpenBSD was a fork of NetBSD 1.0 by Theo de Raadt
  • OpenSSH was a fork from Secure Shell|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.
  • DragonFly BSD was forked from FreeBSD 4.8 by long-time FreeBSD developer Matt Dillon (computer scientist)|Matt Dillon, due to disagreement over FreeBSD 5's technical direction.
  • Adempiere is a community maintained fork of Compiere 2.5.3b, due to disagreement with commercial and technical direction of Compiere Inc.
  • NeoOffice is a fork of OpenOffice.org, with an incompatible license (GPL rather than LGPL), due to disagreements about licensing and about the best method to porting|port OpenOffice.org to Mac OS X.
  • MiaCMS (and Lite) is a fork of Mambo (and Lite). As well as Joomla! 1.0.xx is a fork.