Vi interviewer flar2, udvikleren af ElementalX-kernen og dykker ned i emner som hans personlige liv, udviklingsarbejde og meget mere.
Jeg fik for nylig interviewet flar2, manden bag den berømte ElementalX-kerne, og hans endnu mere populære ElementalX Kernel Manager-applikation. Han har udgivet en version af sin kerne til en bred vifte af enheder, herunder OnePlus og Nexus-enheder.
I denne del spørger vi om flar2s tanker om flaskehalse i Android-ydelsen og mere om hans personlige liv! Du kan tjekke ud del 2 af dette interview her.
Hej med dig! Præsenter dig selv først og fremmest, før vi går ned til spørgsmålene.
Mit navn er Aaron Segaert, også kendt som flar2. De fleste kender mig som udvikler af ElementalX-kernen. Jeg har også et par apps.
Havde du erfaring med computere og udvikling på forhånd? Ligesom en datamatikeruddannelse eller noget?
Jeg startede med computere, da jeg var meget ung. Min første computer var en Texas Instruments TI-99/4A. Jeg lærte at kode i BASIC og gemte mine programmer på et kassettebånd (ja, jeg er gammel). Så købte vores familie en 286 IBM-klon, og jeg slap væk fra kodning på det tidspunkt, fordi det var før Internettet var bredt kendt, og jeg havde ingen ressourcer eller kendte endda nogen andre, der havde en computer. Jeg startede med datalogi på universitetet, men jeg flygtede fra det første år. Jeg gik aldrig rigtig i klasse, fordi jeg havde for travlt med at have det sjovt og spille koncerter med mit band. Senere vendte jeg tilbage til skolen og fik en doktorgrad i sociologi. I min tid som studerende blev jeg interesseret i Linux og open source, men kom aldrig ind i særlig seriøs programmering. Jeg bidrog med mindre bidder hist og her, men lavede mest kun scripts og små programmer til mine egne formål. Jeg byggede sandsynligvis min første Linux-kerne omkring 2002. På det tidspunkt skrev jeg ikke min egen kode, jeg eksperimenterede kun med forskellige patches og byggemuligheder for at øge ydeevnen. Jeg var mere til at bygge computere, overclocke og generelt prøve at få hardware til at gøre ting, den ikke skulle.
Har nogen anden udvikling end Android-appudvikling og kerneudvikling interesseret dig?
Egentlig ikke, jeg har fundet gode værktøjer tilgængelige til næsten alt, hvad jeg har haft brug for at gøre på computere. Grunden til, at jeg begyndte at arbejde på kerner og apps til Android, er, fordi jeg følte, at der var behov for visse funktioner og plads til forbedringer af de eksisterende værktøjer. For eksempel lavede jeg Button Mapper, fordi jeg ville have hjemtasten på Samsung-telefoner til at gøre mere, og jeg kunne ikke lide de omvendte back- og recents-taster. Jeg lavede DevCheck, fordi andre systeminfo-apps ikke viste de oplysninger, jeg ønskede at se, på en klar og kortfattet måde. ElementalX-kerne tilføjer nye hardwarefunktioner, og EX Kernel Manager styrer disse funktioner og tilføjer nogle værktøjer, jeg bruger for at gøre udviklingen nemmere. Jeg kan godt lide at løse problemer, og det er en sjov udfordring at lave omvendt udvikling af ting eller tilføje nye hardwarefunktioner til en telefon.
Hvordan kom du i kontakt med Android-udvikling, specifikt kerneudvikling?
Jeg hadede altid mobiltelefoner og modstod dem i lang tid. Min kone og jeg delte en grundlæggende flip-telefon med en minimal plan, der hovedsageligt blev brugt til nødsituationer. I 2012 havde vi en brand i vores hjem og var ude i næsten tre måneder. Alle vores forsyninger blev afbrudt, og vi besluttede ikke at tilslutte vores fastnet igen, så vi fik en smartphone, som var en LG P-noget, tror jeg. Jeg indså, at det var ligesom en mini-computer og besluttede, at jeg havde brug for min egen mini-computer, så jeg købte en HTC One V.
Da jeg fikser og modificerer stort set alt, opdagede jeg straks XDA og fandt ud af, at ikke kun Android-telefoner kørte Linux, de kunne overclockes. Jeg har været Linux-bruger i lang tid, så jeg gaflede en af kernerne og blev hooked. Jeg fik hurtigt en billig Acer-tablet og begyndte at rode med den hardware og kerne, fordi jeg ønskede, at den skulle have USB OTG. Det viste sig, at hardwaren ikke var i stand, men det var sådan, jeg begyndte at lære mere om mobil hardware. Jeg udgav aldrig offentligt en kerne til LG, Acer-tabletten eller One V, men byggede mine egne kerner til hver og installerede brugerdefinerede ROM'er, som var nødvendige i de dage, da Android endnu ikke var modent.
Jeg voksede hurtigt ud af One V og byttede til en HTC One XL, og det var da ElementalX blev født.
Hvad var målet for ElementalX oprindeligt, og hvordan har det ændret sig i de seneste år?
Målet med ElementalX har altid været at tilføje nyttige hardwarefunktioner, uden at gå på kompromis med stabilitet eller ydeevne, og frigive noget, som folk kan stole på for bare at fungere. Jeg sætter altid stabilitet først, fordi jeg har brug for, at min telefon er pålidelig. Ingen tilfældige genstarter eller ting som at kameraet ikke virker. Filosofien er forblevet den samme gennem årene. Jeg holder tingene enkle og tilføjer hardwarefunktioner, som jeg finder nyttige. Ting som vækkebevægelser, høj lysstyrketilstand, vibrationsjustering, lydkontrol, understøttelse af flere filsystemer, joysticks osv.
Jeg arbejder hårdt på at holde mine kerner opdaterede, nemme at installere og så bredt kompatible som muligt. Nogle brugere er skuffede over, at jeg ikke tilføjer en masse patches fra CAF eller upstream Linux, men mit hovedmål er at levere et meget stabilt produkt uden mærkelige problemer. Mange af mine brugere er ikke folk, der poster meget på XDA, de er superbrugere, der har et specifikt behov opfyldt af en brugerdefineret kerne, eller folk, der af og til kan lide at pille ved deres hardware, men ikke er hardcore flashaholics. Jeg ønsker, at folk, der ikke følger alle de seneste Android-udviklinger, skal kunne bruge ElementalX uden problemer.
Der er masser af andre kerner, der eksperimenterer med upstream patches. I ElementalX bruger jeg et nøje udvalgt sæt patches og optimeringer. I min karriere uden for Android måler jeg ting, der er svære at måle, og bruger evidens til at opbygge politik og give råd. Jeg anvender de samme principper til kerneudvikling og bruger generelt ikke patches, medmindre der er en målbar fordel. Batterimonitoren i EX Kernel Manager er et eksempel på dette. Det tilbyder en måde at objektivt måle effekten af batteritweaks og kerneændringer. De flydende skærme i DevCheck er et andet værktøj, jeg bruger til udvikling, mest til overvågning af CPU frekvenser og temperaturer under forskellige brugssager som spil eller visning af videoer eller web browsing.
Hvordan har ændringer i Android de sidste par år påvirket dit arbejde?
Nogle gange er det svært at håndtere de mange sikkerhedsændringer, men jeg forstår dem. Hvis jeg ikke tager fejl, er Android nu mere udbredt end Windows, hvilket gør det til et mål. Dårlige mennesker vil bruge enhver vinkel, de kan, til at udnytte Android-brugere.
At forhindre ændring af systempartitionen er naturligvis nøglen til at beskytte en enheds integritet. Jeg kan huske, da HTC begyndte at gøre dette i 2012 eller 2013, og det så ud som verdens undergang. På det tidspunkt var det nødvendigt at skrive til /system til root, redigering af build.prop, installation af privilegerede apps, fjernelse af bloatware og praktisk talt alle populære modifikationer. Mange af tilpasningerne på det tidspunkt involverede ting som deodexing og ændring af rammerne. I lang tid var der ingen kernekilde tilgængelig fra HTC, så jeg lavede et kernemodul til at deaktivere systemskrivningsbeskyttelse i aktiekernen, som jeg først blev kendt som udvikler for. Men med tiden, da beskyttelser som sandhed blev en standard del af Android, fremtvang det innovation og bedre løsninger som Chainfires systemløse rod og nu er der Magisk, der laver alle mulige ting systemløst.
En anden stor er SELinux, som fik et væld af apps til at holde op med at fungere. Mange brugere hadede det, og stadig den dag i dag er der folk, der kører med SELinux i permissive mode, hvilket er en meget dårlig idé. Jeg vil sige, at SELinux er den vigtigste sikkerhedsfunktion i Android. For at give et eksempel på vigtigheden af SELinux, da jeg først fik Pixel XL, var der ingen tilgængelig rod, men Dirty Cow-udnyttelsen var ved at skabe nyheder. Jeg var ivrig efter at starte kerneudvikling, hvilket betyder at søge gennem eller ændre sysfs-filer, hvilket kræver root. Jeg kompilerede et af Dirty Cow proof-of-concepts og var i stand til at køre kommandoer som root, men SELinux forhindrede mig i at gøre noget interessant. Jeg var nødt til at ændre boot.img for at gøre SELinux tilladelig. Jeg kunne have opnået fuld adgang uden at ændre kernen, men det ville have taget mange, mange timer. Alt dette for at sige, lad SELinux håndhæve, det er hovedforsvaret mod malware. Lær at bruge sepolicy-inject til at ændre specifikke politikker efter behov.
Da Nougat kom, blev næsten alle /sys og /proc oprindeligt usynlige for brugerapps. Root har altid været nødvendigt for at foretage ændringer, men pludselig var root nødvendigt blot for at læse /sys og /proc. Der er helt sikkert information i de filsystemer, der kan bruges til at udnytte en enhed, så det var nødvendigt at tilføje begrænsninger. Men der er også en masse info, som brugerne skal kunne se. Hvorfor skal root kræves for at se den aktuelle i/o-planlægger eller GPU-frekvens eller typen af panelhardware? Jeg var nødt til at foretage en masse ændringer i DevCheck for at håndtere dette, og mange brugere var forvirrede over, hvorfor information ikke længere var tilgængelig efter opdatering til Nougat. Til sidst blev nogle af begrænsningerne på sysfs-stier ophævet.
Bortset fra det, set fra et app-udviklingsperspektiv, kan jeg godt lide de fleste API-ændringer til Android, selvom de tvinger mig til at foretage en masse ændringer i mine apps. Disse ændringer er normalt til det bedre.
Se del 2 af dette interview!