Ruby 1.9.0 - zpackané vydání?

RubyPři psaní tohoto článku jsem vycházel z chybných předpokladů o Ruby 1.9 a kritika, která je v článku obsažená, není z části oprávněná. Více informací najdete v upřesňujícím dodatku.

Během letošních Vánoc vyšlo Ruby 1.9.0 – nová "velká" verze jazyka Ruby. Vydání bylo dlouho očekáváno, jelikož současná řada Ruby 1.8 je na světě už poměrně dlouho (Ruby 1.8.0 vyšlo v srpnu 2003) a trpí nezanedbatelnými problémy – především pomalostí a absencí podpory Unicode. Obojí mělo Ruby 1.9 vyřešit.

Dlouhé měsíce před vydáním panoval zmatek v tom, co vlastně Ruby 1.9 bude obsahovat a co bude obsahovat až následující verze 2.0. Jisté bylo jen to, že na rozdíl od předchozích "lichých" verzí měla být verze 1.9 stabilní – což si většina lidí překládala jako "použitelná v produkčním prostředí". Matz (tvůrce Ruby) také vytrvale prohlašoval, že nové Ruby 1.9 bude hotové během letošních Vánoc.

Mailing list

Protože se o vývoj Ruby zajímám, přihlásil jsem se koncem září do vývojářského mailing listu Ruby. Tři měsíce před vydáním jsem čekal spíše stabilizační fázi – diskuze nad zbývajícími bugy, problémy s kompatibilitou, psaním testů a dokumentace... Omyl. Řešily se velké problémy jako "budeme mít nástroj Rake přímo v Ruby nebo bude nadále externí?", dotahovala se podpora Unicode a doplňovala nová funkcionalita. Živelný vývoj. Ale budiž, ještě je na vše čas.

Mailing list jsem pak nestíhal sledovat a vrátil jsem se k němu až v druhé polovině prosince. Se zděšením jsem sledoval, že překotný vývoj stále pokračuje a žádná stabilizace se nekoná. Nic nenasvědčovalo tomu, že by se měla vydávat stabilní verze.

A přece vydáváme!

A pak přišel Matzův mail, oznamující, že nové Ruby bude opravdu vydáno v ohlášeném termínu. Tři odstavce z něj mě šokovaly:

  * The relase version will be 1.9.0, not 1.9.1 as we have
    announced before.  This denotes the fact it is not as
    stable as we expected.  But the all incompatible changes
    are done already.

  * There already are some known bugs.  The relase note will
    include the number of failed tests from standard "make test" 
    and "make test-all".

  * THE 1.9 IS INCOMPATIBLE.  YOUR APPLICATION MAY NOT WORK AS IT IS.
    The porting know-how (or porting tools maybe) will not provided as
    of the first release.

Číslo verze 1.9.0 by mělo navozovat pocit nestability? To myslí vážně, vydávat verzi, ve které ani neproběhnou správně všechny standardní testy? A co prohlášení, že nová verze je nekompatibilní se starou, ale ani se nenamáháme vám uživatelům říct, v čem? Kde to jsme?

V mailing listu se tou dobou objevovala řada oznámení o chybách, kompilačních problémech, pádech interpreteru, apod. – některé z problémů byly na poslední chvíli zazáplatovány, některé zůstaly. Doslova v hodině dvanácté pak byla vyměněna poměrně důležitá knihovna csv.rb za fastcsv.rb!

Pár hodin poté bylo Ruby 1.9.0 vydáno. Bez jakékoliv fáze feature freeze. Bez jakéhokoliv většího testování. Bez samostatné vývojové větve, přímo z hlavního stromu. Zato s popřením všech zásad softwarového inženýrství, které se týkají vydávání nových verzí "platformotvorného" softwaru. Na webu bylo Ruby 1.9.0 pro zvýšení zmatku (nebo snad proto, že autoři jsou si vědomi, jak verze vznikala) označeno jako "development release". Přesné vysvětlení, co to vlastně znamená, nebo snad nějaké poznámky k vydání ale nikde nejsou.

První problémy

"Ruby 1.9 bude naprostý průšvih", říkal jsem si, když jsem viděl výše popsaný styl vývoje. A zdá se, že opravdu je – začínají se objevovat problémy.

