Vi intervjuar flar2, utvecklaren av ElementalX-kärnan och fördjupar oss i ämnen som hans personliga liv, utvecklingsarbete med mera.
Jag fick nyligen intervjua flar2, mannen bakom den berömda ElementalX-kärnan, och hans ännu mer populära ElementalX Kernel Manager-applikation. Han har släppt en version av sin kärna för ett stort antal enheter, inklusive OnePlus och Nexus-enheter.
I den här delen frågar vi om flar2s tankar om flaskhalsar i Android-prestanda och mer om hans personliga liv! Du kan checka ut del 2 av denna intervju här.
Hallå där! Presentera dig först av allt innan vi går ner till frågorna.
Jag heter Aaron Segaert, även känd som flar2. De flesta känner mig som utvecklare av ElementalX-kärnan. Jag har också några appar.
Har du någon erfarenhet av datorer och utveckling innan? Som en datavetenskaplig examen eller något?
Jag började med datorer när jag var väldigt ung. Min första dator var en Texas Instruments TI-99/4A. Jag lärde mig att koda i BASIC och sparade mina program på ett kassettband (ja, jag är gammal). Sedan köpte vår familj en 286 IBM-klon, och jag kom bort från kodning vid den tidpunkten eftersom detta var tidigare Internet var allmänt känt och jag hade inga resurser eller känner ens någon annan som hade en dator. Jag började med datavetenskap på universitetet, men jag hoppade av första året. Jag gick aldrig riktigt till lektionen eftersom jag var för upptagen med att ha kul och spela spelningar med mitt band. Senare återvände jag till skolan och doktorerade i sociologi. Under min tid som student blev jag intresserad av Linux och öppen källkod men kom aldrig in på så mycket seriös programmering. Jag bidrog med mindre bitar här och där, men gjorde mest bara manus och små program för mina egna syften. Jag byggde förmodligen min första Linux-kärna runt 2002. Vid den tiden skrev jag inte min egen kod, utan experimenterade bara med olika patchar och byggalternativ för att öka prestandan. Jag var mer inne på att bygga datorer, överklocka och i allmänhet försöka få hårdvara att göra saker som den inte var tänkt att göra.
Har någon annan utveckling än Android-apputveckling och kärnutveckling intresserat dig?
Inte riktigt, jag har hittat bra verktyg tillgängliga för nästan allt jag har behövt göra på datorer. Anledningen till att jag började arbeta med kärnor och appar för Android är för att jag kände att det fanns ett behov av vissa funktioner och utrymme för förbättringar av de befintliga verktygen. Till exempel gjorde jag Button Mapper för att jag ville att hemknappen på Samsung-telefoner skulle göra mer, och jag gillade inte de omvända baksidan och nycklarna. Jag gjorde DevCheck eftersom andra systeminfoappar inte visade den information jag ville se på ett tydligt och koncist sätt. ElementalX-kärnan lägger till nya hårdvarufunktioner och EX Kernel Manager styr dessa funktioner och lägger till några verktyg jag använder för att göra utvecklingen enklare. Jag gillar att lösa problem och det är en rolig utmaning att bakåtkonstruera saker eller lägga till nya hårdvarufunktioner till en telefon.
Hur kom du i kontakt med Android-utveckling, närmare bestämt kärnutveckling?
Jag har alltid hatat mobiltelefoner och stått emot dem länge. Min fru och jag delade en enkel telefon med en minimal plan som främst användes för nödsituationer. 2012 brann vi i vårt hem och var ute i nästan tre månader. Alla våra verktyg stängdes av och vi bestämde oss för att inte återansluta vår fasta telefon, så vi skaffade en smartphone, som var en LG P-något jag tror. Jag insåg att det var som en minidator och bestämde mig för att jag behövde min egen minidator, så jag köpte en HTC One V.
Eftersom jag pysslar och modar i stort sett allt upptäckte jag XDA direkt och upptäckte att Android-telefoner inte bara körde Linux, de kunde överklockas. Jag har varit Linux-användare länge, så jag klaffade en av kärnorna och blev fast. Jag fick snart en billig Acer-surfplatta och började bråka med den hårdvaran och kärnan eftersom jag ville att den skulle ha USB OTG. Det visade sig att hårdvaran inte var kapabel, men det var så jag började lära mig mer om mobil hårdvara. Jag släppte aldrig offentligt en kärna för LG, Acer-surfplattan eller One V, utan byggde mina egna kärnor för var och en och installerade anpassade ROM-skivor, vilket var nödvändigt på den tiden, eftersom Android ännu inte var mogen.
Jag växte snart ur One V och bytte mot en HTC One XL och det var då ElementalX föddes.
Vad var målet för ElementalX från början, och hur har det förändrats de senaste åren?
Målet med ElementalX har alltid varit att lägga till användbara hårdvarufunktioner, utan att kompromissa med stabilitet eller prestanda, och släppa något som folk kan lita på för att bara fungera. Jag sätter alltid stabilitet först eftersom jag behöver att min telefon ska vara pålitlig. Inga slumpmässiga omstarter eller saker som att kameran inte fungerar. Filosofin har varit densamma genom åren. Jag håller det enkelt och lägger till hårdvarufunktioner som jag tycker är användbara. Saker som väckningsgester, högljusläge, vibrationsjustering, ljudkontroll, stöd för fler filsystem, joysticks, etc.
Jag jobbar hårt för att hålla mina kärnor uppdaterade, lätta att installera och så brett kompatibla som möjligt. Vissa användare är besvikna över att jag inte lägger till många patchar från CAF eller uppströms Linux, men mitt huvudmål är att leverera en mycket stabil produkt utan konstiga problem. Många av mina användare är inte personer som postar mycket på XDA, de är avancerade användare som har ett specifikt behov tillfredsställda av en anpassad kärna, eller personer som ibland gillar att mixtra med sin hårdvara men inte är hardcore flashaholics. Jag vill att personer som inte följer alla de senaste Android-utvecklingarna ska kunna använda ElementalX utan problem.
Det finns många andra kärnor som experimenterar med uppströms patchar. I ElementalX använder jag en noggrant utvald uppsättning patchar och optimeringar. I min karriär utanför Android mäter jag saker som är svåra att mäta och använder bevis för att bygga policy och ge råd. Jag tillämpar samma principer för kärnutveckling och använder i allmänhet inte patchar om det inte finns en mätbar fördel. Batterimonitorn i EX Kernel Manager är ett exempel på detta. Det erbjuder ett sätt att objektivt mäta effekten av batterijusteringar och kärnbyten. De flytande monitorerna i DevCheck är ett annat verktyg jag använder för utveckling, mest för att övervaka CPU frekvenser och temperaturer under olika användningsfall som spel eller titta på videor eller webb bläddring.
Hur har förändringar av Android de senaste åren påverkat ditt arbete?
Ibland är det svårt att hantera de många säkerhetsförändringarna, men jag förstår dem. Om jag inte har fel så används Android nu mer än Windows, vilket gör det till ett mål. Dåliga människor kommer att använda vilken vinkel de kan för att utnyttja Android-användare.
Att förhindra modifiering av systempartitionen är uppenbarligen nyckeln till att skydda en enhets integritet. Jag minns när HTC började göra detta 2012 eller 2013 och det verkade som världens ände. På den tiden behövdes skriva till /system för root, redigera build.prop, installera privilegierade appar, ta bort bloatware och praktiskt taget alla populära mod. Många av anpassningarna vid den tiden involverade saker som deodexing och modifiering av ramverket. Under lång tid fanns ingen kärnkälla tillgänglig från HTC, så jag gjorde en kärnmodul för att inaktivera systemskrivskydd i lagerkärnan, som jag först blev känd som utvecklare för. Men med tiden, eftersom skydd som sanning blev en standarddel av Android, tvingade det fram innovation och bättre lösningar som Chainfires systemlösa rot och nu finns Magisk som gör allt möjligt systemlöst.
En annan stor är SELinux, som fick massor av appar att sluta fungera. Många användare hatade det och än i dag finns det människor som kör med SELinux i tillåtande läge, vilket är en mycket dålig idé. Jag skulle säga att SELinux är den enskilt viktigaste säkerhetsfunktionen i Android. För att ge ett exempel på vikten av SELinux, när jag först skaffade Pixel XL, fanns det ingen root tillgänglig, men Dirty Cow-exploatet skapade nyheter. Jag var ivrig att börja utveckla kärnan, vilket innebär att söka igenom eller ändra sysfs-filer, vilket kräver root. Jag kompilerade ett av Dirty Cow proof-of-concepts och kunde köra kommandon som root, men SELinux hindrade mig från att göra något intressant. Jag var tvungen att ändra boot.img för att göra SELinux tillåtande. Jag hade kanske uppnått full åtkomst utan att modifiera kärnan, men det skulle ha tagit många, många timmar. Allt detta för att säga, låt SELinux upprätthålla, det är den huvudsakliga försvarslinjen mot skadlig programvara. Lär dig att använda sepolicy-inject för att ändra specifika policyer efter behov.
När Nougat kom, blev till en början nästan hela /sys och /proc osynliga för användarappar. Root har alltid varit nödvändigt för att göra ändringar, men plötsligt var root nödvändigt för att bara läsa /sys och /proc. Det finns definitivt information i de filsystemen som kan användas för att utnyttja en enhet, så det var nödvändigt att lägga till begränsningar. Men det finns också mycket info som användarna ska kunna se. Varför ska root krävas för att se den aktuella i/o-schemaläggaren, eller GPU-frekvensen eller typen av panelhårdvara? Jag var tvungen att göra många ändringar i DevCheck för att hantera detta, och många användare var förvirrade över varför information inte längre var tillgänglig efter uppdatering till Nougat. Så småningom upphävdes några av begränsningarna för sysfs-vägar.
Bortsett från det, ur ett apputvecklingsperspektiv, gillar jag de flesta API-ändringarna i Android, även om de tvingar mig att göra många ändringar i mina appar. Dessa förändringar är vanligtvis till det bättre.
Kolla in del 2 av denna intervju!