Il software Open Source Matteo Baroni “Open source” non significa semplicemente accesso al codice sorgente. Secondo quanto stabilito nelle definizioni date dalla OSI (Open Source Initiative) e riportate nel sito ufficiale www.opersource.org, i termini di distribuzione del software open-source devono soddisfare i seguenti criteri: 1. Libera Ridistribuzione La licenza non deve impedire la vendita o la fornitura del software come componente di una distribuzione di software aggregato che racchiude programmi provenienti da fonti differenti. La licenza non può prevedere il pagamento di una royalty o altre “fee” per tale vendita. 2. Codice Sorgente Il programma deve comprendere il codice sorgente, e deve consentire la distribuzione sia del codice sorgente, sia del software in forma compilata. Laddove un prodotto non sia distribuito con il codice sorgente, devono esserci sistemi ben pubblicizzati per ottenere il codice sorgente ad un costo non superiore ad un ragionevole costo di riproduzione - preferibilmente, il codice sorgente deve essere scaricabile da Internet senza ricarico. Il codice sorgente deve essere la forma preferita in cui un programmatore potrà partire per modificare il programma. Codice sorgente deliberatamente oscurato non è consentito. Forme intermedie come l’output di un preprocessore o di un traduttore non sono ammesse. 3. Prodotti derivati La licenza deve consentire modifiche e prodotti derivati, e deve consentire che gli stessi siano distribuiti alle medesime condizioni previste nella licenza per il software originale. 4. Integrità del Codice Sorgente dell’Autore La licenza può limitare la distribuzione del codice sorgente in forma modificata solo se la licenza stessa consente la distribuzione di "patch files" con il codice sorgente allo scopo di modificare quest’ultimo allo svolgimento del “build”. La licenza deve esplicitamente consentire la distribuzione del software prodotto a partire dal codice sorgente modificato. La licenza può richiedere che i prodotti derivati abbiano un nome diverso o un diverso numero di versione rispetto al software originale. 5. Nessuna Discriminazione verso Persone o Gruppi La licenza non può discriminare persone o gruppi di persone. 6. Nessuna Discriminazione verso Campi di Applicazione La licenza non deve impedire ad alcuno l’impiego del programma in uno specifico campo di applicazione. Per esempio, non può essere impedita l’applicazione per un certo commercio, o per la ricerca genetica. 7. Distribuzione della Licenza 1 I diritti legati al programma devono essere applicati a tutti coloro i quali il programma stesso è distribuito, senza la necessità della sottoscrizione di alcuna licenza aggiuntiva. 8. La Licenza Non Deve Essere Specifica per un Prodotto I diritti legati al programma non dipendono dal fatto che il programma è parte di una particolare distribuzione software. Se il programma è estratto da tale distribuzione ed è utilizzato o distribuito rispettando i termini della licenza, tutti coloro ai quali il programma è ridistribuito devono avere i medesimi diritti che sono conferiti con il software originale. 9. La Licenza Non Deve Limitare Altri Programmi La licenza non deve imporre restrizioni su altri software che sono distribuiti insieme al software oggetto della licenza. Per esempio, la licenza non deve insistere sul fatto che tutti gli altri programmi distribuiti sul medesimo supporto siano software open-source. 10. La Licenza Deve Essere Indipendente dalla Tecnologia Nessun requisito all’interno della licenza potrà basarsi su specifiche tecnologie o tipologie di interfaccia. ****************** Per quanto riguarda l’impiego pratico del software open-source, presenta sia aspetti vantaggiosi, sia alcuni limiti operativi, tipicamente messi in evidenza, rispettivamente, dai sostenitori del movimento Open Source e da coloro che invece osteggiano tale movimento. Secondo i suoi sostenitori, il software open source presenta numerosi vantaggi rispetto al software proprietario, tra cui: il fatto di poter essere direttamente modificato ed adattato; il fatto di essere oggetto di attenzione da parte di molti utenti, che porta ad una riduzione di errori e bachi nel codice; in ogni caso, proprio per il fatto che molte persone possono condividere la propria esperienza e la propria competenza, in caso di problemi la soluzione viene trovata in tempi molto rapidi; il fatto che sia più facile realizzare prodotti di software in grado di “interoperare” tra loro, grazie all’assenza di standard proprietari; in generale, il fatto di poter fornire prodotti di qualità, derivanti dalla collaborazione di più persone che altrimenti non avrebbero potuto condividere le proprie competenze. Non manca tuttavia chi vede anche un certo numero di svantaggi nella realizzazione di progetti open source; le principali critiche sono le seguenti: spesso il software open source non segue i tradizionali principi di ingegneria del software, portando alla realizzazione di prodotti che, per quanto funzionanti, sono caratterizzati da incoerenza strutturale, difficoltà di interpretazione del codice e di modificabilità; i prodotti sono spesso realizzati da esperti e risultano di difficile comprensione ed utilizzabilità per utenti di minor competenza; non viene effettuata, su ciascun prodotto sviluppato, una revisione strutturata ed organizzata, così che il software open source non può essere impiegato per applicazioni critiche, che richiedano cioè una probabilità di errore nulla; talvolta la documentazione manca, è incompleta o non aggiornata. 2 Software libero Un software libero è un software che viene distribuito secondo accordi in base ai quali chiunque può utilizzarlo, modificarlo e distribuirlo a sua volta; è genericamente contrapposto, per le sue caratteristiche, al software proprietario. Le caratteristiche che un software deve presentare, relativamente ai termini di distribuzione dello stesso, per poter essere definito “software libero”, sono state definite da Richard Stallman e dalla Free Software Foundation; tali caratteristiche sono le cosiddette quattro “libertà fondamentali”: Libertà 0: Libertà di eseguire il programma per qualunque applicazione Libertà 1: Libertà di accedere al codice del programma e modificarlo Libertà 2: Libertà di copiare il programma per aiutare gli altri Libertà 3: Libertà di modificare il programma e distribuire pubblicamente le versioni modificate, così che chiunque possa beneficiarne Va notato che qualunque software venga distribuito rispettando le quattro libertà fondamentali, può essere definito software libero, mentre il software open source è quello che viene distribuito secondo i 10 criteri sopra specificati (nel paragrafo “open source”). Pertanto, software open source e software libero non sono sinonimi in senso assoluto, ma solamente nella misura in cui il rispetto delle quattro libertà fondamentali viene sostanziato nell’applicazione proprio dei criteri dettati dall’open source. 3 GNU General Public License La GNU General Public License è una licenza per software libero. All’indirizzo http://www.gnu.org/licenses/gpl.html può essere consultato il testo integrale di tale licenza. A titolo riassuntivo, si può affermare che GNU General Public License prevede la distribuzione di un software nel rispetto delle quattro libertà fondamentali; ciascun utente, nel momento in cui fruisce di un programma distribuito secondo la GNU GPL, deve consentire a coloro ai quali fornisce tale programma (o una sua modifica) i medesimi diritti di cui ha goduto lui stesso. Si consideri, per esempio, il caso in cui un soggetto A realizzi un certo software e ne distribuisca il codice sorgente tramite la GNU GPL. Un soggetto B scarica il programma realizzato da A, aderendo quindi alla licenza, lo modifica aggiungendo delle caratteristiche o migliorando una o più di quelle già esistenti, e lo distribuisce a sua volta. Se il soggetto B non rispettasse i termini della licenza, che ha sottoscritto nel momento in cui ha potuto fruire del programma sviluppato da A, cioè se non fornisse copia del codice sorgente migliorato, potrebbe subire un’azione legale da parte di A stesso, per il fatto che il software sviluppato da quest’ultimo è stato distribuito, ancorché in forma modificata, senza il consenso dell’autore. Si tratta di un meccanismo legale denominato “copyleft”, per sottolinearne la contrapposizione al normale diritto di copyright esercitato dagli sviluppatori di software proprietario; in pratica, tramite la GNU GPL si obbliga ciascun utente a distribuire e rendere disponibile il codice sorgente dei miglioramenti di un programma acquisito sotto tale licenza (copyleft), pena il rischio di subire un’azione legale fondata sul copyright. 4 La Tutela Brevettuale del Software Una maniera totalmente diversa, rispetto a quelle finora prospettate, di approcciare la modalità di distribuzione commerciale di un software, consiste nel prendere in considerazione la possibilità di richiedere, ed ottenere se possibile, una protezione di tipo brevettuale su tale software. La possibilità di ottenere uno o più brevetti volti a tutelare un determinato software non viene concessa in maniera uniforme dalle varie autorità competenti demandate al rilascio di privative brevettuali. A livello italiano, è ormai noto che l’Ufficio emetta rifiuti provvisori – peraltro ben difficilmente superabili – ogniqualvolta venga depositata una domanda di brevetto avente per oggetto un software, indipendentemente dagli aspetti tecnici e dalle possibili implementazioni pratiche dello stesso. Una posizione diametralmente opposta si riscontra presso l’Ufficio Statunitense, che non pone abitualmente obiezioni di sorta né relativamente a domande di brevetto su programmi per elaboratore, né tantomeno in relazione a domande di brevetto sui cosiddetti “methods for doing business” che, contrariamente alla grande maggioranza dei brevetti depositati nel corso della storia, non riguardano necessariamente il mondo della tecnica e dell’innovazione tecnologica. La prassi seguita dall’Ufficio Brevetti Europeo, sulla quale ci dilungheremo maggiormente, segue una condotta “intermedia” rispetto agli Uffici italiano e statunitense, non negando cioè la brevettabilità del software a priori, ma verificando alcuni fondamentali requisiti (prima ancora di quelli, comunque imprescindibili, di novità ed altezza inventiva) per collocare un certo software nella sfera delle invenzioni considerabili tali dalla Convenzione sul Brevetto Europeo e dalla giurisprudenza rilevante. Scendendo in maggiore dettaglio, i programmi per computer sono considerati brevettabili solo con riferimento ad un effetto tecnico, che deve per sé presentare il requisito dell’altezza inventiva. Un procedimento rivendicato che comprende un software non è brevettabile, se (i) il procedimento non influenza il funzionamento fisco o tecnico di un dispositivo; (ii) i dati che vengono processati non sono parametri operativi di un dispositivo; e (iii) il procedimento non risolve un problema tecnico (T158/88). Un metodo matematico è in generale svolto su dei numeri e fornisce un risultato in termini numerici. Nessun risultato tecnico diretto è prodotto dal metodo in quanto tale. Viceversa, se un metodo matematico è utilizzato in un processo tecnico, quel processo è svolto su un’entità fisica (che può essere sia un oggetto materiale, sia un’immagine digitale, sia un segnale elettrico) tramite certi mezzi tecnici che implementano il metodo e forniscono come risultato una variazione in detta entità fisica. I mezzi tecnici possono comprendere un computer dedicato o un elaboratore “general purpose” opportunamente programmato. La decisione T1173/97 è presa come riferimento per la determinazione della brevettabilità di un programma per elaboratore. L’interpretazione proposta – e tuttora seguita – prevede che, alla luce del coordinato disposto dei commi (2) e (3) dell’Art. 52 EPC, non tutti i software sono esclusi dalla brevettabilità, ma solamente i software “as such”. Un programma per computer “as such” è considerato il solo contenuto basico del programma privo di qualunque funzionalità tecnica, cioè una mera creazione astratta, sprovvista di carattere tecnico. 5 Pertanto, un software sarà brevettabile se presenta un “carattere tecnico”. Quest’ultimo può essere derivato da un “ulteriore effetto tecnico”, prodotto dal programma quando eseguito su un computer, detto effetto andando oltre la normale interazione tra programma e computer. Esempi di tale “ulteriore effetto tecnico” possono essere il controllo di un processo industriale, l’elaborazione di dati rappresentativi di entità fisiche, o il controllo del funzionamento del computer. È pertanto da valutarsi di volta in volta, in funzione delle caratteristiche peculiari di ciascun caso specifico, la possibilità di richiedere una tutela brevettale per un software di fronte all’Ufficio Brevetti Europeo. Va infine notato come la modifica al tenore letterale dell’art. 52(2) EPC, prevista dall’introduzione della cosiddetta EPC 2000, potrebbe portare, nel corso del tempo, a modifiche nel sopra descritto orientamento giurisprudenziale. È ovviamente necessario attendere gli sviluppi futuri del case law per verificare in che misura ciò potrà accadere. 6 L’oscurazione di siti internet Qualora dovessero sorgere contestazioni relativamente ad un sito internati, per esempio per la non liceità dei contenuti del sito, per la violazione di dritti di proprietà intellettuale, ecc. – vi sono sostanzialmente due aspetti da prendere in considerazione: a) contestazione del nome a dominio, per esempio perché identico o simile ad un marchio registrato di terzi, e destinato ad individuare un sito che si colloca nel medesimo settore commerciale del titolare di detto marchio; b) contestazione dei contenuti veri i propri del sito, cioè di quello che viene mostrato nelle singole pagine. Il primo aspetto viene gestito secondo le note procedure di rassegnazione, di fronte agli enti competenti per il domain name in questione. Con particolare riferimento alla seconda opzione, è possibile ottenere che venga imposto al proprietario del sito di eliminare certi contenuti (magari solo di alcune pagine web, quelle presentanti il materiale contestato) dal proprio sito. Nel caso in cui il proprietario non dovesse agire di conseguenza, una volta ottenuta un’ordinanza o decisione favorevole alla chiusura (o oscurazione del sito), viene imposto al provider di pertinenza di rendere inaccessibili i contenuti contestati. Una prima soluzione, abbastanza immediata, si ha nel caso in cui le pagine da eliminare risiedano fisicamente presso il provider, cioè su una porzione di macchina messa a disposizione dal provider stesso al titolare del sito; in tal caso il provider è in grado di cancellare tali pagine senza alcuna difficoltà dal punto di vista tecnico. Se invece il provider non gestisce direttamente i contenuti contestati, può comunque modificare i propri files di zona, così che questi ultimi non puntino più sul sito incriminato. In maggiore dettaglio, i files di zona sono quei files che contengono i record DNS (Domain Name System) per gli host della rete. I record DNS consentono di trasformare i nomi degli host in indirizzi IP e viceversa, di definire i server di posta e di specificare molte altre informazioni; la conversione di un nome a dominio nel corrispondente indirizzo IP viene anche indicata come “risoluzione” del nome a dominio. Ciò che viene tecnicamente ordinato al provider è di modificare i files di zona, così che venga rimosso l’indirizzo IP della macchina (fisica o virtuale) sulla quale il sito contestato è residente, in modo che lo stesso non sia più raggiungibile dagli utenti della rete. Infatti, la richiesta di connessione ad un sito oscurato comporta una ricerca, da parte del DNS, dell’indirizzo IP al quale connettere la macchina richiedente affinché le pagine richieste siano scaricate; nel momento in cui il corrispondente indirizzo IP non è reperibile, viene visualizzato un messaggio di errore. Alternativamente, è possibile re-indirizzare tale domain name su (cioè modificare l’indirizzo IP relativo a tale domain name in modo che si connetta ad) una pagina opportunamente predisposta, nella quale viene accennato alla chiusura del sito ed alle motivazioni della stessa. Marzo 2007 7