Guida alle custom ROM: concetti generali
In questo thread, proverò a fornire un quadro generale per comprendere come funziona la community e come funzionano le custom ROM.
Alla fine, vi renderete conto che nulla è da scartare a priori: ma, una volta compresi i pro e i contro, farete scelte più sensate e in linea con le vostre esigenze.
Capitolo 1: Gli sviluppatori/developers
Google rilascia il codice di Android (=AOSP) perchè a sua volta utilizza il codice di linux (nei termini GPL). A sua volta, chiunque utilizzi il codice di Android nei suoi lavori è obbligato a rilasciare open source il codice che ha scritto.
Un'azienda oppure un Team di utenti decidono che la AOSP non è la ROM ideale e completa che vorrebbero. Rivedono il codice sorgente, aggiungono features e magari scrivono pure uno o più app originali da allegare al pacchetto. L'azienda rilascierà il codice open source di ciò che ha modificato...mentre il codice originale delle app se lo terrà in casa (non ha alcun obbligo di pubblicarlo dato che non è basato su altro codice rilasciato sotto GPL). Il Team di utenti invece rilascia tutto sotto GPL in open source perchè il suo scopo è contribuire alla community e non il lucro.
In genere un Team parte da uno o più utenti che sanno programmare: molto spesso è anche il loro mestiere nella vita reale. Iniziano a macinare codice e poi trovano altre persone che condividono la loro visione su come dovrebbe essere Android..e così nasce un team (che in genere aggrega a strascico themers, testers, builders e altro).
Su XDA ci sono alcuni team storici che hanno inziato prendendo la AOSP di Google e l'hanno lentamente trasformata riscrivendo interi blocchi di codice e aggiungendo feature. Su XDA ci sono alcune delle più famose custom ROM --> Custom ROM Central - XDA Forums
Il Team Cyanogenmod è nato così prima che che decidessero di formare una società.
Riassumendo ogni Team sviluppa Android a partire dalla AOSP. Nel corso degli anni, ogni team ha pensato e realizzato diverse idee innovative e ha lasciato la sua impronta. I Team, a livello centrale, decidono la direzione da prendere e le feature da introdurre: poi sviluppano e testano e infine rilasciano.
Pertanto, ogni team sviluppa una ROM generica e successivamente la adatta a tutti gli smartphone che intendono supportare. In pratica, l'intero Team sviluppa la ROM generale poi ad uno o più membri vengono assegnati uno o più smartphone da seguire. Il loro compito è adeguare la ROM alle specifiche dello smartphone e aggiornare le build integrando gli aggiornamenti della ROM principale (che include sia il codice del Team, sia i nuovi commit di Google). Inoltre inseriscono anche i nuovi commit specifici del kernel sviluppato per lo specifico smartphone.
Nonostante sia un hobby, sono organizzati quasi a livello professionale. Infine è chiaro che ci sono le punte di diamante in ogni team. Per citarne un paio, la Paranoid Android ha Franco e SferaDev, Slimkat ha Kufikugel e Jubakuba.
Il prossimo capitolo è dedicato ai Builders, mentre il terzo capitolo sarà dedicato a cosa accade nella realtà nella community OPO, quindi ci saranno esempi in cui saranno applicati i concetti esposti nei primi due capitoli.