FUSE è l’acronimo di File System in Userspace ed è una interfaccia software per i sistemi operativi Unix e Unix-like, distribuito finora sotto la licenza GPL e LGPL. Questo software è stato creato per Linux e poi portato su altri sistemi Unix-like, inclusi FreeBSD e OpenSolaris. Nel 2007 Google ha rilasciato un port per Mac OS X come open source; nel 2011 questo “fork” è diventato osxfuse, in seguito diventato FUSE for macOS.
Sette mesi addietro gli utenti del software hanno notato che il codice sorgente non era più disponibile ma solo i file binari. “È stato fatto di proposito”, spiega Benjamin Fleischer, maintainer del progetto. “Se state usando FUSE per macOS in un progetto software commerciale, non esitate a contattarmi”.
Fleischer spiega al sito TheRegister di avere cominciato a lavorare su FUSE nel 2011. Studiava informatica e il lavoro su FUSE è iniziato come hobby. «Facevo affidamento a NTFS-3G, un noto file system FUSE, e volevo usare il nuovo kernel a 64 bit di Snow Leopard». «MacFUSE, com’era chiamato originariamente il progetto, era già stato abbandonato da qualche tempo, non supportava i kernel a 64 bit e così ho cominciato ad armeggiare con il codice».
«È passato un sacco di tempo da allora e il numero di applicazioni che fanno affidamento a FUSE per macOS è cresciuto rapidamente». “Oggi FUSE per macOS è usato da molte grandi aziende internet, inclusi provider di cloud storage, infrastrutture-as-a-service e anche social network”.
Il problema è che Fleischer è l’unico a occuparsi gratuitamente del progetto. Nel maggio del 2016 aveva chiesto sostegno «Per portare FUSE per OS X su un nuovo livello». «Vorrei passare più tempo a lavorarci sopra» scriveva all’epoca «Ma questo non è possibile senza ottenere un compenso per il mio lavoro».
«Il mio post non ha prodotto il risultato sperato – riferisce Fleischer – Ho dunque cambiato strategia e provato a contattare direttamente le aziende che usano FUSE, chiedendo il loro supporto».
“Ho cercato di spiegare che avere un solo progetto, al quale tutti contribuiscono, anziché molti fork closed source, senza creare fix e migliore a monte, sarebbe un vantaggio per tutti”. “Sono riuscito a convincere un paio di aziende a sostenere finanziariamente il mio lavoro. Ad ogni modo, molte aziende sembrano riluttanti a supportare il progetto grazie al quale i loro prodotti esistono essendo disponibile gratuitamente”. “È qualcosa di alquanto ironico: come se qualcosa disponibile gratuitamente, non fosse percepita come un valore”.
Fleischer, a un certo punto ha deciso di non rendere più disponibile il codice sorgente e modificare la tipologia di licenza usata. “FUSE for macOS 3.9 può ancora essere gratuitamente fornito in bundle con software commerciale. Da luglio 2019 ho rilasciato FUSE for macOS 3.10 con supporto per macOS Catalina con una nuova licenza meno permissiva che richiede la specifica autorizzazione scritta per offrire in bundle FUSE con software commerciale”.
“Molto del codice sorgente di FUSE for macOS è rilasciata secondo la licenza BSD; ad ogni modo, libfuse, per esempio, è rilasciata secondo la licenza LGPL. Ho fatto quello che altri sviluppatori di fork FUSE closed source hanno già fatto da qualche tempo. Le licenze BSD sono una famiglia di licenze permissive, senza copyleft, per software. Chi modifica un programma protetto da licenze BSD, può ridistribuirlo usando la stessa o altra qualunque licenza, senza avere l’obbligo di redistribuire le modifiche apportate al codice sorgente.
“libfuse” è distribuita con la licenza LGPL (Lesser General Public License), pressoché identica alla tradizionale GPL, non fosse per il fatto che il limite concernente l’utilizzo di librerie statiche all’interno di applicazioni non-open è assente: non è in pratica possibile utilizzare librerie LGPL anche all’interno di programmi a codice chiuso.
Fleischer spiega che continuerà a lavorare su FUSE come progetto closed source; riferisce che è stata una decisione difficile alla quale ha pensato per molto tempo, ma non ha dubbi che sia la soluzione migliore per sensibilizzare altri sviluppatori e garantire la sostenibilità del progetto.
Che cosa accadrà in futuro a FUSE? Come maintainer di lunga data del progetto FUSE for macOS, lo sviluppatore riferisce che «FUSE sarà sempre gratuito per uso non commerciale». Spiega ancora che se un giorno dovesse per qualunque motivo non occuparsi più del progetto, rilascerà il codice sorgente secondo i termini della licenza BSD mettendosi da parte per consentire a qualcun altro di prendere il controllo di osxfuse su GitHub. Anche Apple potrebbe rendere in futuro le cose più complicate, limitando ad esempio le estensioni per il kernel o integrando qualcosa di simile a FUSE nel kernel stesso di macOS.