Intervistiamo flar2, lo sviluppatore del kernel ElementalX e approfondiamo argomenti come la sua vita personale, il lavoro di sviluppo e altro ancora.
Recentemente ho avuto modo di intervistare flar2, l'uomo dietro il famoso kernel ElementalX e la sua ancora più popolare applicazione ElementalX Kernel Manager. Ha rilasciato una versione del suo kernel per una vasta gamma di dispositivi, incluso OnePlus e dispositivi Nexus.
In questa parte chiediamo cosa pensa Flar2 sui colli di bottiglia nelle prestazioni di Android e altro ancora sulla sua vita personale! Puoi controllare parte 2 di questa intervista qui.
Ehilà! Presentatevi innanzitutto prima di passare alle domande.
Il mio nome è Aaron Segaert, noto anche come flar2. Molte persone mi conoscono come lo sviluppatore del kernel ElementalX. Ho anche alcune app.
Avevi qualche esperienza con i computer e lo sviluppo in precedenza? Tipo una laurea in informatica o qualcosa del genere?
Ho iniziato con i computer quando ero molto giovane. Il mio primo computer è stato un Texas Instruments TI-99/4A. Ho imparato a programmare in BASIC e ho salvato i miei programmi su una cassetta (sì, sono vecchio). Poi la nostra famiglia ha acquistato un clone IBM del 286 e a quel punto ho smesso di scrivere codice perché questo era prima Internet era ampiamente conosciuto e non avevo risorse e nemmeno conoscevo nessun altro che ne avesse una computer. Ho iniziato a studiare informatica all'università, ma sono stato bocciato al primo anno. Non andavo mai veramente a lezione perché ero troppo occupato a divertirmi e a suonare con la mia band. Successivamente sono tornato a scuola e ho conseguito il dottorato in sociologia. Durante il periodo da studente, mi sono interessato a Linux e all'open source, ma non mi sono mai dedicato alla programmazione seria. Ho contribuito con piccole parti qua e là, ma per lo più ho creato solo script e piccoli programmi per i miei scopi. Probabilmente ho creato il mio primo kernel Linux intorno al 2002. All'epoca non stavo scrivendo il mio codice, ma solo sperimentando diverse patch e opzioni di creazione per migliorare le prestazioni. Ero più interessato alla costruzione di computer, all'overclocking e in generale al tentativo di far fare all'hardware cose che non avrebbe dovuto fare.
Ti interessa qualche sviluppo diverso dallo sviluppo di app Android e dallo sviluppo del kernel?
Non proprio, ho trovato buoni strumenti disponibili per quasi tutto ciò che dovevo fare sui computer. Il motivo per cui ho iniziato a lavorare su kernel e app per Android è perché sentivo che c'era bisogno di alcune funzionalità e di spazio per migliorare gli strumenti esistenti. Ad esempio, ho creato Button Mapper perché volevo che il tasto Home sui telefoni Samsung facesse di più e non mi piacevano i tasti Indietro e Recenti invertiti. Ho creato DevCheck perché altre app di informazioni di sistema non mostravano le informazioni che volevo vedere in modo chiaro e conciso. Il kernel ElementalX aggiunge nuove funzionalità hardware ed EX Kernel Manager controlla tali funzionalità e aggiunge alcuni strumenti che utilizzo per semplificare lo sviluppo. Mi piace risolvere i problemi ed è una sfida divertente decodificare le cose o aggiungere nuove funzionalità hardware a un telefono.
Come sei entrato in contatto con lo sviluppo Android, in particolare con lo sviluppo del kernel?
Ho sempre odiato i cellulari e ho resistito a lungo. Mia moglie ed io condividevamo un telefono a conchiglia di base con un piano minimo utilizzato principalmente per le emergenze. Nel 2012 abbiamo avuto un incendio a casa nostra e siamo rimasti fuori per quasi tre mesi. Tutte le nostre utenze erano state interrotte e abbiamo deciso di non ricollegare la linea fissa, quindi abbiamo preso uno smartphone, che credo fosse un LG P, qualcosa. Mi sono reso conto che era come un mini-computer e ho deciso che avevo bisogno del mio mini-computer, quindi ho comprato un HTC One V.
Dato che armeggio e modifico praticamente tutto, ho scoperto immediatamente XDA e ho scoperto che non solo i telefoni Android eseguivano Linux, ma potevano anche essere overcloccati. Sono un utente Linux da molto tempo, quindi ho effettuato il fork di uno dei kernel e ne sono rimasto affascinato. Presto ho acquistato un tablet Acer economico e ho iniziato a giocare con l'hardware e il kernel perché volevo che avesse USB OTG. Si è scoperto che l'hardware non era in grado di farlo, ma è così che ho iniziato a imparare di più sull'hardware mobile. Non ho mai rilasciato pubblicamente un kernel per il tablet LG, Acer o One V, ma ho creato i miei kernel per ciascuno e ho installato ROM personalizzate, che erano necessarie a quei tempi, poiché Android non era ancora maturo.
Presto sono diventato troppo grande per One V e l'ho scambiato con un HTC One XL ed è così che è nato ElementalX.
Qual era l'obiettivo iniziale di ElementalX e come è cambiato negli ultimi anni?
L'obiettivo di ElementalX è sempre stato quello di aggiungere funzionalità hardware utili, senza compromettere la stabilità o le prestazioni, e rilasciare qualcosa su cui le persone possano contare solo per lavorare. Metto sempre al primo posto la stabilità perché ho bisogno che il mio telefono sia affidabile. Nessun riavvio casuale o cose come il mancato funzionamento della fotocamera. La filosofia è rimasta la stessa nel corso degli anni. Mantengo le cose semplici e aggiungo funzionalità hardware che trovo utili. Cose come gesti di riattivazione, modalità ad alta luminosità, regolazione delle vibrazioni, controllo del suono, supporto per più file system, joystick, ecc.
Lavoro duro per mantenere i miei kernel aggiornati, facili da installare e quanto più ampiamente compatibili possibile. Alcuni utenti sono delusi dal fatto che non aggiungo molte patch da CAF o da Linux upstream, ma il mio obiettivo principale è fornire un prodotto molto stabile senza problemi strani. Molti dei miei utenti non sono persone che pubblicano molto su XDA, sono utenti esperti che hanno soddisfatto un'esigenza specifica da un kernel personalizzato o da persone a cui occasionalmente piace armeggiare con il proprio hardware ma non sono hardcore maniaci del flash. Voglio che le persone che non seguono tutti gli ultimi sviluppi di Android possano utilizzare ElementalX senza problemi.
Ci sono molti altri kernel che sperimentano con le patch upstream. In ElementalX utilizzo un set di patch e ottimizzazioni accuratamente selezionato. Nella mia carriera al di fuori di Android, misuro aspetti difficili da misurare e utilizzo prove per elaborare politiche e fornire consulenza. Applico gli stessi principi allo sviluppo del kernel e generalmente non utilizzo le patch a meno che non vi sia un vantaggio misurabile. Il monitoraggio della batteria in EX Kernel Manager ne è un esempio. Offre un modo per misurare oggettivamente l'effetto delle modifiche alla batteria e ai cambiamenti del kernel. I monitor mobili in DevCheck sono un altro strumento che utilizzo per lo sviluppo, principalmente per il monitoraggio della CPU frequenze e temperature durante diversi casi d'uso come i giochi o la visione di video o il web navigazione.
In che modo i cambiamenti apportati ad Android negli ultimi anni hanno influenzato il tuo lavoro?
A volte è difficile gestire i numerosi cambiamenti relativi alla sicurezza, ma li capisco. Se non sbaglio, Android è ormai più utilizzato di Windows, il che lo rende un bersaglio. Le persone cattive useranno ogni angolo possibile per sfruttare gli utenti Android.
Prevenire la modifica della partizione di sistema è ovviamente fondamentale per proteggere l'integrità di un dispositivo. Ricordo quando HTC iniziò a farlo nel 2012 o 2013 e sembrò la fine del mondo. All'epoca, era necessario scrivere su /system per root, modificare build.prop, installare app privilegiate, rimuovere bloatware e praticamente ogni mod popolare. Molte delle personalizzazioni dell'epoca riguardavano cose come il deodexing e la modifica del framework. Per molto tempo, nessun sorgente del kernel era disponibile da HTC, quindi ho creato un modulo del kernel per disabilitare la protezione da scrittura del sistema nel kernel originale, per il quale sono diventato famoso per la prima volta come sviluppatore. Ma nel corso del tempo, quando protezioni come Verity sono diventate una parte standard di Android, hanno forzato l’innovazione e il miglioramento soluzioni come il root senza sistema di Chainfire e ora c'è Magisk che fa ogni genere di cose senza sistema.
Un altro grande è SELinux, che ha causato il blocco di un sacco di app. Molti utenti lo odiavano e ancora oggi ci sono persone che utilizzano SELinux in modalità permissiva, il che è una pessima idea. Direi che SELinux è la caratteristica di sicurezza più importante di Android. Per fare un esempio dell'importanza di SELinux, quando ho acquistato per la prima volta il Pixel XL, non c'era root disponibile, ma l'exploit Dirty Cow stava facendo notizia. Ero ansioso di iniziare lo sviluppo del kernel, il che significa cercare o modificare i file sysfs, che richiedono root. Ho compilato uno dei proof-of-concept di Dirty Cow e sono riuscito a eseguire comandi come root, ma SELinux mi ha impedito di fare qualcosa di interessante. Ho dovuto modificare boot.img per rendere SELinux permissivo. Avrei potuto ottenere l'accesso completo senza modificare il kernel, ma ci sarebbero volute molte, molte ore. Tutto questo per dire, lasciamo SELinux in vigore, è la principale linea di difesa contro il malware. Impara a utilizzare sepolicy-inject per modificare policy specifiche in base alle necessità.
Quando arrivò Nougat, inizialmente quasi tutti i file /sys e /proc divennero invisibili alle app degli utenti. Root è sempre stato necessario per apportare modifiche, ma all'improvviso root è stato necessario semplicemente per leggere /sys e /proc. In quei filesystem ci sono sicuramente informazioni che possono essere utilizzate per sfruttare un dispositivo, quindi è stato necessario aggiungere restrizioni. Ma ci sono anche molte informazioni che gli utenti dovrebbero essere in grado di vedere. Perché dovrebbe essere richiesto il root per vedere l'attuale scheduler di i/o, o la frequenza della GPU, o il tipo di hardware del pannello? Ho dovuto apportare molte modifiche a DevCheck per gestire questo problema e molti utenti erano confusi sul motivo per cui le informazioni non erano più disponibili dopo l'aggiornamento a Nougat. Alla fine, alcune restrizioni sui percorsi sysfs furono rimosse.
A parte questo, dal punto di vista dello sviluppo di app, mi piacciono la maggior parte delle modifiche API su Android, anche se mi costringono ad apportare molte modifiche alle mie app. Questi cambiamenti sono solitamente in meglio.
Dai un'occhiata alla seconda parte di questa intervista!