Penguin
Annotated edit history of Fork version 14, including all changes. View license author blame.
Rev Author # Line
11 AristotlePagaltzis 1 # !! A split or divergence in a software project
3 JohnMcPherson 2
11 AristotlePagaltzis 3 Projects fork when one or more groups with different visions from the original project team decide to take a copy of the SourceCode and develop it to their own ends. The SourceCode must be sufficiently [Free] to begin with for this to happen.
3 JohnMcPherson 4
13 AristotlePagaltzis 5 Being able to do this is both a blessing and a curse. Halving the number of developers working on the source for a project more than halves the productivity of each group due to the NetworkEffect – a powerful deterrent to forking. However, a fork can also serve to dissolve the tension in the direction of the previously united project, letting each of the forks focus on a particular agenda. In many (maybe most) cases, all but one of the forks eventually wither and die, and the surviving fork pushes onward with a more well-defined vision that has greater consensus. Forking may therefore contribute to the health of a project in the long term.
6 LawrenceDoliveiro 6
11 AristotlePagaltzis 7 In rare cases (such as the Beryl/Compiz split or [GCC]/egcs), the projects eventually reunite.
6 LawrenceDoliveiro 8
12 JohnMcPherson 9 Well-known examples of forks include:
6 LawrenceDoliveiro 10
11 AristotlePagaltzis 11 * [GCC] and egcs
12 * [Mandrake] and RedHat (I think Mandrake was originally RedHat with [KDE]?)
13 * [Emacs] and XEmacs, both branches of which continue to thrive to this day
14 * [XFree86] and [XOrg], where an unpopular change to the licensing terms of the former caused a wholesale defection of developers, distributors and users to the latter
12 JohnMcPherson 15 * X Consortium and [XFree86], same as previous example, but XFree86 on the other side, and years earlier :)
11 AristotlePagaltzis 16 * More recently, the forking of [cdrkit] off from <tt>cdrtools</tt>, because of a licence change to the latter. It remains to be seen how this one will play out
17 * [RPM] and RPM5 (see [http://www.linux.com/articles/114339])
14 LawrenceDoliveiro 18 * A new entry: Debian is moving from [glibc to eglibc|http://lwn.net/Articles/332000/].
3 JohnMcPherson 19
11 AristotlePagaltzis 20 Some interesting analyses of the pros and cons of forking are:
3 JohnMcPherson 21
11 AristotlePagaltzis 22 * Rick Moen's [Fear of Forking|http://linuxmafia.com/faq/Licensing_and_Law/forking.html], subtitled "Why Linux Won't Fork, And why being able to fork is still A Good Thing."
23 * ["Forking: it could even happen to you"|http://www.newsforge.com/article.pl?sid=00/10/24/0211204] by Tina Gasperson at NewsForge.
24 * [Appendix A.6|http://www.dwheeler.com/oss_fs_why.html#forking] of David Wheeler's ["Why Open Source/Free Software?"|http://www.dwheeler.com/oss_fs_why.html] essay.
4 PerryLorier 25
11 AristotlePagaltzis 26 See also OpenSource.
27
28 # !! A system call for creating a new process
29
30 The [Unix] way of creating new processes: when a process calls [fork(2)], the [Kernel] makes a copy of the process at that point. The system call returns separately in both of the processes. In the child process it returns 0, whereas in the parent process it returns the process ID of the child.