Ten wpis jest dedykowany tym wszystkim, kt贸rzy chcieliby zrozumie膰 czym jest “wydanie” produktu w 艣wiecie wolnego oprogramowania i czym r贸偶ni si臋 ono od tradycyjnego modelu.
Aby zrozumie膰 w ca艂o艣ci model naszego post臋powania, i jego przyczyny, warto przeczyta膰聽 esej Katedra i Bazar Erica S. Raymonda, ale w telegraficznym skr贸cie chodzi o zasad臋 “wydawaj wcze艣nie, wydawaj cz臋sto“(ang. release early, release often).
Om贸wi臋 teraz efekt zastosowania tej zasady na model wydawniczy na przyk艂adzie Mozilli Corp. i przegl膮darki Firefox.
W efekcie zastosowania modelu bazarowego, otwartego, nasze 藕r贸d艂a s膮 zawsze dost臋pne. Rozw贸j aplikacji opiera si臋 na narz臋dziu zarz膮dzania wersjami. To znaczy, 偶e jest katalog, a w nim kod 藕r贸d艂owy aplikacji. Ka偶dy na 艣wiecie ma do tego dost臋p. Ma to ogromne implikacje w rozumieniu ideologii Wolnego Oprogramowania, gdy偶 gwarantuje u偶ytkownikowi cztery fundamentalne prawa, co jest jednak tematem na osobny tekst. Na razie skupmy si臋 na tym, 偶e kod 藕r贸d艂owy ma sw贸j numer.
W danym momencie jest to wersja, dajmy na to, 1 (pierwsza). W momencie gdy ktokolwiek, kt贸rykolwiek programista dokona jakiejkolwiek zmiany w kodzie 藕r贸d艂owym zmieniana jest wersja. Wersja kodu bez tej zmiany to wersja 1, a z t膮 zmiana to wersja 2. Ka偶da nast臋pna wersja b臋dzie nosi艂a nast臋pny numer.
Drugim wa偶nym elementem pozwalaj膮cym zrozumie膰 jak dzia艂a system wyda艅 w wolnym oprogramowaniu jest kwestia linii rozwoju kodu.聽 Dwa podstawowe poj臋cia zwi膮zane s膮 z analogi膮 drzewa – to pie艅 (trunk) i ga艂臋zie (branches). Pie艅 to g艂贸wna linia rozwoju kodu, tam wchodz膮 wszystkie zmiany i z niego od艂膮czaj膮 si臋 ga艂臋zie. Sp贸jrzmy na obrazek:
To co widzimy na dole to w艂a艣nie “trunk”. Linia g艂贸wna. Z niej od艂膮czane s膮 co pewien czas i numerowane, ga艂臋zie stabilne. 1.7 (na nim bazowa艂 Firefox 1.0), potem 1.8 (na nim bazowa艂 Firefox 1.5 i Firefox 2.0), 1.9 (na nim b臋dzie bazowa艂 Firefox 3.0) i nast臋pna b臋dzie linia 2.0 (na niej b臋dzie bazowa艂 Firefox 4.0).
Od艂膮czenie ga艂臋zi polega na wzi臋ciu kodu z danego momentu w trunku i stworzeniu osobnej linii od tego momentu nazwanej ga艂臋zi膮. Zmiany w ga艂臋zi nast臋puj膮 rzadziej, dotycz膮 tylko kwesti zwi膮zanych z wydaniem danej wersji, s膮 mniej eksperymentalne i maj膮 na celu stabilizacje i przygotowanie wydania. W tym czasie w ga艂臋zi g艂贸wnej (trunk) mog膮 pojawia膰 si臋 zmiany eksperymentalne, i inne nowo艣ci, kt贸re kiedy艣 stworz膮 nast臋pne wydanie.
Krytycznie wa偶ne jest to, 偶e nasze systemy automatyzacji co kilka godzin kompiluj膮 i umieszczaj膮 na serwerze tzw. nightly builds dzi臋ki czemu mo偶na w ka偶dej chwili pobra膰 i zobaczy膰 jak dzia艂a aktualna wersja ze 藕r贸de艂 sprzed godziny.Jak wida膰 dla ka偶dej ga艂臋zi tworzone s膮 osobne buildy.
Tak偶e wszystkie informacje na temat tego co planujemy dla Firefoksa 3 i silnika Gecko 1.9 s膮 publicznie dost臋pne, wszystkie zmiany jakie nast膮pi艂y, na przyk艂ad,聽 w ci膮gu ostatniego dnia mo偶na 艣ledzi膰, a wszystkie zadania mo偶na przegl膮da膰 (tu na przyk艂ad zmiany blokuj膮ce wydanie Gecko 1.9).
Co to oznacza w zderzeniu z mediami? Problemy. Dziennikarze przyzwyczajeni, 偶e znalezienie czego艣 na serwerze oznacza wyciek wydania, przeszukuj膮 nasze serwery FTP, aby pochwali膰 si臋 odnalezieniem na nich czego艣, a potem z stwierdzaj膮, 偶e znikn臋艂o. W kontek艣cie tego co pisa艂em powy偶ej powinno by膰 to jasne, 偶e na naszych serwerach s膮 setki tzw. “kompilacji” robionych r贸偶nych ga艂臋zi, kt贸re ka偶dy mo偶e pobra膰 i przetestowa膰. Jednak tylko niekt贸re z nich s膮 wydaniami. Czym艣 co jest kierowane do odbiorc贸w. I do medi贸w.
W kwestii wyda艅 nie r贸偶nimy si臋 w politce od innych firm. W momencie wydania piszemy o tym na serwisach informacyjnych typu DevNews, blogujemy, wysy艂amy informacje do prasy, a samo wydanie l膮duje w specjalnym katalogu o nazwie “releases” na serwerze.
Problem polega na tym, 偶e dziennikarze przywyczajeni do tradycyjnego modelu, 艂api膮 co tylko znajd膮 na serwerze, linkuj膮 do tego i og艂aszaj膮 to jako wydanie, myl膮c tym samym u偶ytkownik贸w i potencjalnie nara偶aj膮c ich na niebezpiecze艅stwo. Kiedy? Ano za艂贸偶my, 偶e tzw. wersja nocna na 2 dni przed wydaniem zawiera b艂膮d, kt贸ry podczas test贸w jako艣ci uda nam si臋 wy艂apa膰 i poprawi膰 przed wydaniem. Je艣li dziennikarze zach臋cili ludzi do pobrania wersji bez poprawki, stworzyli (gwarantuj膮c w艂asnym autorytetem) iluzj臋, 偶e dana osoba pobra艂a co艣 o jako艣ci “wydania produktu Mozilli”. Tymczasem my艣my nic nie wydali, dziennikarz wprowadzi艂 odbiorc贸w w b艂膮d.
Drugim przyk艂adem z ostatnich dni jest og艂oszenie wydania Firefoksa 4.0 alpha 1pre聽 przez innego dziennikarza skanuj膮cego nasze serwery. Na dodatek聽 贸w dziennikarz napracowa艂 si臋, aby przetestowa膰 osobno wydajno艣膰 tego z ostatni膮 bet膮 Firefoksa 3 i por贸wna膰 je.
Co dok艂adnie definiuje czy mamy doczynienia z Fx3.0beta3 czy Fx4.0alpha1? W katalogu browser/config istnieje plik version.txt, kt贸ry zawiera jedn膮 lini臋 tekstu b臋d膮c膮 numerem wydania.Je艣li spojrzymy w histori臋 tego pliku, zobaczymy, 偶e zawsze tu偶 po wydaniu, albo tu偶 po od艂膮czeniu ga艂臋zi jest ona podbijana do nast臋pnego numeru. Kilka godzin p贸藕niej pojawiaj膮 si臋 pierwsze nocne kompilacje z tym numerkiem, ale nie oznacza to wydania, prawda?
Zatem w przypadku por贸wnywania dw贸ch nocnych kompilacji mo偶emy mie膰 doczynienia z czym艣 takim:
聽 G贸rne k贸艂ko oznacza wydanie z nowo utworzonej ga艂臋zi 1.9 z kt贸rej wyjdzie Firefox 3. Dolne to wydanie z tego samego dnia, ale z ga艂臋zi g艂贸wnej z kt贸rej kiedy艣 powstanie ga艂膮藕 2.0 i Firefox 4. Oba s膮 z tego samego dnia. Jak du偶o zmian mog艂o si臋 tam pojawi膰? Kilka… w tym ta kt贸ra podnios艂a numerek w pliku version.txt do 4.0a1pre. Czy jest sens por贸wnywa膰 je dzi艣? Nie bardzo. W ci膮gu najbli偶szych miesi臋cy najpierw skupimy si臋 na wydaniu Firefoksa 3, a potem zaczniemy prace nad powa偶nymi zmianami w g艂贸wnej linii na drodze do Mozilli 2.0 i Firefoksa 4.
Wydanie Firefoksa 4.0alpha1 nast膮pi nie wcze艣niej ni偶 za p贸艂 roku. Co prawda trwaj膮 ju偶 eksperymentalne prace nad platform膮 Mozilla 2.0,聽 ale s膮 one jeszcze w bardzo wczesnym stadium.
Nie istnieje 偶adne wydanie, kt贸re nie znajduje si臋 w katalogu releases,聽 o kt贸rym nie napisali艣my na DevNews, i o kt贸rym nie poinformowali艣my dziennikarzy. Pisanie o takich wydaniach jest zwyczajnym wprowadzaniem u偶ytkownik贸w w b艂膮d, nara偶aniem ich na u偶ywanie wersji nie certyfikowanej przez Mozill臋 jako艣ciowo i nara偶anie wizerunku Mozilli na szwank w przypadku, gdyby takie niestabilne wydanie “polecone” przez dziennikarzy okaza艂o si臋 wadliwe.
Chc膮c pisa膰 o wolnym oprogramowaniu trzeba to wiedzie膰. Bo nie tylko my tak robimy, mo偶na pobra膰 codzienne kompilacje Ubuntu,聽 KDE, WordPressa, WebKita, NetBeans, VLC i wielu innych.
Drodzy dziennikarze. Dzi臋kujemy Wam za zainteresowanie naszymi pracami. Jeste艣cie dla nas wspania艂ymi partnerami i sprawiedliwymi krytkami, cenimy wsp贸艂prac臋 z Wami i staramy si臋 da膰 Wam to czego potrzebujecie. Wasze zainteresowanie zbli偶aj膮cym si臋 Firefoksem 3 odbieramy z dum膮 i traktujemy jako dow贸d, 偶e robimy co艣 wa偶nego.
Jednocze艣nie prosimy, zrozumcie nas. Nasz model rozwoju jest taki a nie inny z bardzo konkretnych powod贸w. Pragmatycznych. Wierzymy, 偶e udost臋pnianie codziennych kompilacji pomaga naszej spo艂eczno艣ci testowa膰 i wsp贸艂pracowa膰 z nami. Jeste艣my do b贸lu otwarci, mo偶ecie zajrze膰 wsz臋dzie, obejrze膰 stan prac nad dowolnym zadaniem, przeczyta膰 o wszystkich planach, uczestniczy膰 w naszych cotygodniowych konferencjach telefonicznych na temat Firefoksa 3 i Gecko 1.9, do kt贸rych do艂膮czy膰 mo偶e ka偶dy. Piszemy blogi, jeste艣my dost臋pni na IRCu.
Je艣li b臋dziecie obni偶a膰 bezpiecze艅stwo naszych u偶ytkownik贸w i myli膰 ich, jedyne co mo偶emy zrobi膰 aby si臋 broni膰, to zmniejszy膰 stopie艅 naszej przejrzysto艣ci. Zacz膮膰 chowa膰 si臋 z tym co robimy, aby unika膰 chaosu. Przecie偶 nikt tego nie chce, prawda?