Novinky v Gentoo
Na Gentoo tracku na letošním InstallFestu jste mluvili o novinkách v Gentoo. Co je tedy nového?
Z uživatelského hlediska je zajímavé nové EAPI a v něm to, že se balíčky samy překompilují, pokud se změní jejich reverzní závislosti. Takže když se aktualizuje knihovna, samo to pozná, které všechny balíčky je potřeba rekompilovat. Už nebude třeba řešit žádné revdep-rebuild a preserved-rebuild.
V této situaci to znamená, že jak knihovny, tak balíčky, které je využívají, musí být aktualizovány na nové EAPI, aby této vlastnosti dokázaly využít. Patche jsou sice triviální, ale někdo tu práci musí udělat. Takže můj odhad je, že než se zbavíme revdep-rebuild, bude to trvat jeden až dva roky. Alespoň už máme kompletní koncept a implementaci, což je velký krok kupředu.
Proč jste se včera snažili přesvědčit lidi, aby používali stable?
Velmi často se používá mix větví testing a stable, což není zrovna nejstabilnější. Navíc uživatelé nechtějí vyplňovat bugreporty pro převod otestovaných balíčků do stable. Takže uvažujeme, že celý proces zautomatizujeme. Nějaký automat by pak jednou za čas prosvištěl celý strom a oznámil by, které balíčky jsou v testing větvi déle než třeba třicet dní, nemají žádné nové bugy a je možné přezkoumat jejich přesun. Ušetřila by se tím třetina bugů v BugZille.
Ten systém ale asi neprojde, protože nikdo nechce napsat webapp. Probíral jsem to s infra týmem, ale někteří vývojáři mají skripty, které procházejí Bugzillu a otevírají stable requesty na balíčcích, které jsou dlouho v portage a nemají žádné otevřené problémy. U ostatních je to stále na uživatelích a ti by opravdu měli otevírat requesty podle toho, jak moc chtějí dané balíčky používat. Pokud si ten request otevřou, existuje šance, že se před stabilizací opraví další bugy a bude z toho mít výhody více lidí.
Kdo je Tomáš ‚Scarabeus‘ Chvátal?
Tomáš Chvátal studoval informatiku na České zemědělské univerzitě v Praze a pracoval v soukromém výzkumném ústavu České centrum pro vědu a společnost. Nyní ale pracuje v SUSE jako QA maintainer. Zároveň působí jako vývojář Gentoo a je také členem Gentoo councilu – nejvyššího orgánu v projektu.
Vím, že se tady řešilo i velké zavírání bugů.
Ano, já jsem s lidmi zavíral staré bugy z roku 2006 a 2007. Na některé z nich se velmi dlouho nesáhlo a jsou zbytečné, takže se zavírají jako „invalid“. Jedná se o velké čistění Bugzilly, protože máme spoustu starých věcí jako „přidejte prosím balíček abc“, který už ale není čtyři roky vyvíjen. Potom je tam taky spousta bugů, které byly opraveny, ale nikdo nezavřel daný report, protože si ho vývojář nevšiml a podobně.
Proč je pořád v Gentoo problém s Gnome 3?
Gnome 3 nemáme ve stable a jeho vývojáři se pořád netváří, že by ho chtěli nějak stabilizovat. Mají otevřených 800 bugů, což je hrozné číslo, pokud si ho porovnáte s KDE týmem, který má otevřených 170 bugů. V Gnome je hromada problémů se Shellem, často nefunguje fallback režim a podobně. Je tam toho hodně rozbitého.
Na druhou stranu je třeba říct, že existuje šance, že v těch bugreportech je zahrnuto jak Gnome 2, tak Gnome 3, a tedy by jich bylo třeba o 200 méně, pokud by se odebralo Gnome 2. Další spousta problémů se týká specifického nasazení, kdy uživatelé na Gentoo můžou používat Gnome 3 tak, jak by si to asi upstream nikdy nepředstavoval. Třeba kombinovat balíčky, různě si nastavovat useflagy a podobně.
Naštěstí existuje řada alternativ, existují balíčky s Cinnamon a někdo dokonce vytvořil ebuild pro Unity, takže na Gentoo je možné použít i nativní prostředí z Ubuntu včetně integrace s LibreOffice (smích).
Co nová projektová Wiki?
To je největší změna, na kterou se letos chystáme. Už máme novou wiki na wiki.gentoo.org, která nahradí tu neoficiální na gentoo-wiki.com. Trochu nás trápilo to, že nám autor té původní odmítl umožnit převzetí článků. Máme totiž nekompatibilní licence a on na svém webu vydělává na reklamě.
Ale naštěstí se nám daří vytvářet hodně vlastního obsahu, řekl bych že v nové Wiki už je víc článků než v té staré. Pořádají se pravidelné „sprinty“, které se zaměřují na konkrétní oblast a přitom se píše dokumentace. Stejně tak se daří převádět XML dokumentaci, kterou máme na webu. Uživatelé jsou už na Wiki zvyklí a pracuje se s nimi lépe.
Novinky v projektu
Minule jste na konferenci mluvili o tom, že vám nepřibývají vývojáři. Platí to pořád?
Platí, že nepřibývají mladí vývojáři. Základnu vždycky tvořili studenti, ale těch už se moc nehlásí. My stárneme, už někde pracujeme a rádi bychom do týmů získali nějaké mladé lidi. Naopak se nám ale začali hlásit lidé z firem, že by rádi na Gentoo pracovali. Není jich ale tolik.
Problém mnohých distribucí totiž je, že až na Ubuntu, Mint a podobné jim moc nepřibývá uživatelů. Pokud tedy nemáme zmizet do /dev/null, měli bychom alespoň trochu růst, aby nám zůstal stejný podíl na trhu. Což se bohužel neděje.
Takže se zapojují do vývoje firmy?
Ne firmy, ale jednotlivci z firem. Napíšou nám, že Gentoo někde používají a rádi by přispěli do jeho vývoje. Nemusí se stát nutně přímo vývojáři, ale mohou dostat práva do BugZilly, řešit bugy a podobně. My pak máme proxy commiters, kteří nové ebuildy zařazují do stromu. Případný průšvih jde ale na autorovu hlavu, commiter jen vše zkontroluje po formální stránce, ale už nezkoumá všechny úpravy.
V čem budou spočívat změny ve správě serverů projektu?
Přecházíme na nástroj Puppet, který umožňuje rychle nasazovat a spravovat velké množství serverů. Gentoo jich má po světě asi 50 po celém světě a musíme mít nástroj pro rychlou migraci. Často se nám totiž mění různí sponzoři a už se nám stalo, že nám někdo řekl, že musíme do druhého dne přesunout pět serverů jinam.
Teď máme vlastní Puppet handler pro Gentoo, který píše Theo Chatzimichos. Ten nám umožňuje na jednom místě nastavit změnu na všech serverech a při příští replikaci všechno proběhne samo: instalace balíčků, konfigurace, spuštění nových služeb. Vlastně už vůbec nebudeme muset na SSH.
Jsi stále členem Gentoo Councilu, chystají se tam nějaké změny?
Řešíme teď třeba to, že Gentoo Foundation nám nemůže dávat peníze. Projekt tedy nemůže podle aktuální situace tady v Česku podporovat třeba konference. Snažili jsme se dostat nějaké peníze na LinuxDays, ale pak se to ukázalo jako neuvěřitelně komplikovaná věc. Někdo ze Států by sem musel zaletět, měl by právo disponovat penězi, všechny účty by se musely posílat k nim a podobně. Raději jsme od toho ustoupili.
Chystáte tedy nějakou změnu, která by to měla zjednodušit?
Ano. Většina peněz teď jde na nákup nových serverů. To je dobře, protože třeba teď dostaneme hromadu nových mašin, které budou k dispozici vývojářům a budou dostupné jen po IPv6. Kromě toho ale potřebujeme někdy třeba peníze na letenky a další výdaje.
Ty peníze pocházejí od sponzorů? Nasbíralo se to po pěti dolarech?
Něco je od těchto drobných přispěvatelů, ale většina je od firem. Často se nám ozývají firmy, že by nám rády daly pro naše účely k dispozici nějaké servery. Problém je, že my máme hodně specifické požadavky a potřebujeme třeba plnou kontrolu. Většina takových nabídek pro nás proto není vhodná, takže jim raději nabídneme možnost finančního sponzorství. Ovšem platí, že našim největším podporovatelem je stále Oregonská univerzita. Tam nám běží také nejvíce serverů.
Vylepšení, která by mohla být
Pracuje se třeba na urychlení řešení závislostí při instalaci balíčku?
Solver, který používáme, je hrozně komplexní a je napsaný v Pythonu. Vznikl v roce 2002 a od té doby se to na něm „bastlí“, protože komplexní přepis ještě není hotový. Jmenuje se Pkgcore a je v portage, můžete si ho vyzkoušet. Ale Brian pracuje v Google a má na vývoj Gentoo čím dál méně času.
Problém portage je, že je příliš komplexní a i když se jeho správci snaží, příliš se jeho rychlost nelepší. My naopak přidáváme další věci do grafu, jako třeba přestavbu reverzních závislostí, a tím se portage zase zpomalí.
A zrychluje to předkompilační přípravu nějak výrazně?
Pkgcore je strašně rychlý, ale nemá ještě všechny vlastnosti. Například nemá nové EAPI, protože ho Brian ještě nenaimplementoval. Máme strašně málo lidí na tyhle core věci, nemá je kdo dělat. Naopak hodně lidí třeba dělá balíčky, což je fajn. Máme teď asi 250 balíčkářů, a to je hodně. Z toho asi 60 jich dělá velké změny a hodně přispívá.
Zapojujete se do Google Summer of Code. Jaké s ním máte zkušenosti?
Gentoo má vždycky v GSoC poměrně hodně projektů. Ale co jsem se na ně díval, většinou nejsou nijak zásadní. Google to dělá spíš proto, aby přilákal lidi k vývoji open source, ale výsledky samotného Summer of Code nebývají nijak ohromující. Většina výstupů se stejně po čase výrazně předělá, aby fungovaly v reálném nasazení. Trochu paradoxní je i to, že mentor, který studenta vede, by jeho práci sám zvládl dokončit za poloviční čas a mnohem lépe. Ale cílem je začlenit do projektu nové lidi, a to funguje.
V jakém stavu je vylepšení podpory binárních balíčků?
Binární balíček si můžete běžně udělat, ale ten bude na jiném stroji požadovat všechny závislosti, které měl na tom prvním. Přál bych si implementaci generování binárních balíčků podle USE flagů a možnost jejich stažení. Ten by obsahoval seznam souborů, které jsou potřeba třeba pro běh serverové a klientské části a mohli byste nainstalovat a používat jen jednu z nich. Nyní se při změně useflagů předělá i binární balíček, takže je potřeba to nějak oddělit, aby to nekolidovalo. Snad to bude součástí EAPI 6.
Kde konkrétně se takové rozdělení využije?
Na spoustě míst, kde není možné balíček rozdělit, ale uživatel přesto požaduje třeba jen část jeho funkčnosti. Krásným příkladem může být LibreOffice. Dnes je to jeden binární balíček a máte buď všechny jeho součásti nebo žádné. V budoucnu bude možné si nainstalovat třeba jen Writer, jen Calc a podobně. Ale to je jen příklad, možností využití bude spousta.
Jak to v Gentoo vypadá s podepisováním balíčků? Pracuje se na něm?
Většina věcí je hotová a na místě, ale čeká se na migraci na Git, aby se to mohlo naplno zapnout. Na Council meetingu na přelomu roku se probíralo, že podepisování balíčků bude povinné a tak se i stalo. Každý nový commit do Gentoo je podepsaný, ale část s verifikací čeká na infra tým a migraci na Git.
Co Gentoo a nově nastupující platformy, třeba ARM?
ARM byl podporovaný vždycky. Třeba Chromebook běží na Gentoo. Google vzal v roce 2009 snapshot Gentoo a od té doby na něm vyvíjí Chrome OS. Několik důležitých vývojářů Gentoo pracuje v Google právě na Chrome OS. Netuším ale, jakou mají politiku s vracením patchů zpět do Gentoo, co je jejich osobní práce a co dělají v pracovním čase.
Hlavními platformami pro Gentoo jsou v současné době AMD64, upadající x86 a ARM. Máme taky celkem překvapivě hodně lidí na Mipsu. Mým snem by bylo zabití některých starých architektur jako Alpha a SH, protože akorát zdržují vývoj. Je to velmi neefektivní, vzhledem k tomu, pro kolik lidí se to nakonec dělá.
Děkuji za rozhovor.