Microsoft's Internet Explorer browser has no built-in vector graphics machinery required for "loss-free" gradient background themes.

Please upgrade to a better browser such as Firefox, Opera, Safari or others with built-in vector graphics machinery and much more. (Learn more or post questions or comments at the Slide Show (S9) project site. Thanks!)

Desktop GNU/Linux

Software Libero: Origini, Filosofia e Comunita' di sviluppo

Master "Tecnologie OpenSource"

Previously on Desktop GNU/Linux

Desktop GNU/Linux

  1. Introduzione alle tecnologie libere in ambiente Desktop
  2. Software Libero: Origini, Filosofia e Comunita’ di sviluppo
  3. Installazione, Uso del Desktop e Configurazione di Rete
  4. Applicazioni Desktop comuni
  5. Problemi comuni

Software Libero: Origini, Filosofia e Comunita’ di sviluppo – Obiettivi

Software Libero – parte I

Le Origini

  • Prima del Big Bang
  • MIT AI Lab e Richard Stallman
  • Il Big Bang
  • RMS vs. Xerox / RMS vs. Symbolic Inc.
  • La nascita del progetto GNU e della Free Software Foundation
  • Un kernel per GNU: GNU Hurd e l’arrivo di Linux

Le 4 liberta’

  • Definizione delle liberta’
  • Implicazioni Culturali e Didattiche
  • Implicazioni Tecniche ed Economiche

Prima del BigBang

Fino agli anni ‘70 le liberta’ che ai giorni nostri caratterizzano un Software Libero erano la norma:

gli utenti (per lo piu’ concentrati in universita’, grandi aziende del settore ed istituti di ricerca) condividevano il software… ma soprattutto ne condividevano i sorgenti.

MIT AI Lab e Richard Stallman

RMS

Richard Stallman (nato a New York City nel 1953) si laurea in fisica ad Harvard nel 1974 ed entra a far parte dei laboratori di I.A. del MIT come programmatore.

Nei laboratori del MIT entra in contatto con la nascente comunita’ di Hacker che si era sviluppata al MIT a partire dagli anni ’60 con il “Tech Model Railroad Club”.

http://en.wikipedia.org/wiki/Richard_Stallman

MIT AI Lab e Richard Stallman

RMS

Tra i progetti a cui ha lavorato nei laboratori del MIT:

Il BigBang

La nascente industria del Software tra il 1970 e l’inizio degli anni ‘80 comincio’ ad ostacolare queste abitudini inizialmente mediante la distribuzione delle sole copie binarie del software e l’inclusione di clausole di non divulgazione (NDA) all’interno dei contratti di dipendenti e collaboratori, successivamente mediante la minaccia di possibili azioni legali, dopo l’estensione delle leggi sul Copyright al Software avvenuta agli inizi degli anni ’80.

Anche nella comunita’ degli Hobbysti c’era chi cominciava a seminare il seme della discordia:

RMS vs. Xerox

La prima volta in cui RMS si scontra con la nuova dura realta’ risale alla fine degli anni 70 quando la Xerox dona una delle prime stampanti laser al MIT AI Lab…

http://www.gnu.org/events/rms-nyu-2001-transcript.txt

RMS vs. XEROX

RMS vs. Symbolic Inc.

Ma l’evento che spinse RMS ad elaborare quello che divenne il progetto GNU e la licenza GPL fu’ lo scontro con Symbolic Inc. (una azienda spinoff del MIT AI Lab) per avere accesso alle modifiche effettuate da quest’ultima ad una sua creazione: Emacs

La nascita del progetto GNU e della Free Software Foundation

L’ incidente con la Symbolic Inc. convince RMS della necessita’ di una strategia piu’ articolata del semplice “Noi rilasceremo i sorgenti, Voi fate come vi pare”

