Intervjuiramo flar2, programera ElementalX kernela i zalazimo u teme kao što su njegov osobni život, rad na razvoju i više.
Nedavno sam intervjuirao flar2, čovjeka koji stoji iza poznatog kernela ElementalX i njegove još popularnije aplikacije ElementalX Kernel Manager. Izdao je verziju svoje jezgre za široku lepezu uređaja, uključujući OnePlus i Nexus uređaji.
U ovom dijelu postavljamo pitanja o flar2-ovim razmišljanjima o uskim grlima u performansama Androida i više o njegovom osobnom životu! Možete se odjaviti 2. dio ovog intervjua ovdje.
Bok tamo! Najprije se predstavite prije nego što prijeđemo na pitanja.
Moje ime je Aaron Segaert, također poznat kao flar2. Većina ljudi me zna kao programera ElementalX kernela. Imam i nekoliko aplikacija.
Jeste li prije imali iskustva s računalima i razvojem? Kao diploma informatike ili tako nešto?
Počeo sam s računalima kao vrlo mlad. Moje prvo računalo bilo je Texas Instruments TI-99/4A. Naučio sam kodirati u BASIC-u i spremio svoje programe na kasetu (da, star sam). Onda je naša obitelj kupila IBM-ov klon 286, a ja sam u tom trenutku pobjegao od kodiranja jer je to bilo prije Internet je bio nadaleko poznat, a ja nisam imao nikakve resurse niti sam poznavao nekoga tko je imao Računalo. Počeo sam studirati informatiku na sveučilištu, ali sam pao na prvoj godini. Nikad zapravo nisam išao na predavanja jer sam bio previše zauzet zabavom i svirkama sa svojim bendom. Kasnije sam se vratio u školu i stekao doktorat iz sociologije. Dok sam bio student, zainteresirao sam se za Linux i otvoreni izvorni kod, ali se nikad nisam ozbiljnije bavio programiranjem. Tu i tamo sam doprinio manjim dijelovima, ali uglavnom sam napravio skripte i male programe za vlastite potrebe. Vjerojatno sam napravio svoj prvi Linux kernel oko 2002. U to vrijeme nisam pisao vlastiti kôd, samo sam eksperimentirao s različitim zakrpama i opcijama izgradnje kako bih poboljšao performanse. Više sam se bavio izgradnjom računala, overclockingom i općenito pokušavajući natjerati hardver da radi stvari koje ne bi trebao.
Je li vas zanimao neki razvoj osim razvoja Android aplikacija i razvoja kernela?
Ne baš, pronašao sam dobre alate dostupne za gotovo sve što sam trebao učiniti na računalima. Razlog zbog kojeg sam počeo raditi na jezgri i aplikacijama za Android je taj što sam osjetio potrebu za određenim značajkama i prostorom za poboljšanje postojećih alata. Na primjer, napravio sam Button Mapper jer sam želio da početna tipka na Samsung telefonima radi više, a nisu mi se sviđale obrnute tipke natrag i recents. Napravio sam DevCheck jer druge aplikacije za informacije o sustavu nisu prikazivale informacije koje sam želio vidjeti na jasan i koncizan način. Kernel ElementalX dodaje nove značajke hardvera, a EX Kernel Manager kontrolira te značajke i dodaje neke alate koje koristim za lakši razvoj. Volim rješavati probleme i zabavan je izazov obrnuti inženjering stvari ili dodati nove hardverske značajke telefonu.
Kako ste došli u kontakt s Android razvojem, konkretno razvojem kernela?
Uvijek sam mrzila mobitele i dugo sam im se opirala. Moja supruga i ja dijelili smo osnovni preklopni telefon s minimalnim planom koji se uglavnom koristio u hitnim slučajevima. Godine 2012. imali smo požar u našoj kući i bili smo vani gotovo tri mjeseca. Sve su nam komunalije bile prekinute i odlučili smo da nećemo ponovno spajati fiksni telefon, pa smo nabavili pametni telefon, koji je bio LG P-nešto, mislim. Shvatio sam da je to poput mini-računala i odlučio da mi treba vlastito mini-računalo, pa sam kupio HTC One V.
Budući da petljam i modificiram gotovo sve, odmah sam otkrio XDA i otkrio da Android telefoni ne samo da pokreću Linux, nego se mogu i overclockati. Dugo sam korisnik Linuxa, pa sam račvao jedan od kernela i bio sam zakačen. Ubrzo sam nabavio jeftini Acer tablet i počeo se petljati s tim hardverom i kernelom jer sam htio da ima USB OTG. Ispostavilo se da hardver nije sposoban, ali tako sam počeo učiti više o mobilnom hardveru. Nikada nisam javno objavio kernel za LG, Acer tablet ili One V, već sam izgradio vlastite kernele za svaki i instalirao prilagođene ROM-ove, koji su bili neophodni u to vrijeme, jer Android još nije bio zreo.
Ubrzo sam prerastao One V i zamijenio sam HTC One XL i tada je rođen ElementalX.
Što je u početku bio cilj za ElementalX i kako se to promijenilo posljednjih godina?
Cilj ElementalX-a uvijek je bio dodati korisne hardverske značajke, bez ugrožavanja stabilnosti ili performansi, i izdati nešto na što se ljudi mogu osloniti da će jednostavno raditi. Stabilnost uvijek stavljam na prvo mjesto jer trebam da moj telefon bude pouzdan. Nema nasumičnih ponovnih pokretanja ili stvari kao što je kamera koja ne radi. Filozofija je ostala ista tijekom godina. Držim stvari jednostavnim i dodajem hardverske značajke koje smatram korisnima. Stvari kao što su pokreti buđenja, način rada visoke svjetline, podešavanje vibracije, kontrola zvuka, podrška za više datotečnih sustava, joysticke itd.
Naporno radim na održavanju svojih kernela ažurnim, lakim za instalaciju i što je moguće šire kompatibilnim. Neki su korisnici razočarani što ne dodajem mnogo zakrpa iz CAF-a ili uzvodnog Linuxa, ali moj glavni cilj je isporučiti vrlo stabilan proizvod bez čudnih problema. Mnogi moji korisnici nisu ljudi koji puno objavljuju na XDA, oni su napredni korisnici koji imaju zadovoljenu specifičnu potrebu pomoću prilagođenog kernela ili ljudi koji povremeno vole petljati sa svojim hardverom, ali nisu okorjeli bljeskalice. Želim da ljudi koji ne prate sve najnovije razvoje Androida mogu koristiti ElementalX bez problema.
Postoji mnogo drugih kernela koji eksperimentiraju s uzvodnim zakrpama. U ElementalXu koristim pažljivo odabran skup zakrpa i optimizacija. U svojoj karijeri izvan Androida mjerim stvari koje je teško izmjeriti i koristim dokaze za izradu politike i davanje savjeta. Primjenjujem ista načela na razvoj kernela i općenito ne koristim zakrpe osim ako nema mjerljive koristi. Monitor baterije u EX Kernel Manageru primjer je toga. Nudi način za objektivno mjerenje učinka podešavanja baterije i promjena kernela. Plutajući monitori u DevChecku još su jedan alat koji koristim za razvoj, uglavnom za praćenje procesora frekvencije i temperature tijekom različitih slučajeva upotrebe kao što su igranje igara ili gledanje videa ili weba pregledavanje.
Kako su promjene u Androidu u posljednjih nekoliko godina utjecale na vaš rad?
Ponekad je teško nositi se s brojnim sigurnosnim promjenama, ali razumijem ih. Ako se ne varam, Android se sada više koristi od Windowsa, što ga čini metom. Loši ljudi će upotrijebiti bilo koji kut koji mogu da iskoriste korisnike Androida.
Sprječavanje izmjena sistemske particije očito je ključno za zaštitu integriteta uređaja. Sjećam se kada je HTC to počeo raditi 2012. ili 2013. i činilo se da je kraj svijeta. U to je vrijeme pisanje u /system bilo potrebno za root, uređivanje build.prop, instaliranje privilegiranih aplikacija, uklanjanje bloatwarea i praktički svakog popularnog moda. Mnoge prilagodbe u to vrijeme uključivale su stvari poput deodeksiranja i modificiranja okvira. Dugo vremena od HTC-a nije bio dostupan izvor kernela, pa sam napravio kernel modul za onemogućavanje sistemske zaštite od pisanja u standardnom kernelu, po čemu sam postao poznat kao programer. Ali s vremenom, kako su zaštite poput verityja postale standardni dio Androida, nametnule su inovacije i bolje rješenja kao što je Chainfire's rootless root i sada postoji Magisk koji radi svašta besistemski.
Još jedan veliki je SELinux, koji je uzrokovao prestanak rada gomile aplikacija. Mnogi korisnici su ga mrzili i još uvijek postoje ljudi koji rade sa SELinuxom u permisivnom načinu rada, što je vrlo loša ideja. Rekao bih da je SELinux najvažnija sigurnosna značajka Androida. Da dam primjer važnosti SELinuxa, kada sam prvi put dobio Pixel XL, nije bilo dostupnog roota, ali je eksploatacija Prljave krave stvarala vijesti. Želio sam započeti s razvojem kernela, što znači pretraživati ili mijenjati sysfs datoteke, za što je potreban root. Sastavio sam jedan od dokaza Dirty Cow-a i mogao sam pokretati naredbe kao root, ali SELinux me spriječio da učinim bilo što zanimljivo. Morao sam modificirati boot.img da SELinux bude permisivan. Možda bih postigao potpuni pristup bez modificiranja kernela, ali trebalo bi mnogo, mnogo sati. Sve ovo da kažem, ostavite SELinux na snazi, to je glavna linija obrane od zlonamjernog softvera. Naučite koristiti sepolicy-inject za promjenu određenih pravila prema potrebi.
Kada se pojavio Nougat, u početku su gotovo svi /sys i /proc postali nevidljivi korisničkim aplikacijama. Root je uvijek bio neophodan za promjene, ali odjednom je root bio neophodan samo za čitanje /sys i /proc. U tim datotečnim sustavima definitivno postoje informacije koje se mogu koristiti za iskorištavanje uređaja, pa je bilo potrebno dodati ograničenja. No postoji i mnogo informacija koje bi korisnici trebali moći vidjeti. Zašto bi root trebao vidjeti trenutni I/O planer, ili GPU frekvenciju, ili vrstu hardvera ploče? Morao sam unijeti mnogo promjena u DevCheck da bih se nosio s tim, a mnogi su korisnici bili zbunjeni zašto informacije više nisu bile dostupne nakon ažuriranja na Nougat. Na kraju su ukinuta neka ograničenja na sysfs stazama.
Osim toga, iz perspektive razvoja aplikacija, sviđa mi se većina API promjena na Androidu, iako me tjeraju da napravim mnogo promjena u svojim aplikacijama. Te su promjene obično nabolje.
Pogledajte 2. dio ovog intervjua!