SlideShare a Scribd company logo
1 of 80
Download to read offline
“Do one thing and do it well”
La Filosofia Unix
Chi sono?
Mi chiamo Federico Capoano
Anche conosciuto come Nemesis
Ninux.org e OpenWISP.org
z
Perchè la filosofia Unix?
Riscoprire la filosofia Unix
mi ha aiutato a diventare
un programmatore migliore
Cosa intendo per “migliore”?
Imparare a risolvere problemi
complessi con approcci
semplici
scrivere piccoli programmi
combinabili invece che
“palle di fango giganti”
mantenere librerie usate da
migliaia di sviluppatori
saper attrarre e gestire
contributi di terze parti
Fare da admin e mentor
http://www.ninux.org
Incontrare Linus Torvalds
http://www.ninux.org
Tutto è cominciato con Ninux
Cos'è ninux?
Rete IP comunitaria
Libertà di comunicazione
Tutti possono connettersi
Condivisione servizi in rete
Sperimentazione nuove tecnologie
Approccio collaborativo
Tecnologie principalmente FLOSS
http://www.ninux.org
Cosa sono le reti comunitarie?
http://www.ninux.org
Cosa sono le reti comunitarie?
http://www.ninux.org
Cosa sono le reti comunitarie?
http://www.ninux.org
Cosa sono le reti comunitarie?
http://www.ninux.org
nodeshot.org
Openwisp.org
Cos'hanno in comune?
- applicazioni web
- molte feature
- molta interdipendenza
Qual'è Il problema
di questo approccio?
1. Complessità
Il software tende a diventare una
“palla di fango gigante”
2. Interdipendenza
Cambiare un componente
richiede cambiamenti
ad altri componenti
3. Inflessibilità
difficile adattare il software a
nuovi requisiti
4. poco riutilizzabile
Poco riutilizzabile in contesti
differenti (anche leggermente)
5. pochi contributi
Software troppo specifico
non crea una comunità di
contributors
Nikola is not happy
Ci deve essere
un'altra via!
Che cos'è la “filosofia Unix”?
1. Approccio
Sviluppo di software
semplice ed efficace
2. Maturità
Maturato nella
comunità UNIX
tra il 1969 ed il 2003
3. Change tolerant
Nata per funzionare
in un ambiente
in costante cambiamento
La base di tutto
“Do one thing
and do it well”
Scomporre un problema
complesso
in problemi più piccoli
Risolvere un problema
alla volta
Un problema, un programma
Rendere questi programmi
facilmente combinabili
I vantaggi dell'approccio Unix
Quali sono i vantaggi
più significativi?
1. facilità
Risolvere un solo problema
alla volta è più facile
2. mantenibilità
Mantenere un programma
semplice comporta
meno lavoro
3. usabilità
Un programma semplice è
più facile da spiegare
ed usare
4. leggibilità
Il codice di un programma
semplice è più facile
da leggere e capire
5. riutilizzo
Essendo facile da
riutilizzare
attrarrà più contributors
6. rapidità
Un programma semplice si
riadatta più rapidamente
a nuovi requirement
ME GUSTA
Le 17 regole di Unix
sintetizzate
da Eric Raymond
Autore de
“La cattedrale e il Bazaar”
1. Modularità
Scrivete parti semplici connesse
tramite interfacce ben definite
2. Chiarezza
Scegliete la chiarezza
piuttosto che l'ingegno
3. Composizione
Progettate programmi per essere
connessi ad altri programmi
4. Separazione
separate la politica dai
meccanismi;
separate le interfacce dai motori
5. Semplicità
Progettate per la semplicità;
aggiungete complessità solo
se strettamente necessario
6. Parsimonia
Scrivete un programma grande
solo quando è stato dimostrato
che nient'altro funzionerà meglio
7. Trasparenza
Progettate con il fine di facilitare
l'ispezione ed il debugging
8. Robustezza
La robustezza è la figlia della
trasparenza e della semplicità
9. Rappresentazione
Inserite la conoscenza nelle
strutture dati in modo da
mantenere la logica
semplice e robusta
10. Sorpresa minima
nella progettazione delle
interfacce,
scegliete sempre la cosa più ovvia
11. Silenzio
quando un programma non ha
niente da dire,
non dovrebbe dire nulla
12. Riparazione
Riparate quando potete,
ma quando dovete fallire,
fatelo rumorosamente
ed il più presto possibile
13. Economia
il tempo del programmatore è
costoso; meglio risparmiare
quello piuttosto che il tempo della
macchina
14. Generazione
evitate di fare tutto a mano;
scrivete programmi che
generano codice
15. Ottimizzazione
realizzate prototipi prima di
rifinire; fatelo funzionare prima di
ottimizzare
16. Diversità
diffidare tutte le rivendicazioni di
“una vera via”
17. Estendibilità
progettate per il futuro, perchè
sarà qui prima di quello che pensi
Robba seria
Parliamo di dati
nodeshot
vs
Feature estratte (sommate)
contributi & download
Nodeshot: 13
Libraries: 44
Pull request (6 months)
3x
Nodeshot: 324
Libraries: 25199
PyPi downloads (1 month)
78x
Nodeshot: 95
Libraries: 1392
Github clones (1 month)
14x
Nodeshot: 14
Libraries: 471
Github unique clones (1 month)
33x
Nodeshot: 1100
Libraries: 2385
Github page views (1 month)
2x
Nodeshot: 128
Libraries: 635
Github unique visitors (1 month)
5x
Le metriche di utilizzo
dei piccoli programmi
(sommati tra loro)
Mostrano un aumento medio
di un 22x
Rispetto a nodeshot
Conclusioni...
1. I creatori di unix
non erano gli ultimi arrivati
Seguire i loro consigli
è una buona idea
2. NO ai dogmi
Anche i fondatori della
filosofia Unix rigettano i dogmi
(nessuna “vera via”)
3. applicatela
Applicate la filosofia unix
ai vostri progetti
4. imparate da chi è più esperto
Unix e Linux sono migliorati
così tanto soprattutto grazie
all'ambiente FLOSS
potete trovarmi su
twitter e github
@nemesisdesign
Grazie!

