Fork
Från Rilpedia
- För systemanropet i Unix, se fork (systemanrop).
Fork är en avgrening av ett programvararuprojekt. Denna uppkommer inom rörelsen för öppen källkod och fri programvara i situationer då en kraftig grupp vill driva projektet åt ett annat håll än majoriteten eller de som administrerar projektet. Denna grupp tar då en kopia på hela källkoden och fortsätter jobba efter sina egna principer, utan att följa den policy och design som gäller för moderprojektet.
Då det gäller mer komplicerad programvara kräver utvecklande och felrättning mycket arbete. Då avgreningen så småningom avviker allt mer från moderprojektet kommer detta arbete att behöva göras skilt i vardera grenen, vilket betyder att den ena grenen mycket ofta dör bort, kanske efter att de viktigaste förbättringarna i den grenen införlivats också i den andra.
Vetskapen om det extra arbete och den splittring av resurser en avgrening för med sig för båda grenarna är en mycket stark sammanhållande kraft; de ledande personerna i ett framgångsrikt projekt undviker konflikter som skulle leda till att viktiga personer och organisationer lämnar projektet, samtidigt som erfarna programmerare vanligen drar sig för att lägga arbete på en egen gren.
I någorlunda överskådliga projekt går det ofta att upprätthålla en uppsättning egna modifikationer (engelska: patchset), som anpassas till moderprojektets kod alltefter som denna förändras. Detta räknas inte som en avgrening och är vanligt vad gäller experimentell kod som inte ännu är mogen för projektets huvudgren eller kod anpassad för en viss miljö som inte upplevs väsentlig av projektet.
Här är en illustration av varför fenomenet kallas fork; i figuren löper tiden åt höger (det engelska ordet betyder inte bara gaffel utan även förgrening och trädklyka):
------------- NetBSD BSD / ----------------------------------------------- FreeBSD \ ------------- OpenBSD
Detta är en grov skiss, för en bra bild av skeendet i denna fork, se Computer History Graphing Project, som bland annat har en graf över alla Unix-varianter.
Kända forkar
- XEmacs - en fork av Emacs
- OpenBSD - en fork av NetBSD
- FirebirdSQL - en fork av InterBase
- EGCS - var under en period en fork, men återförenades sedan åter med GCC