Fork (sviluppo software)

Un fork (o branch), nell'ambito dell'ingegneria del software e dell'informatica, indica lo sviluppo di un nuovo progetto software che parte dal codice sorgente di un altro già esistente, a opera di un programmatore.[1][2]

Il termine è usato (più raramente) per indicare questo tipo di condizione anche per progetti e attività non necessariamente legate al software e all'informatica, sebbene nella maggior parte dei casi ci si riferisce a progetti di software libero e/o open source: infatti per questo tipo di licenze software, non è richiesta alcuna autorizzazione formale da parte dello sviluppatore originario per la loro modifica o il loro sviluppo a partire dai codici sorgenti ed è più facile dunque iniziare un fork.

Descrizione

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 a esso legato. Talvolta l'atto di effettuare un fork porta a 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 e una a riga di comando, o di versioni per diversi sistemi operativi. Generalmente questo tipo di fork interni mantengono lo stesso aspetto, lo stesso formato per i file 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 a 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. L'Experimental/Enhanced GNU Compiler System (EGCS) è stato un fork di GCC, e dimostrò una tale vitalità rispetto al progetto originario che venne promosso a 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 a 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»

Forkare un progetto in 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 e di MATE, un fork di GNOME 2 attualmente adottato dalla maggior parte delle distribuzioni Linux.[3]

Esempi [4]

Note

  1. ^ (EN) Branch or fork your repository, su support.atlassian.com. URL consultato il 23 ottobre 2020.
  2. ^ Mantenere un progetto: interagire con gli sviluppatori, su pluto.it. URL consultato il 23 ottobre 2020.
  3. ^ Ambiente Desktop MATE, su mate-desktop.org. URL consultato il 23 ottobre 2020.
  4. ^ (EN) Swapnil Bhartiya, May the Fork Be with You: A Short History of Open Source Forks, su The New Stack. URL consultato il 23 ottobre 2020.

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica