giovedì 30 agosto 2012

OSX contro tutti

Miguel de Icaza ha pubblicato un articolo interessante dove spiega le motivazioni che, secondo lui, hanno portato OSX ad affermarsi come desktop nella guerra dei desktop che ha visto Linux (e altri OS) impegnati negli ultimi anni.
Personalmente l'articolo mi sembra abbastanza superficiale. Le due ragioni principali che Miguel attribuisce al fallimento dei desktop liberi (va ricordato che Miguel è stato fondatore di Gnome) sono:
  • la frammentazione delle distribuzioni Linux, tutte impegnate nell'eterna battaglia per il dominio del mercato;
  • la quasi totale assenza di compatibilità all'indietro, ovvero la spinta degli sviluppatori a implementare l'ultima cool feature anche dove questo possa arrecare danno a codice di terze parti.
Il primo punto è vero: Linux è un sistema molto frammentato. Di fatto non esistono due distribuzioni uguali: le configurazioni, le utilità di sistema, perfino i componenti a basso livello sono spesso (se non sempre) differenti. Basti pensare all'esempio systemd, che alcuni vorrebbero usare come base per il nuovo Gnome, tagliando di fatto fuori tutti i sistemi che non lo supportino. La situazione è sicuramente migliore sul fronte Unix (ad esempio BSD), dove la stabilità dei componenti fa da padrone.
Circa la seconda motivazione ho qualche critica da fare. Miguel infatti sostiene che, di contro, il successo di OSX è stato dovuto anche al fatto di avere una compatibilità all'indietro per le applicazioni, e si arriva perfino alla conclusione che:
Meanwhile, you can still run the 2001 Photoshop that came when XP was launched on Windows 8. And you can still run your old OSX apps on Mountain Lion.

in un passaggio dell'articolo dal quale si trae la conclusione che il software proprietario in questo caso vince, perché mantiene la compatibilità. In altre parole il pensiero di Miguel potrebbe essere riassunto così: siccome la compatibilità all'indietro fa parte del job di manutenzione, e nessun hacker si esalta a fare manutenzione quanto piu' a fare innovazione, i sistemi open source sono meno supportanti software vecchio e per questo meno usati nel ramo desktop, mentre i sistemi proprietari, dove è imposto di fare manutenzione, sono meglio accettati perfino da alcuni hacker.
E' vero, posso eseguire Photoshop CS 3 su Windows 8, e probabilmente non riuscirò ad eseguire Gimp 1.0 su una Ubuntu 12.10, ma non mi si venga a dire che questo è un punto vincente. 
Anzitutto il fatto che sia possibile eseguire software vecchio, anche molto vecchio, su sistemi nuovi, rappresenta un potenziale rischio di sicurezza. Il fatto che possa far girare Firefox 1 su Windows XP non è una scelta vincente: quanti attacchi web possono trovare così la strada ai miei dati? In secondo luogo va riconosciuto agli sviluppatori ogni merito: non penso che il problema sia la manutenzione del codice, quanto il fatto che nessuno vuole avere codice "brutto" (inefficiente? non elegante?) sul proprio repository, ed ecco quindi che si cerca sempre di migliorare quanto fatto, spesso arrivando a rompere le API. Ma questo avviene nel normale processo evolutivo del software, sia open source che proprietario. La differenza è nella documentazione: se viene documentato correttamente ed efficacemente ogni modifica strutturale, allora le API saranno ben accette anche se instabili. Ed è vero che Linux in generale è un sistema pessimamente documentato. Uno degli aspetti a cui si dà molta importanza in OpenBSD è la documentazione, che viene prima ancora delle API, perché è quello che permette agli sviluppatori esterni di continuare ad usare il sistema correttamente.
Infine una considerazione banale: il software proprietario è forse piu' stabile (come API) di uno open source, ma solo perché il proprietario è generalmente uno solo. I progetti open source passano sotto le mani di molti mantainer, e di conseguenza vengono influenzati anche dalle preferenze personali di ciascuno di essi.
Doveroso poi sottolineare come il software proprietario non possa avere una vita piu' lunga di quello open source, ma sia bensì soggetto alla logica commerciale del vendor. In altre parole, si potrà eseguire Photoshop CS 3 su Windows 8, ma non si avrà alcun supporto né possibilità di modificare e adattare il software alle proprie esigenze.

Va detto anche che spesso la retro-compatibilità dei prodotti commerciali non viene dettata da scelte tecniche o strategiche, ma dalla riluttanza a buttare via il lavoro fatto in precedenza. Ho sperimentato di persona questo atteggiamento e devo dire che si tramuta facilmente in un cane che si morde la coda.

Circa invece lo sbocciato amore di Miguel per i prodotti Apple, vorrei sottolineare come OSX sia sempre stato basato su Unix e non su Linux. Questa cosa avrebbe dovuto indurre a pensare già anni fa, poiché è chiaro indice di quanto detto sopra: Linux è un sistema troppo variegato e instabile, mentre Unix (OSX usa lo userland FreeBSD) è rimasto piu' coerente nel tempo. 

L'evoluzione del sistema è inevitabile, l'innovazione deve semplicemente cercare di non stravolgere quanto già fatto in passato. Ma portarsi dietro tonnellate di codice obsoleto crea solo problemi. 

Tutti i prodotti hanno una end of life, sia quelli open source che quelli commerciali.