čtvrtek 17. dubna 2008

O fanatické komunitě

Právě jsem si dočetl zajímavý článek Why Ruby on Rails won't become mainstream, který celkem zajímavě nabízí teorii, proč se webový framework Ruby on Rails nestane mainstreamem. Já pominu všechny teze předkládané tímto článkem, ostatně přečíst si je můžete přečíst sami, výjma jedné jediné o fanatismu.

Regular readers of my blog know how strongly I feel on this topic. There are exceptions, of course, but the attitude of Ruby on Rails users toward Ruby skeptics or critics has been less than kind. This is a crowd convinced that it has found the ultimate answer to everything, and they are not afraid to let you know. I only have a simple advice for these people: you might be right, but just be humble. It never hurts.

Není to poprvé co jsem zaslechl podobný názor na lidi kolem Ruby či RoR. Samozřejmě je to docela paušalizující a nerad bych se teď dotknul těch rozumných (a že tam rozumní lidé jsou, což dokládá náš podcast o Ruby a RoR), ale něco pravdy na tom asi bude. Řekl bych že tito fanatikové jsou prostou daní za úspěch a masivní rozšíření z jedné části a z druhé části jistou nevyzrálostí té komunity Ruby či RoR.

Ostatně nebyli jsme jiní, s úsměvem vzpomínám na to jak jsem kdysi hodně dávno plamě obhajoval PHP oproti NET. Na druhou stranu je to škoda ve výsledku pro Ruby či RoR jako takové, protože to je nálepka, které se budou chlapci těžko zbavovat. Nemyslím si totiž, že by Ruby či RoR takové lidi potřebovalo, protože technologie je to dosti úspěšná i bez nich.

Jsem rád, že alespoň v naší česko-slovenské Java komunitě, tak jak to sleduji v diskusních forech, se nám daří podobných projevů fanatismu se vyvarovat. Důkazem budiž i následující CZJUG s tématem pro Javisty možná trochu kontroverzním a to o alternativních jazycích nad JVM (Groovy, Jython).

pondělí 14. dubna 2008

Maven 2.0.9 - fixní verze CORE pluginů

Jednou z často vyčítaných chyb Mavenu, byla nereprodukovatelnost buildu, způsobená nekonzistencí ve verzích pluginů použitých v rámci buildu. Maven 2.0.8 a starší používal pro build vždy nejnovější aktuálně dostupnou verzi pluginu v lokální repository. Takže jste mohli v závislosti na stavu lokální repository mohli dostat rozdílné výsledky buildu.

Řešení tohoto problému existuje, ale úplně neškáluje a není to moc uživatelský přívětivé, a to uvádět v centrálním (rodičovském) POMu verzi použitých pluginů. Release 2.0.9 tento problém řeší zafixováním verzí CORE pluginů přímo v distribuci Mavenu (viz element pluginManagement v super POMu). Tím je zaručené, že minimálně na stejném releasu Mavenu (platí pro 2.0.9 a výše) budou stejné verze CORE pluginů a tímto nepoškozena reprodukovatelnost buildu. Zároveň díky dědičnosti platí, že pokud budete mít v centrálním POMu definované vlastní verze CORE pluginů, tak tyto budou mít přednost.

Samozřejmě nemusíte používat pouze CORE pluginy, takže doporučovaná strategie s definicí v centrálním POMu je stále platná. Tuto změnu bych nazval jako takový smart default. Kompletní popis najdete v článku 2.0.9 brings a bit of stability to plugin versions, ze kterého jsem čerpal i já.

Další větší změnou je možnost importování dependency managementu z různých POMů. Dependency management slouží k deklaraci použitých dependencí. Díky tomu je možné shromáždit všechny dependence včetně jejich verzí na jednom místě. Před releasem 2.0.9 nebylo možné definovat dependency management jinak než dědičností mezi POMy. 2.0.9 verze definuje nový dependency scope import, diky kterému je možné importovat dependency management z různých POMů. Pokud je pro vás tento popis příliš abstraktní pokračujte článkem Importing Managed Dependencies.

Jinak doporučuji přečíst release notes, protože těch záplat a drobných vylepšení je celkem dost.