We interviewen flar2, de ontwikkelaar van de ElementalX-kernel en verdiepen ons in onderwerpen als zijn persoonlijke leven, ontwikkelingswerk en meer.
Ik mocht onlangs flar2 interviewen, de man achter de beroemde ElementalX-kernel, en zijn nog populairdere ElementalX Kernel Manager-applicatie. Hij heeft een versie van zijn kernel uitgebracht voor een breed scala aan apparaten, waaronder OnePlus en Nexus-apparaten.
In dit deel vragen we naar de mening van flar2 over knelpunten in de Android-prestaties en meer over zijn persoonlijke leven! Je kunt uitchecken deel 2 van dit interview hier.
Hallo daar! Stel jezelf eerst even voor voordat we op de vragen ingaan.
Mijn naam is Aaron Segaert, ook wel bekend als flar2. De meeste mensen kennen mij als de ontwikkelaar van de ElementalX-kernel. Ik heb ook een paar apps.
Had u vooraf enige ervaring met computers en ontwikkeling? Een diploma informatica of zoiets?
Ik begon al op jonge leeftijd met computers. Mijn eerste computer was een Texas Instruments TI-99/4A. Ik heb leren coderen in BASIC en heb mijn programma's op een cassettebandje opgeslagen (ja, ik ben oud). Toen kocht ons gezin een 286 IBM-kloon, en op dat moment stopte ik met coderen omdat dit vroeger was het internet was algemeen bekend en ik had geen enkele bron, of kende zelfs niemand anders die er een had computer. Ik ben begonnen met informatica aan de universiteit, maar zakte in het eerste jaar. Ik ging nooit echt naar de les omdat ik het te druk had met plezier maken en optredens spelen met mijn band. Later keerde ik terug naar school en behaalde een doctoraat in de sociologie. Tijdens mijn studententijd raakte ik geïnteresseerd in Linux en open source, maar ik raakte nooit echt serieus met programmeren. Ik heb hier en daar kleine stukjes bijgedragen, maar meestal heb ik alleen maar scripts en kleine programma's voor mijn eigen doeleinden gemaakt. Ik heb waarschijnlijk mijn eerste Linux-kernel rond 2002 gebouwd. Destijds was ik niet mijn eigen code aan het schrijven, maar experimenteerde ik alleen met verschillende patches en bouwopties om de prestaties te verbeteren. Ik hield me meer bezig met het bouwen van computers, overklokken en in het algemeen proberen hardware dingen te laten doen die niet bedoeld waren.
Heeft een andere ontwikkeling dan de ontwikkeling van Android-apps en kernelontwikkeling u geïnteresseerd?
Niet echt, ik heb goede tools gevonden voor bijna alles wat ik op computers moet doen. De reden dat ik aan kernels en apps voor Android begon te werken, is omdat ik voelde dat er behoefte was aan bepaalde functies en ruimte voor verbetering van de bestaande tools. Ik heb bijvoorbeeld Button Mapper gemaakt omdat ik wilde dat de home-toets op Samsung-telefoons meer zou doen, en ik hield niet van de omgekeerde toetsen en de recente toetsen. Ik heb DevCheck gemaakt omdat andere systeeminfo-apps niet de informatie die ik wilde zien op een duidelijke en beknopte manier lieten zien. De ElementalX-kernel voegt nieuwe hardwarefuncties toe en EX Kernel Manager beheert deze functies en voegt enkele tools toe die ik gebruik om de ontwikkeling eenvoudiger te maken. Ik houd ervan om problemen op te lossen en het is een leuke uitdaging om dingen te reverse-engineeren of nieuwe hardwarefuncties aan een telefoon toe te voegen.
Hoe ben je in aanraking gekomen met Android-ontwikkeling, met name kernelontwikkeling?
Ik heb altijd een hekel gehad aan mobiele telefoons en heb me er lange tijd tegen verzet. Mijn vrouw en ik deelden een eenvoudige klaptelefoon met een minimaal abonnement die voornamelijk voor noodgevallen werd gebruikt. In 2012 hadden we een brand in ons huis en waren we bijna drie maanden afwezig. Al onze nutsvoorzieningen waren afgesloten en we besloten onze vaste lijn niet opnieuw aan te sluiten, dus kochten we een smartphone, een LG P, zoiets denk ik. Ik besefte dat het op een minicomputer leek en besloot dat ik mijn eigen minicomputer nodig had, dus kocht ik een HTC One V.
Omdat ik vrijwel alles aan het sleutelen en modificeren ben, ontdekte ik meteen XDA en ontdekte dat Android-telefoons niet alleen op Linux draaiden, maar dat ze ook konden worden overgeklokt. Ik ben al heel lang een Linux-gebruiker, dus ik heb een van de kernels geforkt en was verslaafd. Ik kreeg al snel een goedkope Acer-tablet en begon met die hardware en kernel te rommelen omdat ik wilde dat deze USB OTG had. Blijkt dat de hardware het niet kon, maar zo begon ik meer te leren over mobiele hardware. Ik heb nooit publiekelijk een kernel uitgebracht voor de LG, Acer-tablet of One V, maar voor elke kernel mijn eigen kernels gebouwd en aangepaste ROM's geïnstalleerd, die in die tijd nodig waren, aangezien Android nog niet volwassen was.
Ik ontgroeide al snel de One V en ruilde in voor een HTC One XL en toen werd ElementalX geboren.
Wat was aanvankelijk het doel van ElementalX en hoe is dat de afgelopen jaren veranderd?
Het doel van ElementalX is altijd geweest om nuttige hardwarefuncties toe te voegen, zonder de stabiliteit of prestaties in gevaar te brengen, en om iets uit te brengen waar mensen op kunnen vertrouwen om gewoon te werken. Ik stel stabiliteit altijd op de eerste plaats, omdat ik wil dat mijn telefoon betrouwbaar is. Geen willekeurige herstart of dingen zoals de camera die niet werkt. De filosofie is door de jaren heen hetzelfde gebleven. Ik houd het simpel en voeg hardwarefuncties toe die ik nuttig vind. Dingen zoals wekgebaren, hoge helderheidsmodus, trillingsaanpassing, geluidsregeling, ondersteuning voor meer bestandssystemen, joysticks, enz.
Ik werk er hard aan om mijn kernels up-to-date, eenvoudig te installeren en zo breed mogelijk compatibel te houden. Sommige gebruikers zijn teleurgesteld dat ik niet veel patches van CAF of upstream Linux toevoeg, maar mijn belangrijkste doel is om een zeer stabiel product af te leveren zonder rare problemen. Veel van mijn gebruikers zijn geen mensen die veel op XDA posten, het zijn krachtige gebruikers die aan een specifieke behoefte voldoen door een aangepaste kernel, of mensen die af en toe graag aan hun hardware sleutelen, maar niet hardcore zijn flashaholics. Ik wil dat mensen die niet alle nieuwste Android-ontwikkelingen volgen, ElementalX zonder problemen kunnen gebruiken.
Er zijn tal van andere kernels die experimenteren met upstream-patches. In ElementalX gebruik ik een zorgvuldig geselecteerde set patches en optimalisaties. In mijn carrière buiten Android meet ik dingen die moeilijk te meten zijn en gebruik ik bewijsmateriaal om beleid op te bouwen en advies te geven. Ik pas dezelfde principes toe op de kernelontwikkeling en gebruik over het algemeen geen patches tenzij er een meetbaar voordeel is. De batterijmonitor in EX Kernel Manager is hiervan een voorbeeld. Het biedt een manier om objectief het effect van batterijaanpassingen en kernelveranderingen te meten. De zwevende monitoren in DevCheck zijn een ander hulpmiddel dat ik gebruik voor ontwikkeling, vooral voor het monitoren van de CPU frequenties en temperaturen tijdens verschillende gebruiksscenario's, zoals gamen of video's of internet bekijken browsen.
Welke invloed hebben de veranderingen in Android van de afgelopen jaren op uw werk gehad?
Soms is het lastig om met de vele beveiligingsveranderingen om te gaan, maar ik begrijp ze. Als ik me niet vergis, wordt Android nu op grotere schaal gebruikt dan Windows, waardoor het een doelwit is. Slechte mensen zullen elke mogelijke hoek gebruiken om Android-gebruikers uit te buiten.
Het voorkomen van wijziging van de systeempartitie is uiteraard de sleutel tot het beschermen van de integriteit van een apparaat. Ik herinner me dat HTC dit in 2012 of 2013 begon te doen en het leek het einde van de wereld. Destijds was het schrijven naar /system nodig voor root, het bewerken van build.prop, het installeren van bevoorrechte apps, het verwijderen van bloatware en vrijwel elke populaire mod. Veel van de aanpassingen in die tijd betroffen zaken als deodexing en het aanpassen van het raamwerk. Lange tijd was er geen kernelbron beschikbaar bij HTC, dus heb ik een kernelmodule gemaakt om de schrijfbeveiliging van het systeem in de standaardkernel uit te schakelen, waarvoor ik voor het eerst bekend werd als ontwikkelaar. Maar na verloop van tijd, toen beveiligingen zoals waarheid een standaardonderdeel van Android werden, dwong dit innovatie en beter af oplossingen zoals de systeemloze root van Chainfire en nu is er Magisk die van alles doet systeemloos.
Een andere grote is SELinux, waardoor een heleboel apps niet meer werkten. Veel gebruikers hadden er een hekel aan en tot op de dag van vandaag zijn er mensen die met SELinux in de permissieve modus draaien, wat een heel slecht idee is. Ik zou zeggen dat SELinux de belangrijkste beveiligingsfunctie van Android is. Om een voorbeeld te geven van het belang van SELinux: toen ik voor het eerst de Pixel XL kreeg, was er geen root beschikbaar, maar de Dirty Cow-exploit haalde nieuws. Ik stond te popelen om met de kernelontwikkeling te beginnen, wat betekent dat ik sysfs-bestanden moet doorzoeken of aanpassen, waarvoor root nodig is. Ik heb een van de Dirty Cow proof-of-concepts gecompileerd en kon commando's als root uitvoeren, maar SELinux weerhield me ervan iets interessants te doen. Ik moest de boot.img aanpassen om SELinux tolerant te maken. Ik had misschien volledige toegang kunnen krijgen zonder de kernel aan te passen, maar het zou vele, vele uren hebben geduurd. Dit alles om te zeggen: laat SELinux afdwingen, het is de belangrijkste verdedigingslinie tegen malware. Leer sepolicy-inject gebruiken om specifiek beleid indien nodig te wijzigen.
Toen Nougat op de markt kwam, werden aanvankelijk bijna alle /sys en /proc onzichtbaar voor gebruikersapps. Root is altijd nodig geweest om wijzigingen aan te brengen, maar plotseling was root nodig om simpelweg /sys en /proc te lezen. Er zit zeker informatie in die bestandssystemen die gebruikt kan worden om een apparaat te exploiteren, dus het was noodzakelijk om beperkingen toe te voegen. Maar er is ook veel informatie die gebruikers moeten kunnen zien. Waarom zou root nodig zijn om de huidige i/o-planner, of GPU-frequentie, of het type paneelhardware te zien? Ik moest veel wijzigingen aanbrengen in DevCheck om hiermee om te gaan, en veel gebruikers waren in de war over waarom informatie niet langer beschikbaar was na het updaten naar Nougat. Uiteindelijk werden enkele beperkingen op sysfs-paden opgeheven.
Afgezien daarvan vind ik de meeste API-wijzigingen in Android vanuit het perspectief van app-ontwikkeling leuk, ook al dwingen ze me om veel wijzigingen in mijn apps aan te brengen. Deze veranderingen zijn meestal ten goede.
Bekijk deel 2 van dit interview!