1. del intervjuja s Franciscom Francom, razvijalcem Franco Kernel in drugih aplikacij za številne različne naprave.
Pred kratkim sem imel veselje intervjuvati človeka, ki stoji za enim najbolj priljubljenih jeder Android doslej, jedrom Franco Kernel. Trenutno je jedro na voljo na številnih različnih napravah, vključno z različnimi napravami Nexus in OnePlus ter Google Pixel / Pixel XL.
V tem delu govorimo o poti Francisca Franca v razvoj jedra in njegovem mnenju o spremembah, ki jih je Android doživel skozi leta.
Jaz sem Adam Conway tukaj na XDA, da intervjujem Francisca Franca, razvijalca jedra Franco! Se želite predstaviti?
Seveda, ime mi je Francisco, kot ste pravkar rekli, in mislim, da sem na XDA že 1 milijon let! Počel sem najrazličnejše stvari. jedrca, aplikacije, in v zadnjem času malo bolj popuščam pri jedrih, ker čez nekaj časa postane utrujajoče, vendar sem na večini svojih naprav še vedno poln.
V redu, predvidevam, da bi veliko ljudi poznalo vaše delo, vendar veliko ljudi ne bi poznalo dejanske osebe, ki stoji za tem delom. Predvidevam, da imate res kakšne pretekle izkušnje pred jedri? Kot katera koli diploma iz računalništva ali kaj podobnega vnaprej?
Vedno sem bil navdušen nad računalniki, kot verjetno vsak otrok med odraščanjem. Ko sem dopolnil 18 let, sem se odločil, da bom šel na univerzo kot vsi ostali, in mislim, da sem jemal računalništvo ali kaj podobnega, toda po kakšnem letu sem ugotovil, da to ni tisto, kar me pravzaprav strastno zanima približno. Po tem letu so se moja pričakovanja začela zniževati, ker je bilo samo govorjenje in nič ukrepanja, pa sem tudi bil začela sem se dolgočasiti - ne zato, ker sem bila boljša od drugih, bila sem samo povprečna - ampak zaradi dejanskih disciplin niso bili točno kar sem hotel. Tako sem se pogovarjal s starši in zavedali so se, da s tem nisem preveč srečen. Za božič leta 2010 sem dobil svoj prvi telefon Android. LG P500, to je nizkocenovni telefon, zelo poceni, vendar sem vedel, da poganja Linux, in moja najljubša disciplina na univerzi je bila računalniška arhitektura ali kaj podobnega, operacijski sistemi. In malo smo se učili lupine in se malo pogovarjali o jedru Linuxa in še kaj je bil del jedra in vsa povezljivost v jedru ter dejanski operacijski sistem in to je bil fascinantno zame. In potem sem skupaj s prijateljem začel obnavljati jedro Linuxa za svoj stari prenosnik. Svoje prenosnike smo pri tem porušili že 100-krat, vendar smo se skozi proces naučili. In potem sem se začel igrati s svojim LG-jem in mislim, da sem najprej poskušal povečati zmogljivost, ker je bila ta naprava pravzaprav precej bedna. Najboljše, kar sem lahko naredil, je bilo, da sem pregledal standardne parametre jedra Linuxa za dejansko stanje upravljanje pomnilnika in podobno, in samo poskusite najti nekaj malce boljšega od tistega, kar je že bilo tam. Takrat sem se malo zabaval.
Mislim, da tega še nisem povedal v prejšnjih intervjujih, toda takrat je ta naprava uporabljala star datotečni sistem, imenovan YAFFS – to pomeni še en blisk Datotečni sistem, vendar je bil precej počasen, ko smo poskušali priklopiti kot izmenjalni disk, podprt z RAM-om, tako da se ne spomnim podrobnosti, vendar smo naredili vse vrste različnih eksperimentirali s tem in na koncu smo namestili Dalvik na vrh pomnilnika RAM, ki ga je bilo treba znova zgraditi ob vsakem ponovnem zagonu, ker, kot veste, RAM izgine vsak čas, ko znova zaženemo. Vendar pa je odpiranje aplikacij in izvajanje meril uspešnosti precej hitrejše, tako da smo bili zadovoljni. Po tem sem se začel malo poglabljati in poskušal prevesti izvorno kodo LG-jevega jedra za napravo in naredil sem vse vrste slabih presoje in najrazličnejše napake - omrežje Wi-Fi, karkoli - vse, kar si sploh lahko predstavljate od nekoga, ki nima izkušnje. To je bilo zabavno, veliko sem se naučil. Predvidevam, da sem bil po letu ali šestih mesecih tega početja nekoliko bolj osredotočen in sem malo bolje vedel, kaj moram dobiti za prenose. To si ob koncu dneva vsi želimo. Po tem mi je uspelo pridobiti nekaj donacij in preiti na druge naprave. Predvidevam, da Nexus S, nato Galaxy Nexus in po tem obdobju mi je uspelo izdati svojo prvo aplikacijo. Mislim, da sem imel veliko srečo in sem si lahko financiral nakup novih naprav, od tam pa je počilo. Torej mislim, da na koncu dneva dolgujem vse, ne bi rekel XDA, ampak platforma ki nam jih ponuja XDA.
In skupnost na nek način za tem in vse to.
Da, da, mislim na platformo, to je skupnost in dejanski forumi. Za vse, ki poslušate, to ni plačan sponzor ali kaj podobnega, nisem plačan, da bi to povedal, preprosto res je!
Ni videoposnetka, ljudje ne vidijo, da je pištola uperjena v vašo glavo, vse je v redu.
Hahaha, ja, ampak kdo bo rekel, da sem plačan, da to povem, zato bom pač rekel! Ampak ja, ja, to je bila zame čudovita platforma za gradnjo kul stvari, veliko učenja, tam sem se vsega naučil tako, da sem večinoma delal napake, pri učenju pa še vedno delam pošten del težav. Uničil sem svoj Xiaomi Redmi Note 3, uh, zagonski nalagalnik je pravkar uničen. Zato ga moram znova povezati s svojim računalnikom z operacijskim sistemom Windows, ki sedi tam zadaj, in moram vse znova zagnati in tukaj stoji približno tri mesece. Vsi me sovražijo, ker nisem pozoren na to napravo, zato še vedno delam [napake], tudi po vseh teh letih se je treba še kaj naučiti in imel sem veliko srečo, da sem bil na tej poti in je bilo super.
No, glede na to, da ste začeli z... LG P500 je bil to?
Ja, ja.
Koliko let nazaj je bilo to? Ker je to moralo biti okoli izvirnih različic Androida, kajne? Okoli Froya ali kaj?
Ja, to je bilo poslano s Froyo in nekaj mesecev kasneje je bilo nadgrajeno na Gingerbread. Mislim, da je bila ta naprava letnik 2010, začetek leta 2011, verjetno prej. Vem, da je bil moj račun na XDA ustvarjen decembra 2010, vendar sem imel napravo že prej. Torej mislim, da verjetno približno takrat, ja.
Kako se je Android od takrat razvijal glede zmogljivosti? Na primer, kako se je spremenilo vaše pisanje jeder takrat in njihovo pisanje zdaj? In predvidevam, kakšno je vaše mnenje o spremembah.
Kar zadeva jedro, mislim, da smo se razvili z dejanskim jedrom Linuxa in vsemi spremembami, ki jih je ekipa za Android dejansko želela izvajati za določeno izdajo Androida, tako da narekujejo večino posebnih funkcij, ki jih bo imelo jedro, glede na to, kaj želijo poslati. Ampak predvidevam, da dejanska zmogljivost, več jeder dejansko veliko pomaga, ker takrat nisi imel pravega načina za to premaknite to nit (sic) ali si predstavljajte omrežne zahteve prek niti v ozadju ali vsaj v dejanskem realnem času vrezovanje navojev. Mislim, da je bila to največja sprememba v preteklih letih, imeti več načinov za porazdelitev svojega dela, in ne da bi se Android samo upočasnil, ker vsi poskušajo zgrabiti tisti majhen delež procesorja. Bolj kot karkoli drugega mislim na večjedrno in dejansko resnično večnitnost, ki jo podpira Linux. Mislil sem, da je to največja sprememba.
Ah v redu, torej kakšno je vaše mnenje o HMP proti EAS? Ker je EAS očitno le nov in se uporablja le v nekaj napravah -- na primer, da uporabljate Google Pixel, kajne?
Da, trenutno uporabljam Galaxy S8, vendar imam tudi Pixel. Obojega ne poznam tako [veliko] podrobnosti, sta le različni izvedbi tega, kako naj naprava z več gručami deluje glede na to, kaj se v določenih trenutkih dogaja v napravi. Izvajanje dveh različnih gruč z dvema različnima porabama energije je precej težko. Izpolniti morate pričakovanja glede nalog, ki se premikajo navzgor in navzdol, pri čemer je vključena zakasnitev in HMP je bila prva prava izvedba prava arhitektura z več gručami za ARM, kajti če se prav spomnim, je imel Samsung, preden je bil HMP v resnični uporabi, začetni implementacijo, pri kateri ste bodisi uporabljali prva štiri jedra, na primer jedra z nizko porabo energije, ali štiri visoko zmogljiva jedra, ki pa nikoli niso delovala istočasno. Potem pa so bila jedra s HMP kadar koli pripravljena za uporabo in naloge so se samo premaknile iz ene gruče v drugo in obratno, kar je delovalo ven, vendar od razporejevalnika niste imeli toliko informacij, da bi to pokazali guvernerju, da bi se dejansko odločil, kakšna frekvenca bo pri tem uporabljena določen čas, tako da ste se morali ukvarjati s tem, da ste poskušali razumeti, kaj se zgodi v [približno] 20 sekundah, nato pa se na podlagi tega, kar se je tam zgodilo, odločite, kaj narediti. EAS, gre bolj [o] razumevanju, kaj se bo zgodilo v prihodnosti, in odločanju v realnem času na podlagi izhodne moči vsakega jedra, nato pa je kup izračunov in zapletenih stvari v ozadje
Na primer energetski modeli in tako naprej, da vse to podkrepimo.
Ja, mislim, da je precej zapleteno, ne poznam vseh podrobnosti, prebral sem kup dokumentov, vendar je precej zapleteno in ni samo vklopiti stikalo in imeti to pripravljeno za uporabo. Pogosto dobivam to vprašanje, ali lahko implementirate EAS na telefonu XYZ. Moji odgovori so vedno »To ni vrtenje gumba, ni tako, za implementacijo je bila potrebna cela ekipa Googlovih delavcev in fantov iz Linara to in stvari moraš premikati naokoli, delati stvari, preizkušati stvari in to je preprosto preveč dela in nekako slep" in … ja. Težko je.
Torej morate natančno vedeti, kaj delate, ali to ni delo za enega človeka?
Ja, vedeti moraš, kaj delaš, vsak lahko izbere popravke in jih združi, toda dejansko testiranje in zagotavljanje, da deluje pravilno, in potreboval bi ustrezen stroj za zaznavanje porabe energije vsake komponente in v jedru je kup tabel, kamor lahko zapišete moč vsakega jedra, in na podlagi tega se bo koda odločila, kaj naj narediti. To je precej zapleteno. Mislim, da to ni dokončna rešitev za vse težave, je pa vsekakor najboljše, kar imamo trenutno.
Torej vidite to kot izboljšavo?
Ja seveda, milje milje milje stran. To je nedvomna izboljšava glede na HMP ali katero koli drugo arhitekturo, ker če lahko razumete, kaj se bo zgodilo v prihodnosti, se lahko odzovete veliko hitreje na kakršno koli zahtevo ali karkoli se dogaja v napravi, zato je Google Pixel tako hiter in gladek, ker se vse dogaja skoraj v v realnem času. Premikanje frekvenc navzgor in navzdol je najlažji način za doseganje pričakovanj glede učinkovitosti.
Predvidevam, da potem, če bo v prihodnosti več sprejemanja EAS, kako vidite, da bo to vplivalo na vaš razvoj v zvezi z jedri? Bi še vedno vztrajali pri HMP ali bi se odločili za že izdane energetske modele? Na primer na OnePlus 3 [razvijalci ROM-a] ponovno uporabljajo energetski model iz Google Pixel za EAS. Bi se lahko videli, da počnete kaj takega?
Tega verjetno ne bom naredil, če naprava že na začetku ni priložena EAS, potem je verjetno ne bom implementiral na noben način ali v obliki, ker kot sem rekel, je to precej dolgotrajen proces in nihče v XDA ne ve bolje od vseh teh inženirjev, zato se verjetno samo poskušamo igrati boga.
Glede na to, ko govorimo o prihodnosti z Androidom in jedri, kakšno je vaše mnenje o nedavni izdaji Android Oreo? Se vam zdijo spremembe dobre? Ste si ogledali katero od novih potrditev jedra?
Pri Nexusu 6P in Nexusu 5X ni bilo toliko sprememb na strani jedra, le majhni popravki tu in tam. Na Google Pixelu so ponavljali implementacijo EAS in nekaj časa so porabili za izboljšanje odseka za vezavo, saj zdaj vezivo skupaj s projektom Visoki toni, to je kot razdelitev različnih paketov, zato morajo iti skozi 50 ali 100 različnih popravkov, da izboljšajo vezivo in ga ločijo na različne procesov. Razen tega je bilo to običajno delo za veliko izdajo. Ko je na voljo nova izdaja platforme, se običajno ne ukvarjate toliko z jedrom, ker se ukvarjate z kernel dejansko potrebuješ veliko QA, če včasih spremeniš eno stvar, slišiš, da vpliva na nekaj v drugi podsistem. To je tisto, kar običajno počnejo, zato med nadgradnjami platforme nimate težav z različico jedra. Je pač veliko dela. Običajno se ne izplača, toda ja, večinoma so bile vezivne stvari, nekaj razporejevalnika in običajni varnostni popravki. Šel sem skozi vse, a nič mi ni padlo na pamet. Mojo pozornost je pritegnil le registrator.
Ah v redu, torej res samo standardne stvari.
Ja, precej so zapleteni in ne sprašujte me po podrobnostih!
To je povsem druga tema, kakšno je vaše mnenje o F2FS proti ext4? Ker boste videli, da bo veliko ljudi reklo, da je F2FS nestabilen in podobno in povzroča težave,Zanima me, kaj menite o tem.
Tudi [o] podrobnostih ne vem, ker so datotečni sistemi precej trdi, tu in tam je veliko gibljivih delov. Samo citiral bom Googlovega inženirja, ki pravi, da na podlagi njihovega testa F2FS ne deluje nič hitreje od ext4, poleg tega pa, ko preizkušali so stvari za Google Pixel, F2FS ni nudil podpore za... mislim, da je šlo za šifriranje blokov datotek, medtem ko ext4 podpira to. Torej samo to pomeni - samo zavrzite. Razmisliti morate o dveh stvareh, na ext4 delajo že 20 let z veliko zelo pametnimi inženirji iz različnih podjetij in vedo, kaj delajo. F2FS je, če se prav spomnim, implementiral Samsung. To je precej nov datotečni sistem, tako da je za tako zapletene stvari potreben čas za izboljšanje in ponavljanje, kot ste vi lahko vidijo iz datotečnega sistema Apple, ki je bil pravkar izdan v sistemu iOS, in bodo storili enako za Mac OS. Stvari zahtevajo čas, potrebujete ogromno ekipo, da te stvari naredite pravilno. Sem velik zagovornik »če deluje, se ga ne dotikaj« in tega, kar imamo zdaj -- deluje, in mislim, da vam ne povzroča nobenih težav pri delovanju, zato ne vidim razloga, zapletaj se s tem.
Ah v redu, to je pošteno! Kaj pa o SDCardFS se preklopi iz FUSE? Kakšno bi bilo vaše mnenje o tem?
To se je zgodilo, ker je bil starejši datotečni sistem FUSE ena najhujših stvari, ki so se zgodile v Androidu. Zmogljivost je bila grozljiva, med jedrom in uporabniškim prostorom je bilo veliko sistemskih klicev in zdaj s SDCardFS je vse pravilno. To je običajen datotečni sistem, ki se ukvarja s tem, spet ne poznam posebnosti, saj je to zelo zapletena stvar, toda kar sem brali, videli in slišali iz različnih podcastov skupine za Android, je v bistvu odpravil vse težave s starim sistem. To je bilo zelo grozno, predstava je bila grozna.
Oglejte si 2. del s klikom na ta gumb!