Definition „Projekt-Abspaltung“ Was ist ein Fork?

Autor / Redakteur: chrissikraus / Stephan Augsten |

Wenn man ein neues, eigenständiges Projekt auf Basis eines bestehenden Projekts erstellt, spricht man in der Software-Entwicklung von einem Fork. Das abgespaltene Projekt verfolgt eigene Ziele und entwickelt sich unabhängig von seinem Ursprung.

Anbieter zum Thema

Als Abspaltung eines Projekts wird jeder Fork in eine eigene Richtung weiterentwickelt.
Als Abspaltung eines Projekts wird jeder Fork in eine eigene Richtung weiterentwickelt.
(Bild: geraldfriedrich2 - Pixabay.com / CC0 )

Der Begriff Fork kommt aus dem Englischen und bedeutet Gabel oder Gabelung. In der Software-Entwicklung kann man sich das wie eine neue Abzweigung von einem bestehenden Weg vorstellen: Von einem Ursprungsprojekt spaltet sich ein neues Projekt ab.

Beide Projekte entwickeln sich ab diesem Zeitpunkt voneinander getrennt und teils in sehr unterschiedliche Richtungen. Jedes so neu entstandene Projekt ist ein Fork des ursprünglichen Projekts und baut auf dessen Quellcode auf. Auf Deutsch spricht man auch von einer Abspaltung. Im rechtlichen Kontext wird der Fork als Derivat bezeichnet.

Ein Fork beginnt sein Dasein als exakte Kopie des Ursprungsprojekts. Normalerweise gibt man dem neuen Projekt einen eigenen Namen und grenzt es somit von seinem Ursprung ab. Ab jetzt entwickelt es sich unabhängig; man entfernt, verändert oder ergänzt den Quellcode so, wie man es für nötig hält. Es ist möglich, aber eher unwahrscheinlich, dass ein Fork wieder mit seinem Ursprungsprojekt zusammengeführt wird.

Warum spaltet man Projekte ab?

Die Abspaltung vom ursprünglichen Projekt kann viele Gründe haben. In der Regel geht es darum, dass verschiedene Entwickler ein Projekt in unterschiedliche Richtungen entwickeln möchten. Das muss nicht böswillig sein. Gerade bei quelloffener Software teilt der Urheber seinen Quellcode mit anderen Entwicklern und ermutigt andere dazu, eigene Ableger seines Programms zu entwerfen. Auch bei proprietärer Software sind Forks möglich, sofern die entsprechenden Rechte vorhanden sind.

Manchmal ist das Ursprungsprojekt hingegen schon längere Zeit inaktiv sind. Mit einem neuen Fork startet man gewissermaßen den Versuch, dem Projekt neues Leben einzuhauchen, indem man es zum Beispiel für modernere Plattformen anpasst. Oder man ahnt, dass das schlummernde Ursprungsprojekt bald stillgelegt werden könnte und möchte das Projekt erhalten, also unter neuem Namen weiterführen.

Natürlich kann es auch passieren, dass sich die Entwickler eines Projekts nicht mehr einig werden, in welche Richtung sie die Software entwickeln möchten. Oder es entstehen Spannungen anderer Natur, beispielsweise wenn der Eindruck entsteht, dass ein Projekt zunehmend vernachlässigt wird. Sofern es die Lizenz zulässt, können solche Spannungen zur Abspaltung eines neuen Projekts führen. Beispiel: LibreOffice ist ein Fork von OpenOffice.org, der aufgrund der Unzufriedenheit ehemaliger OpenOffice.org-Entwickler entstand.

Forks bei quelloffener und freier Software

Sehr häufig handelt es sich bei Forks um Ableger von Open-Source-Software oder freier Software, die nach ganz bestimmten Vorstellungen eines Entwicklers oder einer Gruppe weiterentwickelt werden sollen. Vielleicht soll der Schwerpunkt mehr auf die grafische Benutzeroberfläche gelegt oder die bestehende Software um neue Funktionen ergänzt werden.

Egal worum es geht, der Urheber der Software hat keine absehbaren Pläne, diese Änderungen umzusetzen - man muss also ein eigenes Projekt auf Basis des ursprünglichen Codes beginnen. In der Regel kann jeder Open Source Software nach seinen Wünschen weiterentwickeln und somit einen eigenen Fork erzeugen.

Fork vs. Branch

In der Versionsverwaltung von Projekten gibt es ein Konzept, das dem Fork auf den ersten Blick ähnelt: Branches. Auch sie zweigen von einem Hauptprojekt ab und werden mitunter parallel mit dem Hauptentwicklungszweig entwickelt. Allerdings bleiben sie Teil des Projekts und werden häufig zu einem späteren Zeitpunkt wieder mit dem Hauptentwicklungszweig zusammengeführt.

Ihr Zweck ist zum Beispiel die parallele Entwicklung mehrerer Hauptversionen einer Software, die in unterschiedlichen Versionen bei Kunden im Einsatz ist. Ein Branch trägt also zur Weiterentwicklung des ursprünglichen Projekts bei, während ein Fork ein gänzlich neues Projekt beginnt.

Das Recht zur Abspaltung

Bei quelloffener und freier Software ist es in der Regel immer gestattet, dass der Quellcode für eine Weiterentwicklung oder Veränderung herangezogen werden darf. Hier sind aber unbedingt Copyleft-Lizenzbedingungen wie die GNU GPL zu beachten. Es ist meist sogar erwünscht, dass solche Software verändert und mit den so entstandenen Neuerungen weiterverbreitet wird. Daher finden sich die meisten Derivate bei dementsprechend lizenzierten Softwareprojekten.

Bei Software ohne öffentlich zugänglichen Quellcode darf nicht jedermann eigene Forks erstellen. Nur wer die Rechte an der Software hat, darf eigene Projekte abspalten. Das kann zum Beispiel der Fall sein, wenn mehrere Firmen gemeinsam an einem Projekt arbeiten und sich die Rechte teilen.

Allgemein gilt: Wenn die Lizenz der Software nicht explizit vorsieht, dass man Derivate erstellen und weitergeben darf, ist das im Normalfall verboten. Der Rechteinhaber könnte aber eine Erlaubnis aussprechen, die Forks seiner Software unter bestimmten Bedingungen oder für bestimmte Personen erlaubt.

(ID:45468024)