⑂ Open source

Fork di un progetto open source: quando ha senso e come farlo

Differenza tra fork tecnico e fork della comunità, motivi tipici, esempi noti, aspetti di nome e licenza e passi concreti per avviare un fork sostenibile.

La possibilità di fare un fork, cioè di prendere il codice di un progetto e proseguirne lo sviluppo in modo indipendente, è una delle garanzie fondamentali del software libero. Nessuno può tenere in ostaggio un progetto open source: se chi lo guida prende una direzione inaccettabile, chiunque può ripartire dal codice esistente. Ma fare un fork è facile solo dal punto di vista tecnico. Farlo sopravvivere è un'altra storia.

Due significati della stessa parola

Il termine viene usato in due sensi molto diversi:

  • fork tecnico: la copia di un repository sul proprio account per lavorarci e proporre modifiche. È il flusso normale delle pull request e non ha nulla di conflittuale;
  • fork della comunità: la nascita di un progetto alternativo, con un nome diverso, manutentori propri e rilasci separati, che compete o convive con l'originale.

In questo articolo si parla del secondo caso.

Perché nascono i fork

Le ragioni ricorrenti sono poche e riconoscibili:

  1. cambio di licenza: il progetto originale passa a una licenza non open source e una parte della comunità prosegue dall'ultima versione libera;
  2. cambio di proprietà: un'azienda acquisisce il progetto e la comunità teme per il suo futuro;
  3. conflitti di governance: disaccordi profondi su chi decide e come;
  4. abbandono: i manutentori smettono di rispondere e qualcuno riprende il lavoro;
  5. divergenza tecnica: obiettivi così diversi che non possono convivere nello stesso codice.

Esempi noti

Alcuni casi aiutano a capire le dinamiche:

  • LibreOffice è nato da OpenOffice.org quando una larga parte della comunità ha scelto di proseguire sotto una fondazione indipendente; nel tempo è diventato il ramo più attivo.
  • MariaDB è nato da MySQL per iniziativa di alcuni dei suoi sviluppatori originali, dopo che MySQL era passato sotto il controllo di una grande azienda.
  • Jenkins è nato da Hudson in seguito a una disputa sul nome e sul controllo del progetto.
  • OpenTofu e Valkey sono nati rispettivamente da Terraform e da Redis dopo che questi erano passati a licenze non open source.

In tutti questi casi il fork ha avuto successo perché si è portato dietro una parte consistente di chi sviluppava davvero, non solo il codice.

Prima di fare un fork

Un fork divide energie, utenti e attenzione. Prima di avviarlo conviene esaurire le alternative:

  • discutere apertamente il problema con i manutentori, per iscritto;
  • proporre una modifica alla governance o un ruolo da co-manutentore;
  • in caso di abbandono, chiedere esplicitamente il trasferimento del repository e dei pacchetti;
  • verificare se esistono già altri fork attivi da sostenere invece di crearne uno nuovo.

Molti fork falliscono proprio perché ne nascono tre contemporaneamente, ciascuno con due persone.

Nome, marchi e licenza

La licenza open source permette di copiare e modificare il codice, ma quasi mai concede l'uso del nome e del logo. Il fork deve quindi:

  • scegliere un nome nuovo, chiaramente distinto, e verificare che non sia già registrato;
  • rimuovere o sostituire loghi e riferimenti che possano far credere a un'origine ufficiale;
  • mantenere intatti gli avvisi di copyright e le licenze dei file esistenti;
  • se la licenza originale è copyleft, distribuire il fork sotto le stesse condizioni.

Quando il fork parte dopo un cambio di licenza, il punto di partenza deve essere l'ultima versione rilasciata con la licenza libera: il codice successivo non può essere incluso.

Passi concreti per un fork sostenibile

  1. Dichiarare il motivo in un documento pubblico, sobrio e senza attacchi personali.
  2. Definire subito la governance, per non ripetere i problemi che hanno causato il fork.
  3. Mettere al sicuro l'infrastruttura: dominio, organizzazione sulla piattaforma di hosting, nomi dei pacchetti nei registri.
  4. Garantire compatibilità iniziale con l'originale, così che gli utenti possano passare senza riscrivere nulla.
  5. Pubblicare un primo rilascio rapidamente, anche solo con correzioni minori, per dimostrare che il progetto è vivo.
  6. Cercare una casa neutrale, come una fondazione o uno sponsor fiscale, se il fork nasce da conflitti di controllo.

In sintesi

  • Il fork della comunità è una garanzia del software libero, ma divide energie e utenti.
  • Nasce di solito da cambi di licenza, di proprietà, conflitti o abbandono.
  • La licenza consente di copiare il codice, non di usare nome e marchi dell'originale.
  • Un fork riesce se porta con sé sviluppatori attivi, governance chiara e un primo rilascio rapido.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche