Del 1 av en intervju med Francisco Franco, utvecklaren av Franco Kernel och andra applikationer för många olika enheter.
Jag hade nyligen nöjet att intervjua mannen bakom en av de mest populära Android-kärnorna någonsin, Franco-kärnan. För närvarande är kärnan tillgänglig på många olika enheter, inklusive olika Nexus- och OnePlus-enheter och Google Pixel / Pixel XL.
I den här delen pratar vi om Francisco Francos resa in i kärnutveckling och hans åsikt om förändringarna Android har genomgått genom åren.
Jag är Adam Conway här på XDA för att intervjua Francisco Franco, utvecklare av Franco Kernel! Vill du presentera dig själv?
Visst, jag heter Francisco, som du nyss sa, och jag antar att jag redan har varit på XDA i 1 miljon år! Har gjort alla möjliga saker. Kärnor, appar, och den senaste tiden har jag slackat lite mer på kärnor eftersom det blir tröttsamt efter ett tag, men jag är fortfarande full på de flesta av mina enheter.
Okej, så jag antar att många människor skulle känna till ditt arbete, men många människor skulle inte vara bekanta med den faktiska personen bakom arbetet. Så jag antar att du verkligen har någon form av tidigare erfarenhet innan kärnor? Som någon datavetenskaplig examen eller något liknande innan?
Jag har alltid varit passionerad för datorer, som alla barn under uppväxten antar jag. Efter att jag fyllt 18 och jag bestämde mig för att gå till universitetet som alla andra, och jag tror att jag tog datavetenskap eller något, men efter ett år eller så ansåg jag att det inte var det jag verkligen var passionerad handla om. Efter det året började mina förväntningar sjunka eftersom allt var prat och ingen handling, och det var jag börjar känna mig uttråkad - inte för att jag var bättre än någon annan, jag var bara medelmåttig - utan de faktiska disciplinerna var inte exakt vad jag ville. Så jag pratade med mina föräldrar och de var medvetna om att jag inte var särskilt nöjd med det. Under julen 2010 fick jag min första Android-telefon. En LG P500, det är en budgettelefon, väldigt billig, men jag visste att den körde Linux, och min favoritdisciplin på universitetet var datorarkitektur eller något, operativsystem. Och vi lärde oss lite skal och pratade lite om Linux-kärnan, och vad var en del av kärnan och all anslutning i kärnan, och det faktiska operativsystemet, och det var fascinerande för mig. Och så började jag bygga om Linux-kärnan till min gamla bärbara dator tillsammans med en vän. Vi kraschade våra bärbara datorer typ 100 gånger när vi gjorde det, men vi lärde oss genom processen. Och sedan började jag spela med min LG, och jag antar att det första jag gjorde var att försöka pressa lite mer prestanda eftersom den enheten faktiskt var ganska taskig. Så det bästa jag kunde göra var att bara gå igenom de vanliga Linux-kärnparametrarna för den faktiska minneshantering och sånt, och försök bara hitta något lite bättre än det som redan var där. Då hade jag lite kul.
Jag tror att jag inte har berättat detta tidigare i tidigare intervjuer, men då använde den enheten ett gammalt filsystem som heter YAFFS - det betyder Yet Another Flash Filsystem, men det var ganska långsamt när vi försökte montera som en RAM-stödd växlingsskiva så jag kommer inte ihåg detaljerna, men vi gjorde alla möjliga olika experimenterade med det och det slutade med att vi monterade Dalvik ovanpå minnes-RAM-minnet som måste byggas om varje omstart eftersom, som ni vet, RAM-minne försvinner varje gång vi startar om. Men det gjorde att öppna applikationer och köra benchmarks ganska snabbare så vi var nöjda. Så efter det började jag gå lite djupare och försöka kompilera LG: s kärnkällor för enheten, och jag gjorde alla möjliga dåliga bedömningar och alla möjliga misstag - Wi-Fi-nätverk, vad som helst - allt du kan tänka dig från någon utan erfarenhet. Det här var kul, jag lärde mig mycket. Jag antar att efter ett år eller sex månader [av] att göra det var jag lite mer fokuserad och jag visste lite bättre vad jag hade för att få nedladdningarna. Det är vad vi alla vill ha i slutet av dagen. Efter det lyckades jag få några donationer och flytta upp till andra enheter. Jag antar att Nexus S, sedan Galaxy Nexus och sedan efter den perioden lyckades jag få ut min första app. Jag antar att jag har haft mycket tur och jag har kunnat finansiera mig med att köpa nya enheter, och det blåste upp därifrån. Så jag antar att jag i slutet av dagen är skyldig allt, jag skulle inte säga XDA men plattformen som XDA ger oss.
Och samhället liksom bakom det och allt det där.
Ja ja, jag menar plattformen, det är gemenskapen och själva forumen. För alla som lyssnar, detta är inte en betald sponsor eller något, jag får inte betalt för att säga detta, det är bara sant!
Det finns ingen video, folket ser inte att pistolen riktas mot ditt huvud, det är okej.
Hahaha, ja men någon kommer att säga att jag får betalt för att säga detta så jag säger det bara! Men ja, ja, det har varit en fantastisk plattform för mig att bygga coola grejer, lära mig mycket, jag har lärt mig allt där genom att mestadels göra misstag och när jag lär mig gör jag fortfarande min beskärda del av problemen. Jag förstörde min Xiaomi Redmi Note 3, eh, bootloadern är bara förstörd. Så jag måste ansluta den igen till min Windows-dator som sitter där bak och måste ladda upp allt och den har stått här i typ tre månader. Jag får all sorts hat från alla att jag inte uppmärksammar den enheten, och så jag gör fortfarande [misstag] antar jag, så även efter alla dessa år finns det fortfarande saker att lära och jag har haft turen att ha varit med om den här resan och det har varit grymt bra.
Tja, jag antar att när du började med... LG P500 var det?
Jaja.
Hur många år sedan var det? För det måste ha varit runt de ursprungliga versionerna av Android eller hur? Runt Froyo eller något?
Ja, det levererades med Froyo och det uppgraderades till Gingerbread några månader efteråt. Den enheten tror jag var 2010, början av 2011, förmodligen tidigare. Jag vet att mitt konto på XDA skapades i december 2010 men jag hade enheten i förväg. Så jag antar antagligen runt den tiden, ja.
Hur har Android utvecklats prestandamässigt sedan dess? Som hur har det förändrats för dig att skriva kärnor då och skriva dem nu? Och jag antar vad dina åsikter är om förändringarna.
Kärnmässigt tror jag att vi har utvecklats med den faktiska Linux-kärnan och alla förändringar som Android-teamet faktiskt ville göra implementera för en viss Android-version, så de dikterar de flesta av vilka specialfunktioner kärnan kommer att ha, baserat på vad de vill ha att skicka. Men jag antar att faktisk prestanda, fler kärnor hjälper faktiskt mycket, för då hade du inte något riktigt sätt att göra det flytta den här tråden (sic), eller föreställ dig nätverksförfrågningar genom en bakgrundstråd, eller åtminstone faktisk realtid gängning. Jag tror att det var den största förändringen genom åren, att ha fler sätt att sprida ut ditt arbete, och inte ha Android bara sakta ner eftersom alla försöker ta tag i den lilla biten av CPU-andel. Mer än något annat tror jag multi-core och verklig multi-threading uppbackad av Linux. Jag trodde att det var den största förändringen.
Ah okej, så vad är din åsikt då om HMP vs EAS? För uppenbarligen är EAS bara nytt och används bara i ett fåtal enheter - som att du använder en Google Pixel eller hur?
Ja, för närvarande använder jag en Galaxy S8, men jag har också en Pixel. Jag vet inte båda i så [mycket] detalj, de är bara olika implementeringar av hur en multi-klustrad enhet ska agera baserat på vad som händer på enheten vid vissa tidpunkter. Att köra två olika kluster med två olika strömförbrukning, det är ganska svårt. Du måste uppfylla förväntningarna på att uppgifter rör sig upp och ner, och det finns en latens inblandad där och HMP var den första riktiga implementeringen av en riktig multiklusterarkitektur för ARM, för om jag minns rätt, innan HMP användes i verkligheten, hade Samsung en initial implementering där du antingen använde de fyra första kärnorna, som lågeffektskärnor, eller fyra högpresterande kärnor men de kördes aldrig vid samtidigt. Men sedan efteråt med HMP var kärnorna redo att användas när som helst och uppgifterna flyttade bara från ett kluster till ett annat och vice versa och det fungerade ut, men du hade inte så mycket information från schemaläggaren för att visa detta för guvernören för att faktiskt bestämma vilken typ av frekvens som skulle användas vid det specifik tid, så du var tvungen att ta itu med, som att försöka förstå vad som händer på [cirka] 20 sekunder och sedan baserat på vad som hände där, bestämmer du vad du ska do. EAS, det handlar mer [om] att förstå vad som kommer att hända i framtiden och att bestämma i realtid baserat på uteffekterna för varje kärna, och sedan är det en massa beräkningar och komplicerade saker i bakgrund
Som energimodeller och så vidare för att backa upp det hela.
Ja, jag antar det, det är ganska komplicerat, jag kan inte alla detaljer. Jag har läst en massa dokument men det är ganska komplicerat och det är inte bara att slå på en strömbrytare och ha den redo att användas. Jag får den frågan mycket kan du implementera EAS på XYZ-telefon. Mina svar är alltid "Det är inte att vrida på en ratt, det är inte så, det tog ett helt team av Googlers och killar från Linaro att implementera det och du måste flytta runt saker, göra saker, testa saker och det är bara för mycket arbete och typ att gå blind" och... ja. Det är svårt.
Så du måste veta exakt vad du gör, det är inte ett enmansjobb?
Ja, du måste veta vad du gör, vem som helst kan välja patchar och slå samman dem men faktiska tester och se till att det fungerar korrekt och att du skulle behöva en ordentlig maskin för att upptäcka strömförbrukningen för varje komponent och det finns ett gäng tabeller på kärnan där du kan skriva kraften i varje kärna, och baserat på det kommer koden att bestämma vad som ska do. Det är ganska komplicerat. Jag tror inte att det är en definitiv lösning på alla problem, men det är definitivt det bästa vi har just nu.
Så du ser det som en förbättring?
Ja visst, miles miles miles away. Det är en klar förbättring från HMP eller någon annan arkitektur, för om du kan förstå vad som kommer att hända i framtiden kan du reagera mycket snabbare för alla förfrågningar eller vad som helst som händer på enheten, det är därför Google Pixel är så snabb och så smidig, eftersom allt händer nästan i realtid. Det flyttar frekvenserna upp och ner vilket är det enklaste sättet att nå förväntningarna på prestanda.
Jag antar att med det då, om det blir mer adoption i framtiden av EAS, hur ser du på att det påverkar din egen utveckling när det gäller kärnor? Skulle du fortfarande hålla fast vid HMP eller skulle du gå med redan släppta energimodeller? Till exempel på OnePlus 3 återanvänder [ROM-utvecklare] energimodellen från Google Pixel för EAS. Kunde du se dig själv göra något sådant?
Jag kommer förmodligen inte att göra det, om enheten inte levereras med EAS till att börja med kommer jag förmodligen inte att implementera den på något sätt eller i någon form eftersom som jag sa det är en ganska lång process och ingen i XDA vet bättre än alla dessa ingenjörer, så vi försöker bara spela Gud antar jag.
När du talar om framtiden med Android och kärnor, vad tycker du om den senaste Android Oreo-versionen? Tycker du att förändringarna är bra? Har du tittat på någon av de nya kärncommits?
Det var inte lika många ändringar på kärnsidan på Nexus 6P och Nexus 5X, bara små fixar här och där. På Google Pixel itererade de på EAS-implementeringen och de tillbringade lite tid med att förbättra pärmsektionen, för nu pärmen, tillsammans med Project Diskant, det är som att dela upp olika paket, så de måste gå igenom 50 eller 100 olika patchar för att förbättra bindemedlet och få det separerat i olika processer. Förutom det var det bara vanligt arbete för en stor release. När det finns en ny plattformsversion, bråkar du vanligtvis inte med kärnan så mycket, eftersom du bråkar med kernel behöver du faktiskt mycket QA, om du ibland ändrar en sak hör du att det påverkar något i en annan delsystem. Det är vad de brukar göra, det är därför du inte har en kärnversionsbump mellan plattformsuppgraderingar. Det är bara mycket jobb. Vanligtvis inte värt det men ja, det var mest pärmargrejer, lite av schemaläggaren och de vanliga säkerhetsfixarna. Jag gick igenom dem alla, men ingenting fick mig riktigt. Min uppmärksamhet riktades bara till pärmen.
Ah okej, så bara standardgrejer egentligen.
Ja, de är ganska komplicerade och fråga mig inte om detaljer!
Det här är ett helt annat ämne, vad tycker du om F2FS mot ext4? Eftersom du skulle se att många kommer att säga att F2FS är instabilt och sånt och orsakar problem,Jag undrar bara vad du tycker om det.
Jag vet inte heller [om] detaljer eftersom filsystem är ganska svåra, det finns många rörliga delar här och där. Jag ska bara citera en Google-ingenjör som säger att baserat på deras test, fungerar F2FS inte snabbare än ext4, och dessutom när de testade saker för Google Pixel, F2FS gav inte stöd för... Jag tror att det var filblockkryptering, medan ext4 för stöd Det. Så bara det betyder - bara skrota det. Man måste tänka på två saker, ext4 har jobbat på i typ 20 år med många väldigt smarta ingenjörer från olika företag och de vet vad de håller på med. F2FS var, om jag minns rätt, implementerat av Samsung. Det är ett ganska nytt filsystem så saker som är så komplicerade som dessa tar tid att förbättra och upprepa, som du kan se från Apples filsystem som precis släpptes på iOS, och de kommer att göra samma sak för Mac OS. Saker och ting tar tid, du behöver ett stort team för att göra dessa saker korrekt. Jag är en stor anhängare av "om det fungerar, rör det inte" och vad vi har just nu -- det fungerar, och jag tror inte att det ger dig några prestationsproblem så jag ser ingen anledning att bråka med det.
Ah okej, det är rättvist nog! Vad sägs om SDCardFS byts till från FUSE? Vad skulle din åsikt vara om det?
Det hände eftersom det äldre FUSE-filsystemet var en av de värsta sakerna som hände på Android. Prestandan var hemsk, det fanns många systemanrop mellan kärnan och användarutrymmet och nu med SDCardFS är det gjort ordentligt. Det är ett normalt filsystem att hantera detta, återigen jag vet inte detaljerna eftersom det är en mycket komplicerad sak, men vad jag har läst och sett och hört från olika podcasts från Android-teamet är, det fixade i princip alla problem med den gamla systemet. Det var ganska hemskt, prestationen var hemsk.
Kolla in del 2 genom att klicka på den här knappen!