Open source: differenze tra le versioni

Da Unipedia.
656066 (discussione | contributi)
656066 (discussione | contributi)
Riga 34: Riga 34:


=== Contributi pubblici ===
=== Contributi pubblici ===
Il progetto 18F <ref name="18F Project">https://github.com/18F</ref> funge da esempio di investimento statale nell’industria dell’open source. Il governo statunitense ha infatti creato un’unità digitale interna chiamata 18F che sviluppa software open source con lo scopo migliorare i servizi pubblici digitali. Proprio alla creazione di 18F è dovuta la nascita di software tra cui ''Cloud.gov'', una piattaforma '''Platform as a Service''' (PaaS)<ref>https://www.ibm.com/think/topics/paas</ref> open source che aiuta le agenzie governative a comprare e creare servizi di cloud.
Il progetto 18F <ref name="18F Project">https://github.com/18F</ref> funge da esempio di investimento statale nell’industria dell’open source. Il governo statunitense ha infatti creato un’unità digitale interna chiamata 18F che sviluppa software open source con lo scopo migliorare i servizi pubblici digitali. Proprio alla creazione di 18F è dovuta la nascita di software tra cui ''[https://cloud.gov/ Cloud.gov]'', una piattaforma '''Platform as a Service''' (PaaS)<ref>https://www.ibm.com/think/topics/paas</ref> open source che aiuta le agenzie governative a comprare e creare servizi di cloud.
Anche l’Unione Europea è responsabile di un importante contributo pubblico nel settore, che ha come risultato la creazione del programma '''NGI'''<ref>https://www.ngi.eu/ngi-projects/</ref>, che finanzia progetti open source con lo scopo di migliorare la privacy e la sicurezza online, nonché di incentivare la decentralizzazione di risorse. Tra i programmi e le iniziative troviamo:
Anche l’Unione Europea è responsabile di un importante contributo pubblico nel settore, che ha come risultato la creazione del programma '''NGI'''<ref>https://www.ngi.eu/ngi-projects/</ref>, che finanzia progetti open source con lo scopo di migliorare la privacy e la sicurezza online, nonché di incentivare la decentralizzazione di risorse. Tra i programmi e le iniziative troviamo:
*NGI Taler: che promuove sistemi di pagamento digitali sicuri e affidabili
*NGI Taler: che promuove sistemi di pagamento digitali sicuri e affidabili

Versione delle 13:52, 16 giu 2025

L’open source è un concetto alla base della produzione software che prevede quattro principi fondamentali (“four freedoms”) definiti da Richard Stallman [1]:

  • Libero utilizzo e studio del software
  • Possibilità di modificarlo
  • Poter ridistribuire copie del software
  • Poter distribuire le proprie modifiche

L’approccio open source è basato sulla trasparenza e la collaborazione, le libertà sopra elencate hanno posto una nuova visione della produzione software, orientata alla cooperazione tra sviluppatori utenti e istituzioni.


Origini e contesto storico

Il concetto dietro al termine open source, il “free software” comincia a svilupparsi negli Stati Uniti all’inizio degli anni ‘80, prima di prendere il termine di open source software verso la fine degli anni ‘90. [1]

La definizione di software fino agli anni '60

Fino alla fine degli anni ‘60, il software veniva condiviso liberamente tra gli addetti ai lavori e distribuito insieme all’hardware [2], infatti i programmi venivano considerati come strumenti accessori e non prodotti con un proprio valore commerciale. IBM [3], ad esempio, forniva il software insieme alle macchine senza costi aggiuntivi, solo quelli di manutenzione hardware, permettendo agli utenti finali di studiarlo, condividerlo, modificarlo e adattarlo alle proprie esigenze.
Questo approccio favoriva un ambiente collaborativo tra ricerca, ingegneri e sviluppatori, in particolare all’interno delle università. Si trattava di fatto di una prassi che anticipava gran parte dei principi dell’open source, nonostante non vi fosse una formalizzazione ideologica e giuridica.

Separazione hardware e software, l’inizio del copyright

