lunedì 12 gennaio 2015

Oh Dio Cid, ti prego, aggiornami alla CM 12!


Comincio con una citazione:

"You either die a hero or live long enough to see yourself become the villain."
È questo il destino che è toccato alla CyanogenMod con le sue ultime decisioni.

Notizia fresca di giornata (anche se già si sapeva da un pezzo in maniera non ufficiale), il Galaxy SII, il Galaxy SIII ed il Galaxy Note II LTE non riceveranno la CyanogenMod 12 in maniera ufficiale, quindi addio ai sogni di chi sperava di vedere Cid in versione Lollipop sul proprio device. Eppure CyanogenMod è nato come l'alternativa alla stock, la speranza dell'update, insomma l'eroe del modding. Ed ora è diventata il nemico?

Perché?


Perché Cyanogen, perché ci fai questo? I problemi sono iniziati già con Android 4.4 KitKat, quando non era possibile riprodurre video da YouTube in HD, almeno per il Galaxy SII, o addirittura era impossibile ascoltare la radio FM, ricordate? Cosa accomuna questi 3 dispositivi, ossia SII, SIII e Note II LTE? Son fatti da Samsung, ovvio, ma S4, S5, Note 3 o Note 4 avrannno (o hanno già) la nuova CyanogenMod. Infatti la ragione per la quale sono stati scartati, è più profonda e non parlo filosoficamente, parlo infatti del SoC, ossia il System On a Chip marchiato Samsung e chiamato Exynos, il quale, ovviamente, è closed-source.



Breve digressione: nella mia breve esperienza come "sviluppatore" di ROM (e badate che non mi ritrovo manco per errore in questa definizione, è solo un modo semplice di arrivare al punto) ho capito la reale importanza dei sorgenti. I sorgenti sono il codice del software scritto dal programmatore che viene compilato dalla macchina per dar vita ad un programma. Per far sì che il programma possa esser modificato, è necessario manipolare i sorgenti, ma non è sempre così ovvio. Alcuni OEM, come appunto Samsung (ma anche molti altri), decidono di non rilasciare il codice sorgente, ma solo il file (driver, blob, patch) già bello che compilato. Avere comunque il driver già compilato serve a ben poco se questo non è integrato nell'ambiente della ROM e nell'environment.
Esiste comunque una branca di esperti informatici che attraverso complesse macchinazioni e con programmi dedicati, riescono a ricavare il codice sorgente a partire dal file compilato, attraverso un processo chiamato reverse engineering.
In pratica decompilano il driver ed ottengono un codice sorgente approsimativamente simile a quello originale, ma ovviamente non è perfetto o comunque non è alla sua altezza.
Dato che anche io stesso non sarei in grado di spiegarlo in maniera dettagliata, da quel poco che so, posso riassumere questo complesso processo con una metafora: immaginate di passare davanti ad una pasticceria che chiameremo "Samsung" e di vedere una torta molto elaborata chiamata "Driver Exynos 4412", con glassa, panna, cioccolato e quant'altro. Mmmmh toooorta aaaaah. 
Scusate, torno serio: immaginate di volere quella torta, ma non sapete la ricetta. Allora cosa fate? La guardate, la studiate, ne tagliate una fetta e guardate il ripieno. Avete così una linea generale di com'è stata fatta questa torta, ma non sapete le giuste dosi degli ingredienti, potete solo ipotizzarle. Tornate a casa con la vostra ricetta ipotizzata dal vostro studio e provate a fare la torta che vi viene anche discretamente buona. Certo, non è all'altezza della torta che avete visto nella pasticceria Samsung, ha qualche bug salato qui e là, però è gustosa abbastanza da soddisfarvi.

Facciamo finta che questo sproloquio sia stato d'aiuto.

Fino ad ora alcuni hacker del cosidetto team Hacksung sono riusciti ad effettuare reverse engineering sui driver rilasciati da Samsung e sono riusciti ad infilarli nel kernel che Samsung ha invece rilasciato. Ovviamente il kernel che Samsung rilascia è per forza di cosa open source (e quindi coi sorgenti disponibili) perché è Linux e quindi gode del copyleft.



Il rapporto tra il team Hacksung e la CyanogenMod ovviamente era stretto a doppia mandata perché erano necessari i blob proprietari reverse-engineerizzati per poterli integrare nella ROM e poterli compilare ed averli funzionanti. 

Ma allora perché, nonostante questo rapporto, la CyanogenMod non esisterà per gli Exynos?

Dicevamo che già con KitKat si avevano diversi problemi per quanto riguarda la riproduzione video, l'ascolto della radio e la non perfetta gestione dei colori. LolliPop ha introdotto molte feature, tra le quali animazioni a 60fps, nuove patch per il kernel (arrivato alla versione 3.4.x) ed una compilazione degli .apk totalmente diversa rispetto a KitKat e purtroppo col lavoro (eccellente) dei ragazzi del team Hacksung, non si riesce a sopperire adeguatamente alle richieste del nuovo OS. 
Inoltre, Samsung ultimamente sta rallentando i rilasci dei driver per la GPU Mali, cosa che rallenta ulteriormente il development della ROM.

Per cui Daniel Hillenbrand (in arte Codeworkx) ha deciso di interrompere lo sviluppo per la somma di questi fattori.

Effettivamente, mettendosi nei suoi panni, è anche comprensibile lo sconforto che lo ha spinto a tale scelta: non è possibile avere un ruolo così predominante, come Samsung ha, e non curare per niente lo sviluppo software nei confronti della comunità. Inoltre, l'adozione di un SoC proprietario, com'è ovvio pensare, porta l'OEM ad arrogarsi il diritto di non rilasciare il proprio software ed effettivamente non c'è alcun cavillo legale o tecnica informatica per appropriarsi di tali dati. L'unica soluzione è quella di acquistare dispositivi con SoC Qualcomm o Omap3. Avete mai visto un Nexus 5 soffrire di questi problemi? Ovvio che no! Il suo Snapdragon 800 gode dei sorgenti pubblici e quindi del miglior supporto da parte dei developer indipendenti.

Comunque vorrei spendere una parola di conforto verso i possessori di Galaxy SII, SIII e Note 2: non disperate, sebbene Codeworkx abbia abbandonato lo sviluppo del relativo device tree, non significa che tutti quanti gli altri developer abbiano fatto lo stesso. Paranoid Android, SlimROMs, Resurrection Remix (molto attiva ultimamente) e molti altri seguono da vicino questi device immortali e non mancheranno anche i rilasci di build non ufficiali della CyanogenMod per i più aficionados di Cid!

Il mio consiglio personale è di dirottarvi su uno di questi firmware alternativi o, se potete, perché no, comprare un altro dispositivo, ma fate bene attenzione ad evitare gli Exynos questa volta!

Con questa frase arrogante e pro-crisi vi saluto, sperando di non ricevere troppi insulti!