För systemanropet i Unix, se fork (systemanrop).
miniatyr|Unix historiska delningar miniatyr|Tidslinje som visar delningar av Linux-distributioner En fork är ett begrepp inom utveckling av mjukvara, som syftar på en kodbas som är en dubblett från en original kodbas, men som vidare utvecklas separat från originalet. Till en början har de olika mjukvarorna identiska beteenden, men skillnaderna blir större med tiden, eftersom båda utvecklas åt olika håll.
Fork eller Branch Skillnaden mellan en fork och en branch (avgrening), är att en avgrening är en tillfällig uppdelning av programutvecklingen för flera parallella utvecklingslinjer inom samma projekt. Syftet med en avgrening är att senare sammanföra dem igen.
Då det gäller mer komplicerad programvara kräver utveckling och felsökning mycket arbete. Då en avgrening så småningom avviker alltmer från moderprojektet kommer detta arbete att behöva göras i båda (alla) grenarna. 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.
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 Libreoffice – en fork av Openoffice 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 med GCC
Se även Avknoppning
Kategori:Programmering Kategori:Operativsystem