Il modello di software proprietario nasce con la separazione tra hardware e software, nel 1969, quando IBM annuncia la separazione di alcuni software dal catalogo principale, vendendoli separatamente rispetto all’hardware.
Dalla concezione quindi di accessorio del hardware, il software in quel momento ha assunto un proprio valore economico e commerciale. Questo cambiamento aprì la strada alla nascita dell'industria del software indipendente, in cui numerose aziende cominciarono a sviluppare e commercializzare programmi destinati a funzionare su hardware prodotto da terzi. Questa evoluzione rese necessaria la definizione di leggi specifiche sul copyright al fine di tutelare i diritti degli sviluppatori, facendo si che l’utilizzo di programmi informatici fosse soggetto a licenze e restrizioni d’uso.

Prima distribuzione di software “libero” (anni ‘80)

Nonostante la vendita di software proprietario fosse ormai una prassi già a metà degli anni '70, alcuni programmi, già agli albori degli anni '80, vengono distribuiti in modo simile al concetto che oggi chiamiamo FOSS (Free Open Source Software). Tra questi i nomi che spiccano maggiormente sono:

  • SPICE (Simulation Program with Integrated Circuit Emphasis)
  • TeX
  • Unix

SPICE, sviluppato da Donald O. Pederson [4] presso l’Università della California, era un software ideato come supporto didattico per l’insegnamento della progettazione di circuiti integrati. Già nel 1973 il programma e il codice sorgente erano disponibili pubblicamente per volere dell’autore, in modo da permettere il libero accesso a studenti e ricercatori.
In maniera analoga, TeX, un sistema di composizione tipografica e markup sviluppato da Donald Knuth [5], venne distribuito liberamente insieme al codice sorgente.
Unix [6], sviluppato inizialmente nei laboratori Bell [7], fu distribuito tra le istituzioni accademiche negli anni ‘70, favorendone lo sviluppo e la collaborazione tra ricercatori. Questi tre esempi rappresentano le prime manifestazioni del concetto di software libero, ponendo le basi per la cultura della condivisione e della collaborazione nel campo dello sviluppo software.

L’avvento di Internet e il suo impatto sul “free software”

La creazione di internet[8] e la sua diffusione all’interno delle università ha rappresentato una svolta fondamentale nella diffusione del free software.
Internet infatti rese più facile la collaborazione e la condivisione del codice sorgente su scala globale. Prima infatti la circolazione del software libero avveniva principalmente tramite supporti fisici in ambienti accademici ristretti; con internet, invece, divenne possibile distribuire gli aggiornamenti dei programmi, la documentazione e gli strumenti di sviluppo necessari. Fu inoltre possibile la diffusione dei principi della FSF, del relativo manifesto e di iniziative correlate all’open source. La nascita di portali quali SourceForge[1], GitHub[2] e GitLab[3] aumentò la risonanza di questi diventando dei veri e propri “hub” per la gestione collaborativa dei progetti.

Contributi pubblici e privati su progetti open source

Contributi pubblici

Il progetto 18F [9] funge da esempio di investimento statale nell’industria dell’open source. Il governo statunitense ha infatti creato un’unità digitale interna chiamata 18F che sviluppa software open source con lo scopo migliorare i servizi pubblici digitali. Proprio alla creazione di 18F è dovuta la nascita di software tra cui Cloud.gov, una piattaforma Platform as a Service (PaaS)[10] open source che aiuta le agenzie governative a comprare e creare servizi di cloud. Anche l’Unione Europea è responsabile di un importante contributo pubblico nel settore, che ha come risultato la creazione del programma NGI[11], che finanzia progetti open source con lo scopo di migliorare la privacy e la sicurezza online, nonché di incentivare la decentralizzazione di risorse. Tra i programmi e le iniziative troviamo:

  • NGI Taler: che promuove sistemi di pagamento digitali sicuri e affidabili
  • NGI Zero Commons Fund: sostiene lo sviluppo di beni comuni digitali e tecnologie open source.
  • NGI Mobifree: supporta un ecosistema mobile aperto e tecnologie free e open source.
  • NGI Exploratory Actions: finanzia progetti di ricerca e sviluppo su tecnologie innovative per l'Internet del futuro.
  • NGI Assure: incentrato sulla sicurezza e la resilienza di Internet.
  • NGI Atlantic: volto a promuovere la cooperazione internazionale nella ricerca e innovazione su Internet.

