Originariamente inviato da
Bokonon
Le custom ROM...una guida per newbies su come orientarsi
Google rilascia la cosiddetta AOSP, ovvero la ROM base. Le varie aziende prendono la AOSP e su questo codice di base costruiscono la loro versione di Android rispettando le guide di Google ma aggiungendo feature di ogni tipo e riscrivendo intere interfaccie/driver/altro. E così arrivano le ROM personalizzate di Samsung piuttosto che LG etc. etc.
Anche la community fa la stessa cosa. Ci sono team storici che hanno preso la AOSP e negli anni l'hanno potenziata, hanno aggiunto feature originali e hanno rilasciato ROM complete (sia kernel che system).
La cyano è una di queste. Poi ci sono la Paranoid Android, Slimkat, la Mokee, OmniROM etc. etc. Il team cyano, a differenza di altri, ha fondato una società e adesso rilascia una ROM specifica per il One (la CM11S). Come per le altre aziende, il codice completamente riscritto non deve essere necessariamente rilasciato open source...e infatti una parte del codice della CM11S non è disponibile. Un esempio è la camera next che sfrutta anche le propretà hardware del One per girare video a 4K.
Questo però non significa che la Cyano abbia abdicato dalla community: la Cyano continua tutt'oggi a rilasciare anche la sua ROM open source basata sulla AOSP e dedicata ad una serie di smartphone, fra cui il One. La ROM classica ovviamente viene spogliata di tutto il codice propietario della CM11S e in cambio ha alcune features che nella CM11S sono state tolte per rispettare le necessità della Oneplus e di Google: per fare un esempio, il superuser gà integrato.
Riassumendo, la CM11S è un'evoluzione commerciale della CM classica ed è trattata a se stante. Nessuno la sviluppa eccetto il team CM.
Poi ci sono le custom ROM: AOSP --> CM oppure AOSP --> Slimkat oppure AOSP --> Paranoid Android etc.etc. Questi team rilasciano tutto il codice open source quindi capita spesso e volentieri che prendano commits/features l'una dall'altra, oltrechè gli ultimi sviluppi di Google.
Arrivano tutte anche con un kernel già aggiornato e personalizzato.
Poi ci sono ROM che sviluppano a loro volta le ROM principali: per esempio AOSP --> CM --> crDroid. Cristiano Matos sviluppa direttamente prendendo l'intero branch della CM e aggiungendo features non presenti. La crDroid (come qualsiasi altra custom ROM) viene sviluppata per diversi cellulari. In questo momento Matos si è comprato il One e quindi ha deciso di supportarlo direttamente. Quindi il buon m3dd0g (che aveva fatto il porting della crDroid generica per il One) si è fatto un poco da parte e adesso sta sviluppando la nuova ROM, ovvero la DroidKang a cui aggiungerà features e personalizzazioni che Matos non ritiene necessarie (ogni Team/developer ha le sue fisime). Ed ecco che adesso lo sviluppo si allunga AOSP --> CM --> crDroid --> DroidKang.
Ora il quadro delle dipendenze fra ROM dovrebbe essere più chiaro. Altri esempi sono: AOSP --> Slimkat --> SlimSaber oppure AOSP --> Slimkat --> Liquidsmooth.
Poi ad esempio c'è la Mahdi-ROM che prende un po' da tutti integrando alcune features presenti in tutte le altre ROM.
Come dicevo sopra, ogni ROM arriva con un kernel. Per esempio la crDroid prende e sviluppa il kernel della CM. E' chiaro che un team non può fare tutto e supportare tutto, quindi, per ridurre il carico di lavoro, ogni team decide una linea da tenere e tiene la barra dritta. Per esempio Slimkat rilascia un ottimo kernel con 7 governors fra cui scegliere (fra cui anche la loro creazione lo slim governor). Però questo kernel non supporta features quali il fastcharge, oppure multirom, oppure il supporto F2FS e altro ancora. Quindi si crea uno spazio anche per altri developers che si occupano unicamente di compilare e seguire custom kernels sempre più complessi e ricchi: ci sono il Kernel AK, il Franco Kernel, il Furnace e anche kernel che a loro volta derivano da altri kernel e così via. Ognuno ha il suo stile (pure qua); per es. Franco sviluppa selezionando pochi e specifici governors ottimizzandone uno per ogni smartphone. Poi fornisce anche un app per modificare i valori e ma dentro un set chiaro e non conflittuale. AK invece ha messo dentro proprio tutto e di più e arriva anche con un app dedicata per le modifiche: però in questo caso uno deve sapere cosa sta facendo dato gli è permesso di modificare e attivare anche setting che entrano in conflitto fra di loro. Inoltre vengono modificati anche un paio di file della system.
Conclusioni
Sapere è potere. Occorre molto tempo per sviluppare le conoscenze minime (ma che poi vengono acquisite per sempre) per poter discriminare ciò che interessa e piace e infine per poter utilizzare al meglio tutte le possibilità offerte. Questo approccio attivo consente di procedere per passi:
A) selezione della ROM ideale con perfetta conoscenza dei pro e contro
B) conoscendo i pro e i contro, si ha un approccio attivo nella ricerca successiva, ovvero cosa si vorrebbe ottimizzare/cambiare/introdurre
C) selezione degli strumenti adatti a farlo
D) prendersi tutto il tempo del mondo, nessuno ci porta via qualcosa.
Poi c'è l'approccio passivo compulsivo (alquanto diffuso anzichenò) che consiste nel leggere il primo post e flashare continuamente la prima cosa che capita alla ricerca della ROM+Kernel perfetti. Il passivo compulsivo flasha tutto e di più nella segreta speranza di trovare qualcosa con tutto già idealmente configurato. Legge il post di un tipo che scrive una riga del tipo:"Con questa combinazione ho ottenuto questo" e ci si fionda per poi scoprire che chi ha scritto il post ci ha messo anni per imparare a configurare il suo cell ed ad adattarlo alle sue specifiche necessità: non si è limitato a flashare un paio di cose, ma le ha configurate a lungo e a fondo per ottenere il risultato lo soddisfa e che poi riassume in due righe di post.
E infatti il passivo compulsivo scopre presto l'amara verità e di solito il suo post successivo è carico di delusione condito da svarioni e suppliche affinchè qualcuno gli spieghi passo passo come adattare il suo cell ai suoi bisogni. Quasi sempre un'anima pietosa gli risponde che non è così che funziona e che ognuno deve prima sviluppare una profonda conoscenza di ciò che sta facendo per capire quale risultato vuole raggiungere. Il passivo compulsivo impenitente ignora questi post e riprende a flashare a destra e manca in modo sporco, senza backup e senza alcun obiettivo concreto. A questo punto scopre la seconda amara verità: inizia ad avere conflitti e bug e cosa fa? Si lamenta e da la colpa alla ROM. Al che la gente si scoccia e gli fa presente che è l'unico ad avere quei problemi e alla fine lo persuadono a riflashare tutto daccapo (visto che non ha alcun backup). Dopo un mese di flash e lamentele è ancora al punto di partenza e ancora alla ricerca di qualcosa o qualcuno che possa fornirgli preconfezionato quello che solo lui può darsi. Ciò che sfugge al passivo compulsivo è che se impara qualcosa prima di sperimentare, non solo può ottenere più facilmente il risultato sperato ma quella conoscenza non la perderà più...e infine spende pure meno tempo.
Avete presente quei puzzle ricchi di combinazioni possibili? Chi è attivo, si sofferma a riflettere e a trovare la soluzione generale prima ancora di aver fatto alcun tentativo e poi gli bastano uno o due giocate per risolverlo. Chi è passivo prova millanta soluzioni a capocchia (e spesso ripete anche quelle già provate) finchè non azzecca quella giusta. Chi è attivo, risolverà anche i puzzle successivi in un baleno: chi è passivo, ricomincia daccapo a capocchia e se è testardo, inizia a comprendere vagamente il meccanismo dopo una ventina di puzzle.