Portál AbcLinuxu, 8. května 2025 13:10
Petr spolupracuje s Linusem Torvaldsem na vývoji nástroje git, který nahrazuje BitKeeper v roli systému správy verzí linuxového jádra. Je autorem sady nadstavbových skriptů Cogito poskytujících uživatelsky přívětivé rozhraní pro git.
Leoš Literák: Mohl by ses našim čtenářům představit?
Petr "Pasky" Baudiš: Mohl. Studuji prvním rokem informatiku na Matematicko-fyzikální fakultě, stále něco programuji a na půl úvazku pracuji jako správce sítě. Dříve jsem spravoval textový webový browser ELinks, patřím mezi sezónní vývojáře OpenTTD, nějaký čas jsem administroval síť poskytovatele IPv6 konektivity XS26 a mám prsty v řadě dalších projektů. Zn.: Rád čtu.
Proč ses rozhodl napsat vlastní verzi Linusových git skriptů?
Protože jsem napsal něco trochu jiného - vlastní skripty nad Linusovým nástrojem jménem "git". git se mi od začátku zalíbil, již dost dlouho jsem totiž plánoval napsat vlastní pořádný verzovací systém a git vypadal jako něco, co jsem dlouho hledal. Sám o sobě je to však poměrně nízkoúrovňový nástroj a jeho ruční používání je poměrně složité a náročné. Jeden z hlavních smyslů existence Cogita je tedy obstarat nějaké lidsky použitelné uživatelské rozhraní, které se navíc možná bude alespoň trochu podobat něčemu, na co už jste zvyklí (a v tom zbytku bude samozřejmě lepší ;-).
Jak se ti spolupracovalo s Linusem?
Nemůžu říci, že špatně, ale úplně jednoduché s ním vyjít občas také není. Jde každopádně o člověka, který velmi dobře ví, co chce od nástroje, který vytváří (a jde si tvrdě za tím), a zároveň má mimořádný (i když určitě ne neomylný) technický instinkt. Dokud tedy leží vaše cíle přibližně stejným směrem jako ty Linusovy, nežije se vám vedle něj špatně ;-).
Jakou vidíš budoucnost git skriptů? Myslíš, že se osamostatní jako další SCM nebo zůstanou jednoúčelovým nástrojem pro vývoj kernelu?
Co se Linuse týče, on git vyvíjel pro kernel, a to je tedy i určující aplikace gitu, podle které je celý zformován. Ten model je ale natolik obecný, že je git velmi dobře použitelný i pro jiné projekty a já Cogito rozhodně neplánuji pouze jako nástroj pro vývoj kernelu. Snažím se ho naopak postupně zobecňovat, a uměl bych si ho představit třeba v projektech typu gcc, i když jsem o tom zatím s nikým z gcc týmu nemluvil a nebál bych se gitu i Cogitu dát ještě chvilku na určité vyzrání - vždyť oba nástroje jsou staré jen několik málo týdnů.
Samozřejmě není důvod Cogito nepoužívat i pro malé "jednomužné" projekty, případně pro katedrálové projekty v komerčním sektoru - nemusíte sice plně využít možnosti Cogita, možnost distribuovaného vývoje se ale hodí v řadě případů, stejně jako podpora pro mergování rozumnější než v CVS (i když za částí konkurence Cogito stále významně pokulhává).
Zaznamenal jsi nějaké zajímavé reakce ze strany zastánců Free Software? Pro ně byl přece BitKeeper vždy trnem v oku a nyní se konečně dočkali GPL nástroje pro správu zdrojáků kernelu.
Zaznamenal jsem jen různé reakce typu "vždyť jsme vám to říkali" (což je ostatně pravda ;-)), v podstatě se potvrdily ty černé scénáře (i když ne v těch nejhorších variantách).
Myslím, že nakonec tato zkušenost bude prospěšná, zejména jako potvrzení faktu, že s komerčními produkty je záhodno manipulovat velmi obezřetně a příliš se jim nesvěřovat - nemusí přitom jít vůbec o technickou stránku a kvalitu implementace (podle toho, co vím, je BitKeeper geniální systém a konkurence se mu teprve v poslední době začíná z velké dáli lopotně přibližovat, a to má před sebou ještě velmi dlouhou cestu).
A co Larry McVoy? Měl nějaké reakce na Cogita?
Zatím žádné, až mne to trochu překvapilo. (Možná je to jen klid před bouří?) Pokud vím, o Gitu někde řekl, že zatím má zhruba tak 5 % funkcionality BitKeeperu, což může být docela dobře pravda - i když v současnosti už Cogito bude mít asi o něco více. Otázka je, kolik mu oproti BitKeeperu chybí funkcionality potřebné pro každodenní použití - asi stále dost, ale není to tak hrozné.
Tím nechci říci, že použití BitKeeperu přineslo kernelu jen problémy, právě naopak. Byla to obrovská pomoc a pokrok ve vývojovém modelu jádra a určitě se to podepsalo i na kvalitě kódu a rychlosti hledaní chyb. Když nic jiného, BK ukázal, jak se to dá také dělat, a jak to pak úžasně funguje, a dal tím myslím velmi významnou motivaci konkurenci, kterou si vývojáři mnoha projektů zvykli poměřovat právě s kvalitami BitKeeperu. Nasadila se tím poměrně vysoká laťka, a to je dobře.
Největším problémem bude udělat pořádné mergování. V tom jsme zatím jen o málo chytřejší než CVS, a nebude jednoduché to nějak radikálně vylepšit. Máme ale nějaké nápady...
Jak se vlastně Cogito liší od CVS? V čem je lepší?
Cogito je postavené na úplně jiném základě než CVS nebo SVN. Samozřejmě je distribuované, to znamená, že celý systém je navržen naprosto jinak. Pokud v Cogitu uděláte ekvivalent checkoutu, získáte kompletní historii a plnohodnotnou kopii celého repository - můžete pak vše dělat lokálně, včetně commitů apod. a volně mergovat s kýmkoliv jiným, kdo udělal to samé. Vůbec to, jak je udělané větvení, nyní již v Cogitu funguje výrazně lépe než v CVS, i když se zde ještě dají čekat významná vylepšení.
Ani se asi nemusím zmiňovat o takových v dnešní době samozřejmostech, jako atomické commity - pokud něco commitnete, zvýší se verze celého projektu, nikoliv jen souborů, které jste změnili. To vám umožní snadno prohlížet historii celého projektu, diffy ukazující, co jste v jednom commitu změnili, apod. To umí dokonce i Subversion ;-).
Plánuješ angažovat se ve vývoji kernelu samotného?
Určitě. Do jisté míry jsem se již angažoval v minulosti, mám v kernelu několik patchů. Kromě nějaké dokumentace a různých dalších drobností jsem přeportoval na 2.6 hostfs (součást User Mode Linuxu) a začal jsem s přepisováním menuconfigu - to bych rád brzy konečně dokončil.
Jinak mám určité oblíbené oblasti kernelu, ale nic, co by mne vyloženě pálilo. Asi je to spíše do značné míry jako s Gitem - občas si všimnu na LKML něčeho, co mě zaujme, a řeknu si "tohle by mě fakt bavilo dělat". Může to být samozřejmě něco úplně jiného než Linux Kernel, ale kernel je v současnosti asi nejpravděpodobnější. Mám samozřejmě rozdělaných i několik dalších projektů, na kterých chci průběžně pracovat...
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.