Tra gli investimenti fatti da agenzie governative uno dei casi più noti di contributi nel settore open source riguarda la NASA[4], che ha rilasciato una piattaforma open source di visualizzazione geospaziale 3D chiamata Worldwind[12], utilizzata in ambiti urbanistici, scientifici ed educativi

Contributi privati

Uno dei primi contributi portati da aziende nell’open source è la creazione di Kubernetes nel 2014, un progetto open source per l’orchestrazione di container realizzato grazie a Google. Il progetto è stato però successivamente donato all’azienda CNCF (Cloud Native Computing Foundation)[13] Anche l’azienda informatica Microsoft[5] ha dato un notevole contributo al settore, in particolare con il rilascio del codice sorgente su Github di Visual Studio Code[14], un editor di testo ad oggi molto utilizzato dagli sviluppatori grazie alla sua versatilità e alle estensioni rese disponibili anche dagli utenti stessi, risultando quindi molto utile nel settore informatico per utenti dotati di qualsiasi livello di competenza. La società di sviluppo software Red Hat[6] ha investito in Fedora[15], ovvero una distribuzione Linux community-driven, servita come base sperimentale per il sistema operativo Red Hat Enterprise Linux (RHEL).

Caratteristiche Principali

Four freedoms

Con l’espressione “four freedoms” si riferisce ai quattro principi fondamentali dell’open source, definiti da Richard Stallman.

  • La libertà 0 (cioè la libertà di eseguire il programma come si desidera) implica libertà per qualsiasi persona o organizzazione di utilizzare il programma open source su qualsiasi tipo di sistema informatico, per qualsiasi tipo di attività e senza dover successivamente comunicare con lo sviluppatore o con qualche altra entità specifica. Tale condizione favorisce lo scopo individuale dell’utente, che però non potrà imporre le proprie intenzioni iniziali ad un eventuale utente a cui è stato ridistribuito. Un codice fallimentare, che comprometterebbe l’utilità di un programma, può essere ulteriormente modificato da altri utenti. La libertà di eseguire un programma include, per necessità di cose, la libertà di non eseguirlo.
  • La libertà 1 (cioè la libertà di studiare il codice sorgente e di apportare modifiche), per essere in vigore, prevede che sia libero l’accesso al codice sorgente. Il programma deve quindi eseguire incondizionatamente le modifiche apportate da ciascun utente. Per rispettare la condizione posta, è necessario che si possano includere nel programma anche moduli già esistenti, anche se l’utente che apporta le modifiche non ne detiene il copyright. Stabilire il valore delle modifiche in quanto migliori o peggiori contribuisce quindi a non rendere libero un programma, ma in accordo alla libertà 1 è prevista la possibilità di cancellare un programma.
  • La libertà 2 (cioè la libertà di ridistribuire copie da altri utenti), implica la libertà di distribuire gratuitamente o addebitando costi di distribuzione, senza chiedere o concedere alcun tipo di permesso, che dall’altra parte permette di conservare e utilizzare privatamente le proprie modifiche per qualsiasi scopo. La libertà di ridistribuire copie deve includere la possibilità di includere forme binarie o eseguibili del programma, che si tratti o no di versioni modificate, nel caso queste non vi siano ancora implementate.
  • La libertà 3 (cioè la libertà di distribuire pubblicamente le proprie modifiche), comprende in sé condizioni analoghe a quanto stabilito per la libertà 2. Contiene però all’interno dei suoi principi il rilascio di una licenza libera, da cui deriveranno naturalmente altre versioni libere arricchite da ulteriori modifiche.

Regola sulla produzione di pacchetti, sulla distribuzione e sull'esportazione

