Con open source (; in italiano sorgente aperta), in informatica, si indica un software distribuito, generalmente in via gratuita, che concede lo studio, l'utilizzo, la modifica e la redistribuzione. Questo modello si pone in contrapposizione con l'idea di software proprietario che permette le sopracitate concessioni solo secondo i termini dettati dal detentore del Copyright. Vedi anche FOSS.
Storia Le esigenze tecnologiche degli anni 1940-1970 Negli anni quaranta il problema della condivisione del codice si poneva in termini molto diversi da quelli attuali. Esistevano pochi computer, costruiti spesso in un unico esemplare e con specifiche hardware molto diverse e non compatibili. Basti pensare che solo nel 1951 una ditta metterà a listino un modello di computer, il Ferranti Mark 1. Di conseguenza anche il software che veniva sviluppato caso per caso non poteva essere trasportato su altre macchine e aveva standard di riferimento a cui attenersi. D'altra parte, le conoscenze di programmazione venivano liberamente condivise in quanto erano considerate più simili alle conoscenze scientifiche che a quelle industriali.
Verso la fine degli anni cinquanta, e soprattutto negli anni sessanta, è stato possibile riusare lo stesso codice e distribuirlo, anche se in modo oggi ritenuto piuttosto artigianale, ovvero con nastri e schede perforate. Questo fenomeno diventò evidente soprattutto quando si affermò il vantaggio di usare una stessa porzione di codice, il che presupponeva di avere macchine uguali e problemi simili.
Fino a tutti gli anni settanta, anche se in misura decrescente, la componente principale e più costosa di un computer era l'hardware, il quale era comunque inutile in assenza di software. Da ciò la scelta dei produttori di hardware di vendere il loro prodotto accompagnato da più software possibile e di facilitarne la diffusione, fenomeno che rendeva più utili le loro macchine e dunque più concorrenziali. Il software, tra l'altro, non poteva avvantaggiare la concorrenza in quanto funzionava solo su un preciso tipo di computer e non su altri, spesso neanche su quelli dello stesso produttore. Un altro fattore che favorì lo sviluppo di software condiviso fu la diffusione di linguaggi di programmazione. Specie in ambito scientifico un programma scritto in Fortran poteva essere scambiato tra diversi ricercatori. La disponibilità del codice sorgente era indispensabile per apportare le piccole modifiche rese necessarie dai "dialetti" adottati dalle varie ditte per il linguaggio di programmazione.
Lo sviluppo dei sistemi operativiI sistemi operativi nascono alla fine degli anni Cinquanta. tra i primi si può ricordare lo SHARE Operating System dell'IBM (1959) rese i programmi sempre più portabili, in quanto lo stesso sistema operativo, con gli stessi compilatori, veniva offerto dal produttore sui suoi diversi modelli di hardware. La presenza di sistemi operativi funzionanti per macchine di differenti produttori hardware ampliava ulteriormente le possibilità di usare lo stesso codice in modo relativamente indipendente dall'hardware usato. Uno di questi sistemi operativi era Unix, iniziato nel 1969 come progetto all'interno di un'impresa delle telecomunicazioni, la AT&T. Una famosa causa antitrust contro la AT&T le vietò di entrare nel settore dell'informatica. Questo fece sì che Unix venisse distribuito a un prezzo simbolico a buona parte delle istituzioni universitarie, le quali si ritrovarono ad avere una piattaforma comune, ma senza alcun supporto da parte del produttore. Si creò spontaneamente una rete di collaborazioni attorno al codice di questo sistema operativo, coordinata dall'Università di Berkeley, da dove sarebbe poi uscita la versione BSD di Unix, che diventa da un lato un centro di sviluppo e innovazione, dall'altro è la base di partenza per numerosi fork.
Lo sviluppo di Unix e il software proprietario
Considerato che la condivisione del codice è nata insieme all'informatica, piuttosto che di origini dell'Open Source potrebbe essere più appropriato parlare, invece, di origine del software proprietario, ed esaminare il contesto storico in cui questa origine ha avuto luogo.
L'utilità principale delle licenze restrittive consiste nella possibilità di rivendere un programma più volte, se necessario con alcune modifiche purché non rilevanti. Questo presuppone che esistano clienti diversi con esigenze simili, oltre che l'esistenza di più computer sul quale poter far eseguire il programma. Queste condizioni cominciano a determinarsi negli anni sessanta, grazie al fatto che esisteva un maggior numero di utilizzatori con esigenze standardizzabili come lo erano quelle delle organizzazioni economiche nell'area della contabilità, la logistica o delle statistiche.
L'introduzione dei sistemi operativi rese inoltre possibile l'utilizzo dello stesso programma anche su hardware differente aumentando così le possibilità di riutilizzo dello stesso codice e dunque l'utilità nell'impedire la duplicazione non autorizzata dei programmi.
La suddivisione della AT&T in 26 società, le cosiddette Baby Bell, permise alla AT&T di usare logiche prettamente commerciali nella distribuzione del suo sistema operativo Unix, innalzando notevolmente i costi delle licenze e impedendo la pratica delle patch. Il 1982 fu anche l'anno della divisione delle diverse versioni commerciali di Unix, portate avanti dai singoli produttori di hardware. Questi ultimi, effettuando delle piccole modifiche alla propria versione del sistema operativo, impedirono ai propri utenti l'utilizzo di altri sistemi, facendo in modo che i programmi scritti per la propria versione di Unix non funzionassero su versioni concorrenti.
Anni 1980: Stallman, la Free Software Foundation e l'innovazione dei PC
Al MIT la sostituzione dei computer fece sì che i programmatori non potessero accedere al sorgente del nuovo driver di una stampante Xerox per implementarvi una funzionalità gradita in passato: la segnalazione automatica che vi erano problemi con la carta inceppata. Contemporaneamente, società private cominciarono ad assumere diversi programmatori del MIT, e si diffuse la pratica di non rendere disponibili i sorgenti dei programmi firmando accordi di non divulgazione.
In questo contesto molti programmatori, fra i quali Richard Stallman, che sarebbe diventato il portabandiera del software libero, si rifiutarono di lavorare per una società privata. Stallman fondò nel 1985 la Free Software Foundation (FSF), una organizzazione senza fini di lucro per lo sviluppo e la distribuzione di software libero. In particolare lo sviluppo di un sistema operativo completo, compatibile con UNIX, ma distribuito con una licenza permissiva, con tutti gli strumenti necessari altrettanto liberi. Si tratta del progetto nato l'anno precedente, ovvero GNU, acronimo ricorsivo per contemporaneamente collegarsi e distinguersi da UNIX, ovvero "GNU's Not UNIX".
Tale progetto, finanziato dalla FSF, venne pertanto portato avanti da programmatori appositamente stipendiati. I principali contributi vennero da Stallman stesso: il compilatore gcc e l'editor di testo Emacs. Furono sviluppate anche altre componenti di sistema UNIX, alle quali si sono aggiunte varie applicazioni e veri e propri giochi. Questi programmi furono distribuiti per circa 150$ che oltre a coprire i costi di riproduzione garantivano un servizio di supporto al cliente. L'unica condizione era che tutte le modifiche eventualmente effettuate su tali programmi venissero notificate agli sviluppatori.
Nacque così la GNU General Public License (GPL), il preambolo del cui manifesto comincia con:
Gli anni ottanta sono caratterizzati da alcuni eventi importanti, tra i quali l'introduzione nel mercato di quello che verrà chiamato Personal Computer (PC), ovvero un elaboratore con un proprio processore concepito per essere utilizzato da un solo utente alla volta. Il prodotto di maggior successo, il PC della IBM, si differenziava dai progetti precedenti in quanto non utilizzava componenti IBM, ma sia per il software sia per l'hardware si affidava alla produzione da parte di terzi. Ciò rese possibile da un lato ad altre imprese di clonare il PC IBM, abbattendone notevolmente i costi, dall'altro permise a parecchie società di produrre dei software applicativi standard, in concorrenza gli uni con gli altri, basandosi su un unico sistema operativo, anche se inizialmente i principali produttori di software erano identificabili con prodotti per specifiche applicazioni.
Il notevole ampliamento del mercato rese possibili economie di scala e si instaurò una sorta di sinergia tra quelli che sarebbero diventati i principali attori del settore: il produttore dei processori Intel e il produttore del sistema operativo e di applicativi per ufficio Microsoft. La maggiore potenza dei processori rese possibile lo sviluppo di programmi più complessi, la maggiore complessità degli applicativi e del sistema operativo richiesero processori più potenti instaurando in un certo modo un circolo vizioso di aggiornamenti continui.
Sia il sistema operativo sia gli applicativi furono subito caratterizzati dall'essere destinati a utenti con conoscenze informatiche relativamente scarse e dall'avere licenze d'uso strettamente commerciali, vietando da un lato agli utenti di farne delle copie, dall'altro agli sviluppatori di vedere o modificare il codice.
Sempre negli anni ottanta vennero introdotte le workstation, ovvero un sistema basato su terminali (i client) e computer centrali (i server). Si tratta di sistemi derivati concettualmente dai mainframe e basati essenzialmente su sistemi operativi UNIX proprietari. L'hardware stesso varia sul lato server dai mainframe ai PC, mentre su lato client vengono impiegati soprattutto i PC. Ciò favorì lo sviluppo di software sia per i client, utilizzati spesso da persone con scarse conoscenze informatiche, sia per i server, il cui funzionamento viene solitamente garantito da personale informatico particolarmente qualificato.
Anni 1990: il ruolo di internet
Benché Internet avesse visto la luce già negli anni settanta, è soltanto agli inizi degli anni novanta, con la diffusione del protocollo HTTP e la nascita dei primi browser, che cominciò ad essere diffuso prima in ambito accademico e poi in modo sempre più capillare anche tra semplici privati.
All'inizio degli anni novanta, il progetto GNU non aveva ancora raggiunto il suo obiettivo principale, mancando di completare il kernel del suo sistema operativo (GNU Hurd). Per sopperire a tale mancanza, William e Lynne Jolitz riuscirono a effettuare il porting di UNIX BSD su piattaforma Intel 386 nel 1991. Purtroppo, negli anni successivi tale porting si trovò ad affrontare problemi di natura legale USL v. BSDi che ne ritardarono temporaneamente lo sviluppo.
Nello stesso anno, Linus Torvalds, studente al secondo anno di informatica presso l'Università di Helsinki, decise di sviluppare un proprio sistema operativo imitando le funzionalità di Unix su un PC con un processore Intel 386. Tale processore venne scelto per il suo minor costo e per la sua maggiore diffusione rispetto alle piattaforme hardware per le quali erano disponibili i sistemi operativi Unix. Torvalds era spinto dall'insoddisfazione riguardante alcuni applicativi di Minix (un sistema Unix-like su piattaforma PC), dal desiderio di approfondire le proprie conoscenze del processore Intel 386, e dall'entusiasmo per le caratteristiche tecniche di Unix.
Torvalds distribuì il proprio lavoro tramite Internet e ricevette immediatamente un ampio riscontro positivo da parte di altri programmatori, i quali apportarono nuove funzionalità e contribuirono a correggere errori riscontrati. Nacque così il kernel Linux, il quale fu subito distribuito con una licenza libera.