La nascita del progetto GNU e della Free Software Foundation

  • Nel 1983 lancia il progetto GNU con l’obiettivo di scrivere un sistema operativo i cui sorgenti fossero completamente liberi
  • Nel 1985 scrive il Manifesto GNU che verra’ pubblicato Dr. Dobb’s Journal of Software Tools per spiegare e definire gli obiettivi del progetto GNU
  • Nello stesso anno fonda la Free Software Foundation un associazione no-profit con lo scopo di supportare il progetto GNU e la nascente comunita’ del Software Libero
  • Nel 1986 viene pubblicata per la prima volta dalla FSF la definizione di Software Libero
  • Nel 1989 viene rilasciata la prima versione della licenza GPL (GNU Public License), una generalizzazione delle licenze utilizzate precedentemente in alcuni dei primi software del progetto GNU (GNU Emacs, GDB e GCC)
GNU

Un kernel per GNU: GNU Hurd e l’arrivo di Linux

All’inizio degli anni 90 il progetto GNU aveva quasi completato la riscrittura della maggior parte delle utility standard di un sistema Unix ed aveva un ottimo editor (Emacs) e un set di compilatori e linker (GCC).

Dove possibile si cerco’ di evitare di riscrivere componenti di cui esistevano gia’ implementazioni libere (TeX e X-Windows ad esempio).

A questo punto mancava solo una componente per avere un sistema operativo sufficientemente completo da poter essere eseguito senza ricorrere a componenti proprietarie: il Kernel

Un kernel per GNU: GNU Hurd e l’arrivo di Linux

Inizialmente pensarono di riutilizzare un kernel compatibile con UNIX e sviluppato al MIT chiamato: TRIX

Poi valutarono la possibilita’ di adattare BSD 4.4-Lite sviluppato nell’universita’ di Berkeley.

Alla fine (nel 1988) il progetto opto’ per lo sviluppo di un nuovo kernel basato sul microkernel Mach sviluppato alla Carnegie Mellon University.

Questa scelta di design fu’ quella che allontano’ il progetto GNU dai sistemi UNIX tradizionali:

GNU Hurd e’ un insieme di server in spazio utente per offrire a Mach (il microkernel) prima uno strato di compatibilita’ Posix e poi funzionalita’ totalmente nuove.

Un kernel per GNU: GNU Hurd e l’arrivo di Linux

Ma questa scelta innovativa si rivelo’ presto piu’ complessa del previsto… quello dei sistemi a microkernel puri e’ un campo di ricerca (minato :-D) in cui molti sono rimasti bloccati…

GNU Hurd

Un kernel per GNU: GNU Hurd e l’arrivo di Linux

Linus Torvalds

Linus Torvalds

Nel 1991 uno studente dell’Universita’ di Helsinki comincio’ a lavorare ad un kernel per 80386, spinto dalla voglia di avere un sistema operativo simile a MINIX sul suo nuovo PC: Linux

MINIX era un sistema operativo a microkernel per sistemi a 16bit sviluppato da Andrew Tanenbaum (suo professore di Sistemi Operativi all’Universita’ di Helsinki) a scopo didattico.

Un kernel per GNU: GNU Hurd e l’arrivo di Linux

Linus Torvalds

