Hlavní navigace

Způsob vývoje operačního systému FreeBSD

8. 7. 2004
Doba čtení: 3 minuty

Sdílet

Operační systém FreeBSD je přímým pokračovatelem původního UNIXu. Je to volně šiřitelný OS, k němuž jsou k dispozici zdrojové kódy (free software? open-source? pořád si to pletu ;)). To zní podobně jako například u Linuxu (který je rovněž volně šiřitelný a zdrojové kódy jsou též k dispozici), nicméně tyto dva OS se nesmírně liší ve způsobu, jakým je systém vyvíjen.

FreeBSD je ucelený systém, kde jeden tým vyvíjí jak jádro, tak knihovnu libc a vlastně celý systém včetně různých utilitek atd. Systém jako takový je vyvíjen za pomoci systému na správu verzí CVS (více viz paskyho články tady na ROOTu). Tento systém je velmi starý a trpí mnohými neduhy, nicméně je nutno uznat, že je pořád výrazně lepší než ono příslovečné „nic“. Existují čtyři CVS úložiště – systém, porty, dokumentace a projekty. Celkem má do těchto úložišť přístup odhadem asi 300 vývojářů (srovnej s Linuxem, kde do bitkeeper repa může Linus, jsem-li obeznámen se situací). Jelikož je CVS doopravdy kapku obstarožní a např. větvení je v něm dost pomalé, je k dispozici ještě Perforce repository, kde probíhá ten nejaktuálnější vývoj (momentálně např. Watsonova netperf-branch). Perforce je komerční a FreeBSD ma zaplacenu licenci pro každého commitera. Ovšem p4 je trošku neoficiální a vše důležité z něj se commituje do CVS.

Samotný vývoj na úrovni CVS se dá rozdělit do dvou hlavních větví: CURRENT (. v CVS) a STABLE (ta se časem mění). Z těchto větví se časem oddělují další větve (RELENG4_10 atd.), popř. se tagují (co se pak hodí na CDčko – RELENG4_10_RE­LEASE např.). Veškeré commity do větví RELENG_X_Y se (až do nedávna) týkaly pouze oprav bezpečnostních chyb. Číslování verzí FreeBSD funguje tak, že hlavní číslo určuje major revizi. Tyto mezi sebou nemusí být nutně kompatibilní (ovšem existují compatXx zajišťující kompatibilitu pro veškeré předchozí verze, platí tedy, a je to jedna z ctností FreeBSD, že je možno spustit soft přeložený na libovolně starém FreeBSD), dále následuje minor číslo. Verze FreeBSD se stejným major číslem, ale různým minor, se liší v podstatě jen opravami chyb (a to jak ovlivňujících stabilitu, tak bezpečnost), popř. v nových driverech a minoritních updatech dalších částí systému (sendmailu třeba). Poté může následovat ještě třetí číslo (5.2.1), které značí, že byl nalezen závažný problém, který byl opraven, ale jiné změny nejsou. Momentálně jsou v produkci dvě řady – 4.x a 5.x, čtyřková řada je tvořena ze STABLE CVS větve, pětková z CURRENT. Během tohoto léta by snad (už konečně) měla být uvedena nová verze STABLE (z dnešní CURRENT). Mělo by to nastat ve verzi 5.3. Můj soukromý (ničím nepodložený) odhad je, že by release proces mohl začít do měsíce, nejpozději do konce července.

Samotní commiteři se dělí do několika skupin. Jednak je zde „core team“, který tvoří hlavní jádro. To je demokraticky voleno a skládá se ze zkušených vývojářů, kteří prokázali své schopnosti i osobnostní kvality. S tímto týmem by měly být diskutovány veškeré velké změny (jako např. teď diskutované odstranění subsystému zajišťujícího kompatibilitu s SVr4 a SCO UNIXem). Poté je zde „re team“, který má na starosti release jednotlivých verzí. Každá další podoblast má svůj ústřední tým (dokumentace, porty). Dokonce je zde i silný důraz (byť nevím, zda je nějak formalizován) na stylistickou čistotu kódu (mezery, prázdné řádky atd.) reprezentovaný Brucem Evansem (ano, TEN Bruce Evans).

root_podpora

Relativně nedávno nastala zajímavá změna, kdy se RELENG_X_Y větve přestaly nazývat „Security branch“ a zacal se používat název „Errata branch“. Tato syntaktická změna měla i svůj sémantický rozměr. Předtím se veškeré změny v těchto větvích týkaly pouze bezpečnostních problémů. Nyní budou (jsou) commitovány i změny týkající se závažných problémů ovlivňujících stabilitu. První „Errata branch“ je FreeBSD 4.10 (RELENG4_10) a prvním commitem takovéto změny je oprava driveru „twe“.

Vývoj operačního systému FreeBSD je velmi dobře organizován a tato organizace mu umožňuje velmi rychlý a dynamický vývoj bez zbytečných kroků vedle (typická situace, kdy uděláme subsystém, řekněme VM, pak ho přepíšeme, pak znova, pak ještě jednou, poté třeba ještě, a aby toho nebylo málo, tak ještě jednou – nenarážím na žádný konkrétní OS :)) a dokonce zajišťuje i jakési vodítko ve smyslu časového harmonogramu vydávání nových verzí. Systém vývoje FreeBSD (resp. výhody, které z něj plynou) je jednou z věcí, kvůli kterým tento (i jinak velmi kvalitní) systém používám.

Byl pro vás článek přínosný?