giovedì 22 novembre 2018

Introduzione a Linux e Open Source - Storia


IBM 601 - 1961
da sinistra: lettore schede perforate,, 2 "hard disks" macchina da scrivere per schede perforate e il "processore"

Negli anni 50 i computers erano grandi, complessi e incredibilmente costosi.

Ogni azienda o agenzia di governo aveva sistemi diversi, "fatti in casa",comprati su misura e utilizzando schede perforate di formato diverso.

A partire dal 1961, IBM introduce una nuova serie di calcolatori digitali e diventa uno "standard" per altri costruttori.

Negli anni '70, una nuova generazione di giovani cominciava a uscire dalle università avendo fatto pratica su questi sistemi.

2 programmatori nel laboratorio "Bell" della compagnia di telecomunicazioni americana AT&T,  cominciano a scrivere UNIX, un Sistema Operativo capace di usare risorse in modo molto piu' efficente.

Al''inzizio UNIX doveva essere usato solo da un altra compagnia telefonica che usava i suoi prodotti, ma visto il potenziale, AT&T decise di distribuirlo sotto licenza a Università, governi e compagnie commerciali che creano i loro derivati, come University of California, Berkeley (BSD), IBM (AIX), and Sun Microsystems (Solaris).

Il primo prodotto della MicroSoft e' stato il Sistema Operativo Xenix, sotto licenza UNIX.
Il secondo e' stato il semplificato MS-DOS, il terzo Windows ...

Anche Apple Mac OSX deriva da BSD con una variante chiamata Darwin.



Programmi di Utilità (tools), come editori, compilatori, manager del network, file Manager, interfaccia grafica, etc, sono parte integrante dei questi Sistemi Operativi derivati da UNIX, ma adesso diventati "Ibridi

Sono "Close Source", la sorgente del codice appartiene a qualcuno,  non e' normalmente leggibile o modificabile ed e' soggetto a leggi di Proprietà Intellettuale e commerciale..


Nei primi anni '80, Richard Stallman comincia il progetto GNU (GNU is NotUnix!) per creare Sistemi Operativi, utilità e programmi sotto una nuova forma di licenza, Open Source.
Gli autori, permettono non solo di usare e copiare il codice, ma anche di modificare, ampliare, elaborare, e contribuire.
I principi o "filosofia, rimangono quelle di unix:
  • Scrivi programmi che fanno una cosa sola, e la fanno bene.
  • Scrivi programmi che funzionano insieme tra loro.
  • Scrivi programmi capaci di usare testo come input/output, perche' e' un interfaccia universale.
 Alcune parti delle utilità GNU sono GNU Compiler Collection (GCC), GNU C library (glibc), GNU Core Utilities (coreutils), GNU Debugger (GDB), GNU Binary Utilities (binutils) GNU Bash shell


A partire dagli anni '90, Linus Torvald, un giovane laureato in Scienze del Computer in Finlandia, comincia a scrivere le basi per il pezzo principale di un Sistema Operativo moderno, il Kernel.
(Il Kernel comunica direttamente con il processore/memoria/dischi/etc)
Il 5 ottobre 1991, Linus Torvald scrive:
... Vi manca un bel progetto e morite dalla voglia di spezzarvi le ossa con un Sistema Operativo che potete provare a modificare secondo le vostre necessità? Trovate frustrante che su Minix funzioni tutto? Non passate più intere notti per ottenere un programma che lavora meravigliosamente? Allora questo post dovrebbe essere fatto apposta per voi 

Come ho detto un mese fa, sto lavorando su una versione libera di un clone di Minix per computer AT-386. ....... È solo la versione 0.02 ..., ma ho avviato con successo la shell bash/GCC/GNU-make/GNU-sed/compress eccetera.... >>

Ispirato dal progetto GNU, decide di chiamarlo Linux (Linux is Not Unix!) e distribuirlo con una licenza Open Source

L'accoppiata del Linux Kernel con le utilità GNU si rivela felicissima.
Volontari cominciano a scrivere codice per aggiungere architettute,  funzionalità, velocizzare i sistemi e incrementare la sicurezza di GNU/Linux

Mentre negli alti piani degli uffici si lavorava con Windows e Mac OS, negli scantinati e capannoni industriali, sui delicati , fragili e costosi computers, Open Source Software regna sovrano.

Il webserver Apache, il Linux Kernel ,Mozilla, MediaWiki  (usato da Wikipidia), Sendmail, wget end cURL hanno rivoluzionato le vie di comunicazione globale. 

Per facilitare l'uso e ottimizzare le risorse su tipi di computers diversi, alcuni volontari cominciano a creare liste dei diversi pezzi necessari per avere un Sistema Operativo completo e funzionante.
Nascono cosi' le "distribuzioni", di solito con una combinazione di uno o piu :
  • bootloader, (come grub),
  • linux kernel,
  • le utilita' di GNU, (compilatore, interfaccia "shell", binarie)
  • [Opzionale], un DE (Desktop Environment) per interfaccia grafica (Gnome, KDE, lxe)
Oggi ci sono centinaia di Distribuzioni diverse, ottimizzate per hardware e scopi diversi. Supercomputers, portatili, PC, Droni, circuiti integrati, satelliti, robot industriali, smarthphones, smartcars, tutte hanno al centro un una variante del sistema GNU/Linux.



Oggi (dicembre 2018)  il sistema GNU/Linux e' usato in
  • personal computer
  • cellulari
  • tablet computer e game consoles
  • mainframes
  • supercomputers
  • servers, routers e sistemi embedded (satelliti, droni, smart tv)

GNU/Linux Distributions Timeline - Wikimedia Commons

https://it.wikipedia.org/wiki/Unix 
https://it.wikipedia.org/wiki/Open_source 
https://it.wikipedia.org/wiki/Linux

Nota Controversia sul nome GNU/Linux.

"" Nonostante la maggior parte delle persone chiami il sistema operativo semplicemente "Linux", la Free Software Foundation ha promosso fortemente la diffusione del termine GNU/Linux

Linux non è un sistema operativo unix-like, ma un kernel per sistemi unix-like.
È stato fatto un parallelismo fra dire «sistema operativo Linux» e dire «auto guidata dal carburatore». ""

Nota sulla Nota, e' opinione personale del''autore che l'analogia "dire «sistema operativo Linux» e dire «auto guidata dal carburatore»" è molto esagerata.
 Nonostante l'eccezzionale lavoro di Stallman e Team (massimo rispetto, gratitudine e parte dei miei "eroi") , Linus Torvald, sia come "curatore" e "contributore",  ha distribuito un kernel per piu' di 20 anni, che e' cresciuto in qualita' e usi che non erano lontanamente realizzabili o anche pensabili al tempo.
Tux, Linux Logo