Definition „Projekt-Abspaltung“

Was ist ein Fork?

| Autor / Redakteur: chrissikraus / Stephan Augsten

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)

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.

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.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Kotlin – oder doch lieber Java?

Programmiersprache mit Potenzial

Kotlin – oder doch lieber Java?

Statisch typisiert, Cloud-nativ, JVM-kompatibel: Die Softwareschmiede JetBrains möchte mit Kotlin das bessere Java erfunden haben. Tatsächlich ist Kotlin die am schnellsten wachsende Programmiersprache und (laut einer Umfrage von RedMonk) eine der 20 beliebtesten überhaupt. lesen

GitHub Community und Repositories wachsen rasant

The State of the Octoverse Report 2019

GitHub Community und Repositories wachsen rasant

Im aktuellen „The State of the Octoverse“-Report hat GitHub interessante Zahlen zur Open-Source-Szene veröffentlicht. So ist die GitHub Community um 10 Millionen neue Nutzer auf über 40 Millionen User angewachsen. lesen

Azure DevOps Demo Generator ist Open Source

Microsoft gibt Vorlagen-Generator frei

Azure DevOps Demo Generator ist Open Source

Microsoft hat den Azure DevOps Demo Generator zum Open-Source-Projekt gemacht. Der Service dient dazu, vorlagenbasierte Projekte unter Azure DevOps zu generieren und bereitzustellen. lesen

Was ist dpkg?

Definition „Debian Package Manager“

Was ist dpkg?

Seit 1994 macht der Debian Package Manager dpkg die Installation von Softwarepaketen unter GNU/Linux-Installation smart. Metadaten im Softwarepaket und eine Datenbank im System ermöglichen dem Tool, Abhängigkeiten und Konflikte bei der Installation zu erkennen sowie eine saubere Deinstallation durchzuführen. lesen

Der Raspberry Pi 4 als Entwickler-Client

Raspi konfigurieren und einrichten

Der Raspberry Pi 4 als Entwickler-Client

Mit dem Raspberry Pi 4 ist der Raspberry Pi Foundation der große Wurf gelungen. Der Bastel-Rechner bietet sich dank verbesserter Hardware-Ausstattung nämlich förmlich als preisgünstiger Entwickler-Client und Desktop-Ersatz an. lesen

Unit-Tests für Bash-Skripte mit BATS

Bash Automated Testing System unter Unix

Unit-Tests für Bash-Skripte mit BATS

Beim Thema Software Testing stehen normalerweise die großen, „echten“ Programmiersprachen im Vordergrund – Skripte bleiben meist außen vor. Mit dem Skript-Spezialisten BATS lassen sich ganz einfach Unit-Tests für jegliche Art von Unix-Programm erstellen. lesen

Der „Stand des Octoversums 2018“

GitHub präsentiert Nutzungsstatistiken

Der „Stand des Octoversums 2018“

GitHub wächst unaufhörlich – sowohl die Anzahl der Nutzer als auch die der Beiträge. Über 31 Millionen Entwickler pflegten demnach gut 96 Millionen Code Repositories und lieferten weit mehr als eine Milliarde Contributions, sprich Beiträge, heißt es im „State oft he Octoverse“-Report. lesen

Wie man Container-Risiken minimiert

Schwachstellen-Management in Container-Infrastrukturen

Wie man Container-Risiken minimiert

Container stellen Software über unterschiedliche Plattformen und Infrastrukturen hinweg bereit, ohne an diese angepasst werden zu müssen. Dieser Artikel soll für Sicherheitsfragen rund um den Einsatz dieser Technologie sensibilisieren. lesen

Studie zur Gefahr infiltrierter Software-Lieferketten

Bedrohung aus der Software Supply Chain

Studie zur Gefahr infiltrierter Software-Lieferketten

Angriffe auf die Software-Lieferkette nehmen weltweit zu, heißt es seitens Crowdstrike. Zwei Drittel aller Unternehmen hätten bereits entsprechende Angriffe auf ihre Software Supply Chain erlebt, meldet der Cybersecurity-Spezialist mit Blick auf eine von Vanson Bourne durchgeführte Studie. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45468024 / Definitionen)