Sono anche accettabili regole su come pacchettizzare una versione modificata, purché non limitino in modo determinante la libertà di distribuire versioni modificate o di produrre versioni modificate, aumentando quindi la complessità. Risulta più controverso un contesto in cui una licenza richiede di cambiare il nome con cui il programma sarà chiamato da altri programmi. Ciò impedisce il rilascio della versione modificata in modo che possa sostituire l'originale quando chiamata dagli altri programmi. Risulta possibile un concilio solo con lo scopo di aliasing, cioè una funzionalità che permette di specificare il nome originario del programma come alias della versione modificata.

Licenze e possibilità legali

Se lo sviluppatore del software ha il potere di revocare la licenza o di sostituirla con una più restrittiva, anche nel caso in cui sia l'utente la causa della revoca, il software non si può considerare libero. Una licenza libera non può chiedere il rispetto dei termini di una licenza di un programma non libero: se una licenza obbliga l'utente a rispettare le licenze di “tutti i programmi che usa”, nel caso di un utente che usa anche programmi non liberi, sarebbe necessario che l'utente rispetti la licenza dei programmi non liberi utilizzati, dunque non risulterebbero rispettate le condizioni di esistenza del concetto di licenza libera. È però accettabile che una licenza specifichi quale giurisdizione si applica, o quale sede di localizzazione è designata. La maggior parte delle licenze di software libero sono basate sul copyright, il quale impone per necessità di cose dei limiti ma a cui ne vengono a sua volta imposti di altri. Se una licenza basata sul copyright rispetta le condizioni designate da Stallman nella sua teorizzazione delle four freedoms, è improbabile, anche se non impossibile, che si possa incorrere in qualche problema di natura legale. Ciò nonostante alcune licenze di software libero sono basate su contratti, i quali possono imporre una maggiore quantità di restrizioni: vi sono quindi molti modi possibili di infrangere quanto stabilito dalle condizioni di libertà di una licenza, rendendo complesso il processo di stipulazione di un contratto. Se una licenza basata su contratto restringe i diritti dell'utente in una maniera non conforme e non citata qui come legittima, si tratta di un effrazione della libertà della licenza.

Impatto sull'industria tecnolgica moderna

Un progetto open source, per ritenersi riuscito, specialmente calato in un contesto non specialistico, deve adattare le proprie caratteristiche (modello di collaborazione aperta, modificabilità e licenza libera) alle conseguenti pratiche accademiche, alla gestione delle proprie reputazione e affidabilità, alla valutazione della qualità e ai diversi regimi di proprietà intellettuale. Ad esempio la piattaforma Connexions (non più disponibile dal 31 dicembre 2022), successivamente nota come OpenStax CNX, nata con l’intenzione di creare e distribuire contenuti educativi, per rendere possibile la riutilizzabilità di ciò che veniva caricato richiedeva agli autori di pubblicare i propri materiali sotto la licenza Creative Commons, la quale fa sì che l’autore conceda ad altri il diritto di distribuire e visualizzare copie delle proprie opere, così come offre a chiunque il diritto di derivare altre opere dal materiale sotto tale licenza, purché l’autore venga accreditato. Le pratiche di riuso e modifica sono essenziali per la diffusione di materiale online, ma sono difficili da tramandare dal contesto open source ad altri ambiti più restrittivi.
La libertà di accesso e modifica del codice sorgente, di vitale importanza nell’open source, prospera grazie al consenso culturale che vige tra i programmatori, grazie agli strumenti tecnici che rendono visibili i cambiamenti (come Git e altri sistemi di versioning) e alle licenze che aiutano a regolare le azioni permesse sul codice sorgente. Non esistono però norme stabili su svariati aspetti di tale libertà, in particolare nulla di certo su cosa è un riuso legittimo, sul concetto di modifiche rispettose di un materiale originale, su come attribuire retribuzioni e meriti in un ambito in cui chiunque può contribuire e soprattutto su quanto una modifica necessiti di essere documentata.
In ambiti scientifici ed educativi tali ambiguità limitano le possibilità del riuso perché gli autori temono di poter perdere il controllo dei propri contenuti, così come gli utenti non sanno fin dove possano spingersi i propri diritti legati alle modifiche di qualsiasi materiale; si tratta di due problematiche particolarmente accentuate da una diffusa assenza di cultura condivisa sui concetti di riuso e modifica. Connexions ha riscontrati questi stessi problemi, che insieme alle necessità imposte dai linguaggi tecnici utilizzati, si sono rivelati determinanti ai fini della chiusura della piattaforma, la quale si avvalse sempre di meno delle possibilità date dall’open source. La diffusione degli ideali del free software ha però cambiato le forme e le funzioni delle opere, ha rivoluzionato il concetto di autore e profondamente messo in discussione le gerarchie del sapere tra coloro che si occupano della stesura di qualsiasi materiale. Ciò è avvenuto anche grazie alle pari attenzioni riservate agli aspetti tecnici e agli aspetti sociali all’interno dei progetti, unite nell’ambito della coordinazione tecnico-sociale, a cui è dovuta una nuova organizzazione sociale in pubblici ricorsivi cioè comunità che costruiscono software e licenze che permettono la loro stessa esistenza. Viene favorita quindi l’adattabilità alla pianificazione, in accordo ai principi che permettono ad un’entità open source di prosperare: un’entità adattabile permette una forma di critica attiva, in cui vengono proposte alternative operative e non solo discorsive.

