Fork
Wörtlich übersetzt ist Fork das englische Wort für Gabel. In der EDV wird dieser Begriff dann verwendet, wenn sich ein Projekt bzw. ein Programm, ab einer bestimmten Stelle (bzw. eines bestimmten Zeitpunktes) aufsplittet und zwei getrennte Wege verfolgt.
Fork in der Programmierung
In der Programmierung bezeichnet man als Fork einen durch das Betriebssystem bereitgestellten Systemaufruf, durch den ein zweiter Prozess gestartet wird. Dabei läuft der zweite - auch Kind genannte - Prozess, an genau der Stelle weiter, an der auch der Ursprungsprozess (auch Elternprozess genannt) weiterläuft. Die Daten des ersten Prozesses werden für den zweiten Prozess kopiert und stehen für diesen nun getrennt zur Verfügung. Der geforkte Kinds-Prozess ist immer ein vollwertiger Prozess ohne Einschränkung. Forking ist ein ähnliches Konzept wie Threading, beide Konzepte dienen der Parallelisierung von Abläufen. Ein gutes Beispiel für Forking innerhalb eines Programmes, wäre das Samba-Serverprojekt, dessen Grundlage lautet: "Jeder Client ein Prozess".
Siehe auch: Nebenläufigkeit
Fork im Kontext von Softwareprojekten
In der Softwareentwicklung bezeichnet ein Fork die Aufspaltung eines Projektes. Dabei fertigt ein Entwickler, bzw. eine Gruppe von Entwicklern eine Kopie des Projektes an, die dann unabhängig von dem ursprünglichen Projekt weiterentwickelt wird. Gründe für einen Fork können verschiedene Ziele für das Projekt, Uneinigkeiten in der technischen Ausführung und persönliche Unstimmigkeiten zwischen den Entwicklern sein.
Zum Zeitpunkt eines Forks erhalten beide Gruppierungen die gleichen intellektuellen Rechte. Typischerweise erhält jedoch nur die größere Gruppe oder die, in der der ursprüngliche Cheftentwickler verbleibt den Originalnamen des Projektes und das damit verbundene soziale Kapital.
In der Regel führt ein Fork zu zwei verschiedenen, untereinander inkompatiblen Produkten. Manchmal werden die beiden Projekte später wieder zusammengeführt, manchmal werden gute Ideen ausgetauscht, manchmal besteht nach dem Fork keine Verbindung mehr zwischen den Projekten. Ein Fork kann sein Ursprungsprojekt überdauern und an Popularität übersteigen.
Forks tauchen überwiegend in freie Software-Projekten auf, da bei diesen jeder das Recht zur Weiterentwicklung und Veränderung besitzt. Manche sehen die Bildung von Forks als Schwäche der freien Software, da die einen Fork üblicherweise begleitenden Diskussionen viel menschliche Arbeitszeit und Nerven kosten, die somit nicht mehr dem eigentlichen Projekt gewidmet werden können. Es kann auch bei closed Source-Projekten zu Forks kommen, wenn mehrere Firmen zusammenarbeiten und sich die Rechte an dem Produkt teilen.
Beispiele für Forks samt Weblinks
- Der Editor XEmacs ist ein Fork von Emacs.
- Weblink (englisch): Gegenüberstellung von XEmacs und Emacs, aus Sicht der XEmacs-Entwickler.
- Der Compiler EGCS war ein Fork vom GCC.
- Weblink (englisch): Ankündigung des „EGCS Project“.
- Der Internetbrowser Mozilla hat viele Forks, einige davon sind Mozilla Firefox und Galeon, welcher wiederum geforkt wurde: Epiphany.
- Weblink (englisch): Die Geschichte von Galeon, inklusive des Epiphany-Forks.
- Der Multimediaplayer MPlayerXP ist ein Fork von MPlayer.
- Weblink (englisch): Ankündigung des Forks und die freundliche Antwort von Arpi, dem Chefentwickler von MPlayer.
- Pretty Good Privacy wurde außerhalb der USA geforkt, um restriktive Exportgesetze bezüglich kryptografischer Software zu umgehen.
- Das proprietäre NTFS-Dateisystem basiert auf HPFS.
- Die betriebssystemübergreifende Filesharing-Software aMule (eDonkey-Netzwerk) ging aus xMule hervor.
- Enciclopedia Libre ist ein Fork der spanischsprachigen Wikipedia.
- Weblink (spanisch): Diskussion auf der spanischen Wikipedia zu dem Fork.
Siehe auch: Derivat (Software)