Fork (sviluppo software)
Da Wikipedia, l'enciclopedia libera.
Nel contesto dell'ingegneria del software un fork (o branch) si verifica quando uno sviluppatore (o un gruppo di essi) inizia lo sviluppo di un nuovo progetto software partendo dal codice sorgente di un altro già esistente.
Il termine è usato (più raramente) per indicare questo tipo di condizione anche per opere non software, sebbene nella maggior parte dei casi ci si riferisce a progetti freesoftware o open source.
I fork, nell'ambito del software libero, risultano spesso essere dei veri e propri scismi dovuti a conflitti personali o al perseguimento di diversi obiettivi. Quando si verifica un fork entrambe le parti iniziano il lavoro sulla stessa identica base di codice, ma solo il gruppo più numeroso, o quello che rappresenta il nucleo originario, mantiene il nome e la comunità virtuale ad esso legato. Talvolta l'atto di effettuare un fork porta ad una penalizzazione in termini di reputazione.
Nell'ambito del software proprietario il copyright è detenuto dalla società che sviluppa il prodotto, non dal singolo sviluppatore. Il codice proprietario solitamente subisce un fork quando la società necessita di due o più versioni dello stesso prodotto, ad esempio una grafica ed una a linea di comando, o di versioni per diversi sistemi operativi. Generalmente questo tipo di fork interni mantengono lo stesso aspetto, lo stesso formato per i files e lo stesso comportamento, in modo che l'utente possa essere produttivo con entrambi: tutto ciò si traduce quasi sempre in un incremento della quota di mercato.
Il fork è una pratica abituale in molti progetti, in quanto esistono versioni stabili (o di release) destinate ad ospitare solo correzioni minori, e versioni di sviluppo che contengono l'implementazione di nuove caratteristiche. Ciò accade nello sviluppo del kernel Linux, ad esempio. Questo tipo di fork sono solitamente chiamati branches per evitare il fraintendimento dovuto alla connotazione negativa della parola "fork" e perché le applicazioni che assistono lo sviluppo (come CVS o SVN) usano proprio questo termine.
In taluni casi, un fork può essere nuovamente integrato nel progetto originario, o addirittura rimpiazzarlo. EGCS è stato un fork di GCC, e dimostrò una tale vitalità rispetto al progetto originario che venne promosso ad essere la versione ufficiale di GCC.
I fork sono considerati espressione della libertà resa disponibile dal software libero, ma anche una debolezza dovuta alla dispersione delle risorse e alla confusione indotta nell'utente finale. A seguito di un fork le relazioni tra i diversi gruppi di sviluppo possono mantenersi cordiali o diventare assai gravose: ad esempio, quando l'autore del programma di file sharing per Linux LMule non si dimostrò interessato a portare l'applicazione su altre piattaforme, esso venne forkato in xMule. A sua volta, questo venne diviso in aMule, a causa delle divergenze tra gli sviluppatori, e le tensioni rimasero.
In merito al processo di fork, lo Jargon File si esprime così:
« Il fork è considerato una cosa cattiva, non solo perché implica un enorme spreco di risorse ma soprattutto perché tende ad essere accompagnato da gravi tensioni. Esiste una seria pressione sociale contro i fork. Come risultato, i fork di grandi proporzioni (come quello di Emacs e XEmacs, la divisione di 386BSD in tre progetti paralleli, e quello di GCC e EGCS) sono sufficientemente rari da essere singolarmente ricordati nella storia del folklore hacker » | |
(Jargon File )
|
Forkare un progetto in un uno nuovo è semplice, ma continuare a mantenerlo e supportarlo no: è cosa comune che i fork senza sufficienti risorse diventino inattivi. Ad esempio GonoME, un fork di GNOME, venne ben presto abbandonato sebbene all'inizio avesse suscitato un discreto interesse. Alcuni fork hanno invece avuto grande successo, come quello di XFree86, X.org, attualmente adottato dalla maggior parte delle distribuzioni Linux.
[modifica] Altri esempi
- Enciclopedia Libre è un fork della Wikipedia spagnola, creato per cercare di evadere lo spamming
- Pretty Good Privacy è stato forkato al di fuori degli Stati Uniti d'America per aggirare le restrizioni sull'esportazione di software dedito alla crittografia
- Le innumerevoli versioni di Unix derivano tutte dall'originario Unix di AT&T e si chiamano tutte "UNIX", sebbene siano divenute incompatibili tra loro
- Il gioco NetHack venne forkato in numerose varianti, tra cui Slash'EM, e a sua volta è stato un fork di Rogue
- OpenSSH è un fork di SSH, avvenuto in quanto la seconda versione dell'originale venne distribuito con una licenza non libera; la prima versione, ancora con licenza libera, venne forkata e, nel corso dei mesi, tutte le distribuzioni Linux e BSD rimpiazzarono SSH con OpenSSH
- DragonFly BSD venne forkato da FreeBSD 4.8 da un suo vecchio sviluppatore, Matt Dillon, a causa del disaccordo sulle scelte implementative adottate in FreeBSD 5.