Esempi noti di associazioni open source

GNU

Acronimo ricorsivo di GNU' Not Unix, si tratta di un sistema operativo Unix-like, ideato inizialmente nel 1984 da Richard Stallman e inserito nei principali progetti della Free Software Foundation (sempre di creazione di Stallman). Stallman teorizzò un sistema operativo open source come risposta ai cambiamenti avvenuti all’inizio degli anni ‘80 all’interno del suo laboratorio di intelligenza artificiale e, più in generale, nel contesto della diffusione di dati tra programmatori: se all’inizio, negli anni ‘70, aveva luogo un grande scambio di dati nell’ambiente, secondo una logica simile a quella dell’attuale software libero ma senza norme connaturate tra gli operatori, avvenne un progressivo rimpiazzo di tali dinamiche in favore dell’ascesa del software proprietario, che aumentò la privatizzazione nell’ambito della ricerca. Dunque Stallman lasciò la sua posizione lavorativa al MIT e il 27 settembre 1983 e rilasciò la prima versione del manifesto GNU. Due anni dopo, per ampliare le possibilità di sviluppo di GNU e di software libero in generale, creò insieme ai suoi collaboratori la Free Software Foundation (FSF), i cui dipendenti hanno scritto e curato svariati pacchetti del sistema operativo, di cui i più importanti sono Bash e libc (libreria C, una collezione di macro e tipi che fornivano funzionalità fondamentali per il linguaggio C), compatibile e utilizzata per comunicare con il kernel Linux. Furono ampliati i finanziamenti perché lo scopo di Stallman e della FSF era la creazione di un software completo, che non riguardasse solo specifici settori tecnici.
Nel 1986 è cominciato lo sviluppo del kernel GNU Hurd, inizialmente lavorato sulla base di di TRIX ma dal 1988 continuato sulla base di Mach. Lo sviluppo di GNU Hurd viene tuttora portato avanti dalla FSF, ma non è ancora reputato utilizzabile nell’ambiente di produzione. Nel 1991 venne deciso di abbinare il software GNU al neonato kernel Linux, per poi essere con il passare degli anni anche abbinato ai kernel XNU, netBSD, freeBSD e Solaris.

Linux

