Fork (ontwikkeling)

Uit Wikipedia, de vrije encyclopedie
De historische ontwikkeling van Unix.

In softwareontwikkeling wordt over fork (ofwel: afsplitsing) gesproken wanneer op basis van de broncode van een bestaand opensourcesoftwarepakket een nieuw en daarna onafhankelijk project wordt gestart.

Vrije of opensourcesoftware is per definitie software waarvan het mogelijk is een afsplitsing te starten zonder toestemming van de originele maker. Gelicentieerde afsplitsingen van propriëtaire software komen echter ook voor (een voorbeeld is Unix).

Branching[bewerken | brontekst bewerken]

Een veelvoorkomende vorm van afsplitsing, die intern is binnen een project, is een stabiele (stable) of vrijgegeven (release)versie, waarin uitsluitend nog programmeerfouten (bugs) worden verbeterd. Deze bestaan naast de ontwikkelversie, waar nieuwe functionaliteit wordt ontwikkeld. Dergelijke splitsingen worden meestal aangeduid als "branches" (aftakkingen, hoewel ook in het Nederlands de Engelse term het meest wordt gebruikt), om de negatieve bijbetekenis van het woord fork te vermijden.[bron?]

Vrije software en opensourcesoftware[bewerken | brontekst bewerken]

De definitie van vrije software staat het toe af te splitsen zonder voorgaande toestemming ("Vrijheid 3: De vrijheid om het programma te verbeteren en daarna te verspreiden ten bate van de hele gemeenschap. Beschikbaarheid van de broncode is hiervoor eveneens noodzakelijk.". Ook bij open source is dit het geval: "Opensourcesoftware is software waarvan de broncode is gepubliceerd en vrij beschikbaar is voor het publiek, waardoor iedereen het vrijelijk kan kopiëren, aanpassen en verspreiden zonder kosten aan auteursrechten en toeslagen".

In vrije software is een afsplitsing meestal het resultaat van een meningsverschil of van persoonlijke conflicten. Beide partijen gaan verder met vrijwel identieke broncode, maar meestal behoudt de grootste groep of de groep waar de originele softwarearchitect deel van uitmaakt de oorspronkelijke naam en de gebruikersgemeenschap. Afsplitsen heeft meestal reputatieschade tot gevolg. De relatie tussen de beide teams kan beleefd zijn (bijvoorbeeld Ubuntu en Debian), rancuneus (X.Org Server en XFree86 of cdrtools en cdrkit) of niet noemenswaardig (de meeste Linuxdistributies).

Afsplitsen wordt gezien als een uitdrukking van de vrijheid die vrije software biedt. Als zwakke punten worden beschouwd het (potentieel) dupliceren van ontwikkelwerkzaamheden en verwarring bij gebruikers over welke afsplitsing te gebruiken. Ontwikkelaars hebben altijd de mogelijkheid om samen te werken binnen vrije software, maar dit wordt niet gegarandeerd door vrije softwarelicenties. Uitsluitend toewijding van de ontwikkelaars kan hiervoor zorgen. Desondanks nemen veel ontwikkelaars wel degelijk de moeite om wijzigingen in alle relevante afsplitsingen aan te brengen, bijvoorbeeld bij de verschillende BSD-varianten.

In The Cathedral and the Bazaar (1997) wordt geopperd dat "De belangrijkste eigenschap van een afsplitsing is dat ze leidt tot concurrerende projecten waartussen later geen uitwisseling van broncode mogelijk is, en een opsplitsing van de ontwikkelgemeenschap.". Dit is echter tegenwoordig niet per definitie waar.

Soms kan een afsplitsing weer terugvloeien in het oorspronkelijke project, of het zelfs vervangen. EGCS (het 'Experimental/Enhanced GNU Compiler System), een afsplitsing van GCC, bleek vitaler dan het oorspronkelijke project en werd na verloop van tijd erkend als het officiële GCC-project. Er zijn gevallen waarin dit resultaat met opzet werd nagestreefd, zo begon Mozilla Firefox als een officieus project binnen Mozilla, dat al gauw de originele Mozilla Suite verdrong als primaire focus van ontwikkeling.

De Jargon File zegt over afsplitsen:

"Afsplitsen wordt gezien als een slechte zaak — niet alleen vanwege de verloren moeite maar vooral omdat een afsplitsing meestal samengaat met wrijving en ongenoegen tussen de groepen over zaken als legitimiteit, opvolging en ontwerp. Er is zeker sociale druk om niet af te splitsen. Hierdoor zijn belangrijke afsplitsingen (zoals de splitsing tussen GNU Emacs/XEmacs, het opsplitsen van de 386BSD-groep in drie dochterprojecten en de splitsing van korte duur tussen GCC/EGCS) zeldzaam, en worden ze afzonderlijk en in groot detail opgenomen in de hackerfolklore."

Een afsplitsing uitroepen is simpel, maar het kost veel moeite om onafhankelijke ontwikkeling en ondersteuning mogelijk te blijven maken. Afsplitsingen lopen daarom het risico om snel inactief te worden, zoals bijvoorbeeld GoneME dat een afsplitsing is van GNOME. Ondanks publicitaire aandacht lukte het de voormalige GNOME-ontwikkelaar niet om de afsplitsing in leven te houden. Er zijn echter genoeg bekende voorbeelden van afsplitsingen die wel succesvol bleken, zoals X.Org-server, een afsplitsing van XFree86. Deze afsplitsing kreeg veel bijval van ontwikkelaars en gebruikers en versnelde de ontwikkeling van X aanzienlijk.

Propriëtaire software[bewerken | brontekst bewerken]

Van propriëtaire software ligt het auteursrecht meestal bij de werkgever en niet bij de individuele software-ontwikkelaars. Afsplitsingen zijn hier dan ook gebruikelijker wanneer de eigenaar verschillende versies wil ontwikkelen, zoals een grafische versie en een versie voor gebruik vanaf de commandoregel, of versies voor verschillende besturingssystemen zoals een tekstverwerker voor IBM PC-systemen en Apple-computers. Over het algemeen bezitten dergelijke afsplitsingen dezelfde uiterlijke kenmerken en gebruikersinterface, dezelfde gegevensindeling en gelijke functionaliteit, zodat een gebruiker ongeacht het besturingssysteem met de software overweg kan en documenten tussen de verschillende systemen kan uitwisselen. Dit is zo goed als altijd een economische beslissing om een groter marktaandeel te veroveren. Derhalve wegen de extra inkomsten op tegen de hogere kosten door dubbel ontwikkelwerk.

Een uitzondering hierop zijn de vele afsplitsingen van Unix — allemaal afsplitsingen (al dan niet indirect) van AT&T Unix en allemaal bekend als "Unix". De vele verschillende versies vertonen echter steeds meer incompatibiliteit.

De BSD-licentie staat het toe dat afsplitsingen propriëtaire software worden. Volgens sommigen zorgen commerciële motivaties ervoor dat het propriëtair maken van software zo onvermijdelijk is. Enkele voorbeelden zijn Cedega en CrossOver (propriëtaire afsplitsingen van Wine), EnterpriseDB (een afsplitsing van PostgreSQL met Oracle-compatibiliteit), Fujitsu Supported PostgreSQL met een propriëtair ESM-opslagsysteem, en Netezza's propriëtaire op schaalbaarheid georiënteerde versie van PostgreSQL. Sommige van deze bedrijven geven veranderingen terug aan het oorspronkelijke, vrije project terwijl andere deze voor hun eigen concurrentievoordeel behouden.

Andere opvallende afsplitsingen[bewerken | brontekst bewerken]

  • De meeste Linuxdistributies stammen af van andere distributies, de meeste met als gemeenschappelijke voorouder Debian, Red Hat of Slackware. Omdat een groot deel van een distributie bestaat uit vrije software is de uitwisseling van ideeën en software ongehinderd. Samensmeltingen zijn zeldzaam (voorbeelden zijn United Linux en Mandriva).
  • Pretty Good Privacy kent afsplitsingen buiten de Verenigde Staten om de restrictieve wetten in de VS op het gebied van export van cryptografische technieken te vermijden.
  • Het spel NetHack kent een aantal varianten gebaseerd op de oorspronkelijke broncode, in het bijzonder Slash'EM. NetHack zelf was een afsplitsing van Hack.
  • OpenBSD is een afsplitsing van NetBSD 1.0 door Theo de Raadt
  • OpenSSH is een afsplitsing van SSH. Aanleiding voor de afsplitsing was de niet-vrije licentie op SSH 2.x (ook al was de broncode beschikbaar). Een oudere versie van SSH 1.x, de laatste versie die als vrije software was gepubliceerd, was de basis van deze afsplitsing. Binnen enkele maanden hadden zo goed als alle Linux-distributies, BSD-versies en zelfs sommige propriëtaire Unix-varianten SSH vervangen door OpenSSH.
  • DragonFly BSD is een afsplitsing van FreeBSD 4.8, een initiatief van oudgediende BSD-ontwikkelaar Matt Dillon, vanwege meningsverschillen over de technische richting van FreeBSD 5.
  • Adempiere is een gemeenschaps-gedragen afsplitsing van Compiere 2.5.3b, met als aanleiding onenigheid over de commerciële en technische richting van Compiere Inc.
  • NeoOffice is een afsplitsing van OpenOffice.org, met een afwijkende licentie (GPL in plaats van LGPL), vanwege onenigheid over de licentie en de beste methode om OpenOffice.org te porten naar Mac OS X.
  • Funpidgin is een afsplitsing van de instant-messaging-software Pidgin, vanwege onenigheid over automatische aanpassing van de grootte van het tekst-invoerveld en een gebrek aan andere functionaliteit die door gebruikers werd gevraagd.

Cryptovaluta's[bewerken | brontekst bewerken]

Een cryptovaluta (en daarmee zijn software) splitst soms in twee versies, of anders gezegd, van een cryptovaluta splitst soms een andere af. Zo splitste Bitcoin Cash in 2017 af van Bitcoin.

Referenties[bewerken | brontekst bewerken]