La Filosofia Unix

Preview:

Citation preview

“Do one thing and do it well”

La Filosofia Unix

Chi sono?

Mi chiamo Federico CapoanoAnche conosciuto come Nemesis

Ninux.org e OpenWISP.org

z

Perchè la filosofia Unix?

Riscoprire la filosofia Unixmi ha aiutato a diventare

un programmatore migliore

Cosa intendo per “migliore”?

Imparare a risolvere problemicomplessi 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 problemadi questo approccio?

1. Complessità

Il software tende a diventare una“palla di fango gigante”

2. Interdipendenza

Cambiare un componenterichiede cambiamentiad altri componenti

3. Inflessibilità

difficile adattare il software anuovi requisiti

4. poco riutilizzabile

Poco riutilizzabile in contestidifferenti (anche leggermente)

5. pochi contributi

Software troppo specificonon crea una comunità di

contributors

Nikola is not happy

Ci deve essere

un'altra via!

Che cos'è la “filosofia Unix”?

1. Approccio

Sviluppo di softwaresemplice ed efficace

2. Maturità

Maturato nellacomunità 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 thingand do it well”

Scomporre un problema complesso

in problemi più piccoli

Risolvere un problemaalla volta

Un problema, un programma

Rendere questi programmifacilmente combinabili

I vantaggi dell'approccio Unix

Quali sono i vantaggipiù significativi?

1. facilità

Risolvere un solo problemaalla 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ù facileda 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 chiarezzapiuttosto 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à solose 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 logicasemplice 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 rumorosamenteed 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

nodeshotvs

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 utilizzodei piccoli programmi

(sommati tra loro)Mostrano un aumento medio

di un 22xRispetto a nodeshot

Conclusioni...

1. I creatori di unixnon erano gli ultimi arrivati

Seguire i loro consigliè una buona idea

2. NO ai dogmi

Anche i fondatori dellafilosofia Unix rigettano i dogmi

(nessuna “vera via”)

3. applicatela

Applicate la filosofia unixai vostri progetti

4. imparate da chi è più esperto

Unix e Linux sono miglioraticosì tanto soprattutto grazie

all'ambiente FLOSS

potete trovarmi sutwitter e github

@nemesisdesign

Grazie!

Recommended