Si tratta di un kernel creato da Linus Torvalds derivato dal sistema operativo Unix, inizialmente lanciato come software proprietario nel 1991, ma reso software libero dal 1992, nonostante comprenda alcuni firmware sotto licenze non libere. Dal kernel è nato il sistema operativo omonimo.
Torvalds, studente universitario ad Helsinki, aveva iniziato a programmare il kernel su un'architettura MINIX, come documentato dal messaggio da lui scritto il 25 agosto 1991, unito al lancio della versione 0.01 del kernel. Da subito molti collaborarono al progetto, tanto che il 5 ottobre 1991 venne pubblicata la versione 0.02, che ebbe però meno successo della precedente. Il 19 gennaio 1992 fu creato il newsgroup alt.os.linux, diventato comp.os.linux il 31 marzo dello stesso anno. Il 14 marzo 1994 fu pubblicato Linux 1.0.0, con 176.250 linee di codice.
Linux è un kernel monolitico, quindi tutti i driver devono avere una parte eseguita in kernel mode e, trattandosi di un caso di open source, il codice sorgente è pubblico e modificabile nei punti che non ne compromettono il funzionamento primario. Sebbene non fosse stato progettato per essere portabile, Linux è uno dei kernel di sistema operativo dotati di maggiore portabilità, dunque in grado di funzionare su un'ampia gamma di sistemi. Successivamente è stato rilasciato Linux-libre, variante completamente libera di Linux, da cui sono nate conseguenti distribuzioni completamente libere. L’ultima versione rilasciata, nella data 20 gennaio 2025, è la 6.13. Linux ha un’organizzazione gerarchica flessibile, in cui Linus Torvalds occupa il ruolo di leader che accetta però modifiche apportate da qualsiasi utente: è così che la gestione si è evoluta per incorporare contributi mantenendo una certa coerenza progettuale. L’ascesa di Linux ha segnato un punto di svolta nell’ambito della programmazione perché ha reso possibile l’esecuzione di sistemi operativi potenti su hardware economici.

Apache HTTP Server

Si tratta di una piattaforma server web libero sviluppato dalla Apache software foundation, la più diffusa, grazie alla sua possibilità di operare su una grande varietà di sistemi operativi. Si occupa del trasporto di informazioni e offre funzioni di controllo per la sicurezza.
Il progetto partì dopo la creazione di una mailing list alla fine di febbraio del 1995, costituita da otto persone (Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau ed Andrew Wilson). Inizialmente il progetto si basava sulla versione 1.3 del daemon HTTP NCSA, con l'aggiunta di alcune correzioni e fu rilasciata la prima versione di Apache ad aprile 1995, la 0.6.2. Poco dopo nella versione 0.8.8 fu integrata una nuova architettura server, a cui fu dato il nome Shambala. La versione 1.0 fu pubblicata il 1º dicembre 1995 e nel giro di un anno la sua diffusione aveva superato quella del server NCSA da cui era iniziato il progetto.
La società di monitoraggio della rete internet Netcraft fu autrice di un’indagine statistica, che portò i seguenti risultati: su 75 milioni di siti web, circa 52 milioni utilizzavano Apache e ad ottobre 2006 il numero era salito a 60 milioni. Ad oggi Apache web server viene utilizzato dal 51,01% del totale dei domini italiani registrati. Il web server Apache è caratterizzato da un'architettura modulare, per questo ad ogni richiesta del client vengono svolte funzioni specifiche da ogni modulo, il cui controllo è gestito dal core. Un demone esegue un ciclo di polling sopra al core e attraverso esso vengono interrogate continuamente le linee di codice da cui arrivano i messaggi di richiesta. Il core trasporta ogni richiesta ai vari moduli, usando i parametri di uscita di un modulo come parametri di accesso per il successivo. Apache usa un sistema di votazione tra gli sviluppatori per selezionare le modifiche altrui da includere. Funge quindi da esempio di coordinamento democratico, in cui gli sviluppatori discutono e testano qualsiasi eventuale patch. Apache ricopre un ruolo importante nel contesto dello sviluppo web perché ha permesso a numerosi siti web, anche amatoriali, di installare server web gratuitamente e facilmente e, insieme al kernel Linux, fa parte di un insieme di esperimenti riusciti che dimostrano come la coordinazione adattiva sostituita ad un approccio incentrato sulla pianificazione possa non solo funzionare, ma presentare modelli produttivi all’avanguardia, in cui la priorità è la creatività, a scapito delle necessità commerciali di un’azienda tradizionale e dei conseguenti ritmi di produzione imposti.

Bibliografia