Tra i due ci furono anche delle accese discussioni tecnico-filosofiche riguardo i due opposti approcci (http://en.wikipedia.org/wiki/Tanenbaum-Torvalds_debate):

  • basato su Microkernel e scritto in C (MINIX)
  • basato su kernel Monolitico e scritto in C / Assembler (Linux)
TUX

Le 4 liberta’

RMS

“Free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer.”

Definizione delle liberta’

Free software is a matter of the users’ freedom to run, copy, distribute, study, change and improve the software. More precisely, it refers to four kinds of freedom, for the users of the software:

Nota: gli hacker iniziano a contare da 0!

Implicazioni Culturali e Didattiche

Implicazioni Culturali

  • il Software Libero educa alla Condivisione
  • il Software Libero educa alla Legalita’ non perpetrando la bugia della copia illegittima di software proprietario
  • il Software Libero consente agli utenti di essere dei buoni vicini non impedendo la Condivisione Libera e Spontanea con forzature/restrizioni legali (EULA e NDA)
  • il Software Libero spinge la Cultura del Software e della Tecnologia anziche’ il loro mero Consumo

Implicazioni Didattiche

  • il Software Libero, consentendo a tutti l’accesso ai sorgenti di programmi avanzati e completi, fornisce una fonte inesauribile dall’immenso valore didattico
  • il Software Libero consente il diretto contatto tra gli sviluppatori esperti e le nuove leve attraverso le Comunita’ di Sviluppo, rappresentando una occasione irrinunciabile per gli aspiranti programmatori
  • il Software Libero consente di studiare gli Standard dell’informatica attraverso implementazioni complete di sorgenti
  • il Software Libero consente la sperimentazione di nuove soluzioni mediante adattamenti o riscritture di software esistenti

Implicazioni Tecniche ed Economiche

Implicazioni Tecniche

  • il Software Libero rappresenta una solida base su cui costruire soluzioni complesse
  • il Software Libero consente di ridurre tempi e costi di ricerca e sviluppo consentendo utilizzo, modifica e redistribuzione di applicazioni esistenti
  • il Software Libero complica la diffusione di malware (virus, trojan, backdoor) attraverso la disponibilita’ dei sorgenti e il bugtracking/debuggin aperto e distribuito

Implicazioni Economiche

  • il Software Libero consente modelli di sviluppo piu’ scalabili e sostenibili
  • il Software Libero da ai propri utenti la completa indipendenza dal fornitore
  • il Software Libero consente il controllo completo del trattamento dei propri dati: preservandone la possibilita’ di lettura futura e impedendo l’uso improprio da parte del fornitore all’insaputa dell’utente
  • il Software Libero consente la riduzione (se non la risoluzione) di problemi come il Digital Divide e l’elevato Consumismo Elettronico

Software Libero – parte II

Open Source Initiative

  • Eric Raymond e “The Cathedral and the Bazaar”
  • La nascita dell’OpenSource Initiative
  • Differenze tra OpenSource Initiative e FreeSoftware Foundation
  • Critiche al modello di sviluppo
  • Le licenze

Le Comunita’ di Sviluppo

  • La nascita delle distribuzioni
  • Sviluppo Collaborativo
  • Le principali comunita’ di sviluppo: GNU, Apache, Mozilla, Gnome, KDE, Ubuntu
  • Strumenti di Collaborazione
  • Project Hosting: Sourceforge.net e i suoi fratelli

Eric Raymond e “The Cathedral and the Bazaar”

Eric Raymond

Nel 1997 Eric Raymond scrive un articolo intitolato The Cathedral and the Bazaar in cui confronta il modello di sviluppo classico a “Cattedrale” , utilizzato dalla maggioranza dei software proprietari e all’epoca dallo stesso progetto GNU, e il modello di sviluppo a “Bazaar” , inaugurato secondo l’autore da Linus Torvalds ed il suo Linux:

Given enough eyeballs, all bugs are shallow

http://en.wikipedia.org/wiki/Eric_S._Raymond

La nascita dell’OpenSource Initiative

Eric Raymond, Jon Hall, Larry Augustin, Bruce Perens OpenSource TM

Nel 1998 Eric Raymond fonda insieme a Bruce Perens, Larry Augustin e Jon Hall la Open Source Initiative , un’organizzazione nata allo scopo di fare da ponte tra il mondo commerciale dell’informatica e l’enorme potenziale del movimento del software libero, stemperandone gli aspetti socio-filosofici e dipingendolo piu’ come un modello di sviluppo che come pratica di convivenza/condotta corretta.

http://en.wikipedia.org/wiki/Open_Source_Initiative

Differenze tra OpenSource Initiative e FreeSoftware Foundation

Richard Stallman e la Free Software Foundation criticano all’ Open Source Initiative l’eccessiva concentrazione sugli aspetti tecnici del movimento, in quanto rischia di distrarre gli utenti dalle motivazioni morali e dalle liberta’ che un software deve consentire per essere libero , e consentono in questo modo l’ingresso di software semi-free o completamente proprietari.

I due movimenti non sono nettamente separati ma rappresentano due diverse visioni all’interno della medesima comunita’:

“We disagree on the basic principles, but agree more or less on the practical recommendations. So we can and do work together on many specific projects.” (Why Free Software is better than Open Source)

Differenze tra OpenSource Initiative e FreeSoftware Foundation

Saint IGNUcius

Critiche al modello di sviluppo

RMS e la FreeSoftware Foundation non avevano tutti i torti quando sottolineavano che esaltare esclusivamente la componente pragmatica poteva in qualche modo essere controproducente.

Molte delle critiche che vengono rivolte al Software Libero infatti riguardano proprio la presunta superiorita’ del modello a Bazaar:

Critiche al modello di sviluppo – Halloween Documents, FUD e “Embrace, extend and extinguish”

E anche vero pero’ che sono state condotte ricerche ed analisi che presentano conclusioni a favore del modello a Bazaar:

Cosi’ come e’ un dato di fatto che Microsoft stessa mentre pubblicamente minimizza la competitivita’ delle soluzioni FLOSS (Free Libre Open Source Software), nascondendo al contrario un elevato timore e l’elaborazione ufficiosa di contromisure di opinabile correttezza…

Le licenze

Come e’ possibile verificare visitando gli elenchi delle licenze compatibili delle due correnti (FreeSoftware Foundation e OpenSource Initiative), il panorama delle licenze di software libero e open e’ molto vasto; a contribuire al loro studio e revisione dal punto di vista legale vi sono numerosi docenti e studiosi di legge, tra cui Moglen e Lessig.

Le licenze – GPL e LGPL

GPL (1989) : la prima licenza pubblicata dalla FreeSoftware Foundation ed ancora oggi una delle piu’ utilizzate (es. GNU Emacs, GCC etc.)

http://en.wikipedia.org/wiki/GNU_General_Public_License

LGPL (1991) : e’ una versione piu’ permissiva dal punto di vista del linking della GNU GPL, scritta ed utilizzata per la prima volta per le GNU Libc.

http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License

Le licenze – MIT e BSD

MIT (1988) : e’ una licenza piu’ permissiva delle licenze GNU, permettendo il riuso dei sorgenti in software proprietari (es. X Windows, Mono Class libraries, Lua e Ruby On Rails)

http://en.wikipedia.org/wiki/MIT_License

BSD (1990) : e’ una famiglia di licenze nate dall’Universita’ di Berkeley, sono molto piu’ permissive delle licenze GNU, simile al rilascio Public Domain (es. FreeBSD, OpenBSD etc.)

http://en.wikipedia.org/wiki/BSD_licenses

Le licenze – Apache e Mozilla Public License

Apache License (1995) : e’ una licenza simile alle BSD ma con una clausola di attribuzione aggiuntiva. (Apache HTTPD e gli altri progetti dell’Apache Foundation)

http://en.wikipedia.org/wiki/MIT_License

Mozilla Public License (1990) : e’ una licenza creata per il progetto Mozilla e rappresenta un ibrido tra la GNU GPL e le licenze BSD (es. Mozilla Firefox, Thunderbird, Sunbird)

http://en.wikipedia.org/wiki/BSD_licenses

La nascita delle distribuzioni

La nascita delle distribuzioni e’ stata fondamentale per la diffusione dei primi prototipi di sistemi GNU/Linux.

Da allora hanno partecipato ai progetti di standardizzazione (LSB, FreeDesktop etc.) e fungono da punti di concentrazione nella complessa comunita’ di sviluppo globale insieme alle comunita’ di sviluppo dei progetti piu’ grandi (XWindows, GNOME, KDE, Mozilla)

tante piccole Cattedrali nel grande Bazaar

http://en.wikipedia.org/wiki/Linux_distribution

La nascita delle distribuzioni – Slackware

Slackware

Slackware (1993) : creata da Patrick Volkerding… One Man Band

http://en.wikipedia.org/wiki/Slackware

La nascita delle distribuzioni – Debian / Ubuntu

Slackware


Ubuntu

Debian (1993) : create da Ian Murdock con l’idea di creare una distribuzione sviluppata da una comunita’ di sviluppo sullo stile del progetto GNU.

http://en.wikipedia.org/wiki/Debian

Ubuntu (2004) : creata su iniziativa del venture capitalist Mark Shuttleworth (Canonical Ltd.) come derivata del progetto Debian.

http://en.wikipedia.org/wiki/Ubuntu

La nascita delle distribuzioni – RedHat / Fedora

RedHat


Fedora

RedHat (1994) : creata da Marc Ewing, e’ stata la prima distribuzione commerciale e la prima societa’ quotata in borsa ad avere nel software libero il proprio core business.

http://en.wikipedia.org/wiki/RedHat

Fedora (2003) : creata da RedHat come derivata libera del loro prodotto commerciale RedHat Enterprise.

http://en.wikipedia.org/wiki/Fedora_operating_system

La nascita delle distribuzioni – SUSE

SUSE

SUSE (1994) : distribuzione commerciale nata come localizzazione tedesca di Slackware e diventata nel tempo una distribuzione RPM-Based (RedHat Packager Manager), acquisita nel 2004 da Novell.

http://en.wikipedia.org/wiki/SUSE_Linux_distributions

La nascita delle distribuzioni – Gentoo

Gentoo

Gentoo (2002) : sviluppata da Daniel Robbins con l’obiettivo di creare una distribuzione compilata dai sorgenti per ottenere il massimo delle performance.

http://en.wikipedia.org/wiki/Gentoo_Linux

Sviluppo Collaborativo

Sviluppo Collaborativo != Sviluppo Amatoriale

Le principali comunita’ di sviluppo – GNU

GNU rappresenta ancora oggi una importante comunita’ di sviluppo del Software Libero:

Le principali comunita’ di sviluppo – Apache

Apache e’ una comunita’ di sviluppo molto importante, contenitore di progetti di grande interesse legati alle tecnologie del Web.

Le principali comunita’ di sviluppo – Mozilla

Mozilla e’ la comunita’ di sviluppo del Mozilla Application Framework, Firefox, Thunderbird, Sunbird etc.

Le principali comunita’ di sviluppo – Gnome e KDE

Gnome e KDE rappresentano due corpose comunita’ di sviluppo.

Strumenti di Collaborazione

Ma le comunita’ di sviluppo distribuite geograficamente hanno bisogno degli strumenti per il coordinamento e lo scambio del lavoro svolto da ogni partecipante.

Strumenti di Collaborazione – MailingList e IRC

Le Email e le Mailing List hanno costituito un importante mezzo di collaborazione per le comunita’ di sviluppo sin dall’inizio, ed ancora oggi rappresentano uno dei mezzi piu’ utilizzati in assoluto.

Le discussioni che richiedono interazione piu’ immediate spesso avvengono su IRC (uno dei primi sistemi di messagistica istantanea)

Strumenti di Collaborazione – Wiki

Il Wiki e’ uno strumento di collaborazione relativamente recente (la prima implementazione risale al 1994).

La sua efficacia e’ soprattutto legata alla semplicita’ ed immediatezza del suo Workflow.

Strumenti di Collaborazione – Source Code Management

I sistemi di Source Code Management rappresentano in qualche modo la memoria della comunita’ di sviluppo sul flusso di sviluppo del codice e aiutano il coordinamento necessario ad integrare il codice dei diversi sviluppatori.

Strumenti di Collaborazione – Bug Tracking System

I sistemi di Bug Tracking (o di Ticket Management) sono applicazioni web per la segnalazione e il tracciamento dello stato di risoluzione di bug e richieste di nuove funzioni.

Project Hosting

Tutta questa iperattivita’ dello sviluppo di software libero necessitava evidentemente di una piattaforma che comprendesse tutti gli strumenti in modo coerente.

Nasce a questo scopo il primo servizio di Project Hosting.

Project Hosting – Sourceforge.net e i suoi fratelli

Il precursore in questo campo e’ stato Sourceforge.net realizzato da VA Software

Dalla versione opensource di SourceForge nascono una serie di servizi gemelli in genere destinati ad ambiti specifici:

Project Hosting – Google Code, Launchpad e GitHub

Oggi i servizi di Project Hosting sono tantissimi, dedicati sia a software libero che a software proprietario, gratuiti e a pagamento.

Copyright (C) 2008 - Alca Societa' Cooperativa

http://alca.le.it - info@alca.le.it

released under CreativeCommons 2.5 by-nc-sa

NOTA: le immagini dei software e dei device contenuti
nella presentazione sono proprieta' dei relativi detentori
del copyright e sono state riprodotte a scopo esclusivamente didattico.