More Related Content

Similar to La Filosofia Unix

Beni Culturali 2.1 Introduzione Os
Beni Culturali 2.1 Introduzione OsBeni Culturali 2.1 Introduzione Os
Beni Culturali 2.1 Introduzione OsCaterina Policaro
 
Il modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo softwareIl modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo softwareFederico Gobbo
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOpsFabio Mora
 
Linux e fs storia e caratteristiche vincenti
Linux e fs   storia e caratteristiche vincentiLinux e fs   storia e caratteristiche vincenti
Linux e fs storia e caratteristiche vincentiMaurizio Antonelli
 
Fabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuoleFabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuoleMaurizio Antonelli
 
16. Creazione collettiva
16. Creazione collettiva16. Creazione collettiva
16. Creazione collettivaRoberto Polillo
 
Software Libero e Open Source nella Pubblica Amministrazione
Software Libero e Open Source nella Pubblica AmministrazioneSoftware Libero e Open Source nella Pubblica Amministrazione
Software Libero e Open Source nella Pubblica AmministrazioneMauro Murgioni
 
La rivoluzione dei Microservizi
La rivoluzione dei MicroserviziLa rivoluzione dei Microservizi
La rivoluzione dei MicroserviziitalianaSoftware
 
Presentazione Ninux al LinuxDay Roma 2012
Presentazione Ninux al LinuxDay Roma 2012Presentazione Ninux al LinuxDay Roma 2012
Presentazione Ninux al LinuxDay Roma 2012Claudio Mignanti
 
Serata@gev
Serata@gevSerata@gev
Serata@gevPipperss
 
05 Mg Costo Sw Linux Win
05 Mg Costo Sw Linux Win05 Mg Costo Sw Linux Win
05 Mg Costo Sw Linux WinMarco Guardigli
 
Open source copyright e copyleft
Open source copyright e copyleftOpen source copyright e copyleft
Open source copyright e copyleftAndrea Linfozzi
 
AICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAMAICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAMFederico Gobbo
 
Laboratorio Web Journalism | 17 dicembre 2010
Laboratorio Web Journalism | 17 dicembre 2010Laboratorio Web Journalism | 17 dicembre 2010
Laboratorio Web Journalism | 17 dicembre 2010Macsis
 

Similar to La Filosofia Unix (20)

Linux facile
Linux facileLinux facile
Linux facile
 
Beni Culturali 2.1 Introduzione Os
Beni Culturali 2.1 Introduzione OsBeni Culturali 2.1 Introduzione Os
Beni Culturali 2.1 Introduzione Os
 
Il modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo softwareIl modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo software
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOps
 
Linux e fs storia e caratteristiche vincenti
Linux e fs   storia e caratteristiche vincentiLinux e fs   storia e caratteristiche vincenti
Linux e fs storia e caratteristiche vincenti
 
Fabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuoleFabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuole
 
16. Creazione collettiva
16. Creazione collettiva16. Creazione collettiva
16. Creazione collettiva
 
Software Libero e Open Source nella Pubblica Amministrazione
Software Libero e Open Source nella Pubblica AmministrazioneSoftware Libero e Open Source nella Pubblica Amministrazione
Software Libero e Open Source nella Pubblica Amministrazione
 
La rivoluzione dei Microservizi
La rivoluzione dei MicroserviziLa rivoluzione dei Microservizi
La rivoluzione dei Microservizi
 
Il software open-source
Il software open-sourceIl software open-source
Il software open-source
 
Foss ieri e oggi
Foss ieri e oggiFoss ieri e oggi
Foss ieri e oggi
 
Presentazione Ninux al LinuxDay Roma 2012
Presentazione Ninux al LinuxDay Roma 2012Presentazione Ninux al LinuxDay Roma 2012
Presentazione Ninux al LinuxDay Roma 2012
 
Drupal per la ricerca
Drupal per la ricercaDrupal per la ricerca
Drupal per la ricerca
 
Open Source
Open SourceOpen Source
Open Source
 
Serata@gev
Serata@gevSerata@gev
Serata@gev
 
05 Mg Costo Sw Linux Win
05 Mg Costo Sw Linux Win05 Mg Costo Sw Linux Win
05 Mg Costo Sw Linux Win
 
Open source copyright e copyleft
Open source copyright e copyleftOpen source copyright e copyleft
Open source copyright e copyleft
 
AICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAMAICA Workshop 26 feb 2008 @ SIAM
AICA Workshop 26 feb 2008 @ SIAM
 
Laboratorio Web Journalism | 17 dicembre 2010
Laboratorio Web Journalism | 17 dicembre 2010Laboratorio Web Journalism | 17 dicembre 2010
Laboratorio Web Journalism | 17 dicembre 2010
 
Linux
LinuxLinux
Linux
 

La Filosofia Unix