För systemanropet i Unix, se fork (systemanrop).

En fork (engelska för förgrening) även kallat gaffling[källa behövs] är avknoppning eller avgrening av programvaruprojekt i flera fristående projekt. Det kan exempelvis handla om en stark grupp som vill driva ett projekt med öppen källkod åt ett annat håll än majoriteten inom projektet. Denna grupp utgår då normalt från en kopia på källkoden och fortsätter jobba efter sina egna principer, utan att nödvändigtvis följa moderprojektets policy och designprinciper.

Unix historiska delningar
Tidslinje som visar delningar av Linux-distributioner

En fork skiljer sig från en branch (förgrening), som är en tillfällig uppdelning av programutvecklingen i flera parallella utvecklingslinjer inom samma projekt, och har till syfte att senare kunna sammanföras.

Då det gäller mer komplicerad programvara kräver utveckling och felsökning mycket arbete. Då en avgrening så småningom avviker allt mer från moderprojektet kommer detta arbete att behöva göras i båda (alla) grenarna.[källa behövs] Det betyder att en gren ofta dör bort, men ibland först efter att eventuella välmotiverade förbättringar i denna införlivats i de mer livskraftiga grenarna.[källa behövs]

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 för 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


Kända forkar redigera

Se även redigera