Poznamka o BitKeeperu svedci o tom, ze autor vubec nepochopil vyvojovy model, ktery BitKeeper (a dalsi _distribuovane_ SCM systemy jako treba GNU Arch) umoznuje. Ano, do _Linusova_ BK repository smi zasahovat pouze Linus sam. Ale pak taky kazdy dalsi vyvojar muze mit svoji repository, do ktere muze zasahovat take jen on sam. A je jeho veci (Linusovou stejne jako ostatnich), jake zmeny si do svych repository natahaji. A SCM system pak zajisti, aby pri preposilani zmen mezi jednotlivymi repositories nedochazelo k dvojitemu aplikovani teze zmeny, pokud se ta zmena do cilove repository uz dostala drive jinymi kanaly.
Pri pouziti CVS nezbude, nez na kazdy trochu vetsi subprojekt udelat vetev a pak ji slozite mergovat. Krome toho potrebujete explicitni pristupova prava do te centralni repository. Navic vas to porad omezuje v tom, abyste do CVS necommitovali jednotlive logicke zmeny, ale az praci za jeden nebo vic dni (aby ostatni vyvojari nevideli polofunkcni stav). Cimz ztracite logy a ztracite provazanost jednotlivych zmen (takze pak nekdo jiny kdo sleduje vasi repository nemuze do sve repository mergovat jen nektere veci, ale vidi vzdy az vasi celodenni praci).
Rozdil mezi vyvojem kernelu Linuxu a vyvojem *BSD (nebo obecne projektu pouzivajicich CVS) je ten, ze Linux je vyvijeny _distribuovane_, zatimco *BSD centralizovane.
Centralizovane CVS vam umoznuje neco si soukrome vyvijet, a pritom sledovat i hlavni vyvoj. Distribuovany system vam dovoli neco si _verejne_ vyvijet, sledovat hlavni vyvoj, a sledovat i to, co si _verejne_ vyviji dalsi uzivatele, aniz by k tomu potrebovali nejaka specialni prava do nejake centralni repository.
Pokud chcete namitnout, ze takove distribuovane vymyslenosti nepotrebujete, pak mate pravdu, distribuovany vyvoj je vyrazne lepsi hlavne u _velikych_ projektu. Docela dobry citat od autora BK, Larryho McVoye: (priblizne, zpameti) "Pokud nechapete, proc potrebujete distribuovany vyvoj, pak ho s velkou pravdepodobnosti nepotrebujete. Ale nesnazte se presvedcovat ty, kteri vedi, jake vyhody distribuovany vyvoj prinasi".
-Yenya
chapu vyhody distribuovaneho vyvoje (bk) ale timco jsem napsal jsem chtel rict ze v pripade ze se linus zblazni pak pujde linux do kytek. fbsd ne... to ze se muzou verze mergovat je fakt... slo mi o pocet commiteru kteri muzou ovlivnovat system - tj. napr. backoutovat zmeny atp.
Pokud by se Linus zblaznil, nic zvlastniho se nestane. Pokud bude nekdo dostatecne dobre ridit svuj vyvoj, stane se jeho vetev tou hlavni (ostatne stabilni vetve stejne ridi jini lide nez Linus a distributori si taky udrzuji dohled nad tim, co maji v distribuci za jadro). O takoveto krizove situaci to neni (to bych zrovna tak mohl namitat ze *BSD bude mit problem, pokud jim FBI zabavi primarni CVS server, nehlede na bezpecnostni aspekty CVS, ktere vyplynuly na povrch v posledni dobe).
V Linuxu muze "ovlivnovat system" kdokoli kdo umi programovat. Samozrejme pomuze pokud se za konkretni zmenu postavi nejaka znama osobnost, ale to je vedlejsi.
I nadale tvrdim, ze *BSD maji obecne daleko vic centralizovany (a tim uzavreny) vyvoj nez Linux.
-Yenya
Distribuovany release se dela proste tak, ze pokud si myslite, ze je Vase prace dostatecne kompletni, zabalite ji a vystavite na FTP (treba ftp://ftp.kernel.org/pub/linux/kernel/people/<vase_jmeno>)
nebo jinak reknete, jak tuhle konkretni verzi muzou ostatni uzivatele ziskat.
Kdyz Linus rekne ne, pochopitelne se do Linusova jadra nedostanete. Kdyz rekne Andrew Morton ne, pochopitelne se do jadra -mm nedostanete. atd.
Vyvoj Linuxu a BSD podle meho neni vubec podobny - ostatne clanek to i popisuje. V Linuxu existuji docela velke projekty (devfs, alsa, ucLinux, atd.) ktere dlouhe roky existovaly samostatne proste proto, ze svym uzivatelum vyhovovaly, a nebyla infrastruktura (nebo i vule ji delat) pro to, aby jejich upravy v centralni casti jadra nemely negativni vliv na "mainstream" uzivatele.
V *BSD se dela "profesionalni" release engineering,
Linux si na nic takoveho nesnazi hrat - je-li treba neco opravit, opravi se to. Pokud sledujete vyvoj jadra Linuxu, tak ona "stabilni" vetev je ciste jen o tom, aby tohle zacali pouzivat uzivatele a tim se zvysila pravdepodobnost zachyceni chyb. Skutecny code freeze je dlouho pred release, ale na druhe strane nektere zmeny se delaji i po release v prubehu cyklu zivota stabilni vetve.
Nekomu se muze libit ta striktnost pravidel v *BSD, nekomu zase to, ze se Linux nenecha takovymi pravidly svazovat, je-li treba neco zmenit.
-Yenya
Podobnost vyvoje vidim v tom, ze mate u Linuxu i FreeBSD jako vyvojar dve moznost:
a) vystavit nekde na sve strance patche (v Linuxu devfs, ve FreeBSD ALTQ, atd.)
b) nebo presvedcit nekoho, kdo to protlaci do oficialniho releasu (RELEASE verze u FreeBSD nebo Linusove release u Linuxu)
Kde je ten rozdil pro vyvojare? Pouze v pripade b) to u FreeBSD znamena presvedcit tym (tj. majoritu) a u Linuxu Linuse. Oboje ma svoje vyhody i nevyhody. Ja uprednostnuji rozhodnuti tymu pred absolutnim vlivem jedince. Kazdy at si vybere, co je mu blizsi.
Rikate sledovat vyvoj jadra. Vidite. Jsem presvedcen, ze tim mate na mysli vyvoj Linusova jadra, nikoli (abstraktniho) "distribuovaneho" jadra se vsemi jeho zdroji, coz neni ani mozne. Jde o centralizovany release zrovna jako u FreeBSD. Jinak to ani neni pochopitelne mozne. Jen ten centralni release se u FreeBSD dela proste jinak nez u Linuxu. A o tom ten clanek byl.
Ano, takto pro vyvojare je to podobne. Jen s tim rozdilem, ze pri SCM zalozenem na changesetech muzete sledovat praci vice nezavislych vyvojaru. Pod pojmem "sledovani vyvoje jadra" nemyslim nic abstraktniho - myslim tim sledovani vyvoje u konkretniho vyvojare (ano, muze to byt Linus nebo akpm nebo kdokoli dalsi).
-Yenya