Prvním problémem je, že řada gemů má špatně vyplněnou hlavičku required_ruby_version, kontrolující požadovanou verzi Ruby a ač jsou s Ruby 1.9 nekompatibilní, tvrdí o sobě opak. Na vině jsou jednak autoři gemů, ale také autoři nástroje samotného, kteří nastavili nevhodnou defaultní hodnotu. Dotlačit autory všech postižených gemů k nápravě je nadlidský úkol a výsledný zmatek odnesou samozřejmě uživatelé.

O dalších problémech píše Sam Ruby. Nelíbí se mu způsob, jakým je realizována podpora Unicode v Ruby 1.9 a naráží na konkrétní chyby. Poukazuje také na příklad, kdy jedna ze standardních knihoven Ruby (REXML) nebyla upravena pro novou verzi jazyka – produkuje nevhodný výstup a emituje warningy. To je ve světě zodpovědných vývojářů důvod zablokovat vydání.

Takovou drobnost, že v novém Ruby nejedou Rails, killer-app celého jazyka, snad raději nezmiňovat.

Závěr

Dosud jsem si na základě mnoha hodin strávených koukáním do zdrojáků Ruby myslel, že Matz není moc dobrý programátor (zdrojáky Ruby jsou strašné). Nyní k tomu přidávám, že z toho, co jsem viděl, není ani dobrý vedoucí projektu – není s to zavést do procesu vydání nové verze trochu disciplíny a zajistit, aby vnější svět neměl s přijetím nové verze problém. Přitom by stačilo být důsledný, vydat před finální verzí alespoň jednu betaverzi (aby se včas přišlo na problémy s "kódem tam venku") a na webu připravit více informací pro uživatele jazyka.

Myslím si, že Ruby 1.9.0 je zpackané vydání, celkově zklame očekávání v něj vkládaná a v blízké budoucnosti se objeví další problémy, které budou muset být řešeny. Obávám se, že vydat takovouhle novou verzi Ruby tomuto jazyku spíš uškodilo, než pomohlo. Bohužel.

Dec 29, 2007 – 19:22

Comments

zoul
Ani v nejmenším nechci rubystům strouhat mrkvičku, ale přesně tohle je jeden z argumentů pro některou z lépe zavedených technologií, například Perl. (Čímž neříkám, že je Perl lepší – je to zkrátka jen jeden z argumentů.)
Uf
Uf
Fakt krypl ten větnamec. Nevim, myslíte, že je dobrý krok zpět pro vývoj jazyka?
dvth
dvth
Jo, to mi pripomina stary dobry casy prekotneho vyvoje kernelu (you know, "Release Early, Release Often") .. stejne ten jazyk miluju; vsak oni se z toho zas vyhrabou :)
jan
jan
No ja bych nehazel hned flintu do zita, porad je tu najedne zelizko v ohni v podobe projektu Rubinius, na kterem ted pracuje pet lidi full-time..
David Majda
[6] Však flintu do žita neházím :-) A popravdě řečeno doufám, že Rubinius se chytí a v horizontu několika málo let převezme od MRI žezlo vedoucí implementace Ruby.

[7] Ano, dneska je 1.9 označena za nestabilní. Problém je, že třeba ještě v říjnu Matz tvrdil, že doufá, že bude stabilní (http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/12385). Ne každý má čas sledovat posuny v Matzových názorech na to, jaké Ruby 1.9 bude.

Chybou je i číslo verze, které indikuje stabilitu. Něco jako "2.0 Development Snapshot 1" by bylo mnohem vhodnější a nepřineslo by to tolik zmatků.
Vlada
Vlada
Ja jsem mel vzdycky spis pocit, ze ten japonec je pohodar, nez krypl. Ruby 1.8.x krome pomalosti neni nijak spatne ( to mnohokrat tvrdil Matz a rekl bych, ze Vam to potvrdi kazdy ), bohuzel tlak produkcniho prostredi zrejme prinutil vyvojare zpanikarit. Tech duvodu bude jeste urcite trochu vic. Napriklad Matzova zamitava stanoviska k mnoha RCR mu urcite sebrala pudu pod nohama. Tzn puvodni nejasnosti nad budoucnosti typu: Co bude vubec nekdy v Ruby, co v 2.0 a co v 1.9 ? se zmenila na: tuhle featuru v Ruby nikdy mit nebudu...
( viz Facets ). Co bych tak rekl pozitivniho. Tlak produkcniho prostredi tohle dela a bude delat s mnoha produkty....

Add Comment

It is not possible to add comments to posts older than one month.