středa, června 27, 2007

To neprojde...

Taková malinkatá celebritka mezi .NET vývojáři Jeff Atwood se rozhodl, že si na svůj blog vpustí reklamu a zisky z ní utratí na sponzorování open source (OSS) projektů vyvinutých pro .NET (viz Supporting Open Source Projects in the Microsoft Ecosystem. Vcelku nic moc zajímavého.

Zajímavé jsou ale některé komentáře pod jeho textem. Třeba ten od Franse Bouma:

In fact, the whole MS platform eco system isn't suitable for open source tools to become very effective. As soon as they do, MS will come with an equivalent, and what's worse: large droves of developers don't even know how to spell open source, left alone that they're even looking for open source projects, they simply look at Redmond and wait till MS comes with something.

In the Java community, things are completely the opposite. The whole eco-system around Java is simply build on top of the open source model: libraries and tools are very often free and open source. The business model of java oriented companies is build around providing services, not by selling licenses. On the MS platform this is the opposite.

Vcelku s tímto popisem situace souhlasím. Také používám (soukromě i pracovně) několik OSS produktů, jako je třeba MbUnit (na kterou jsem přešel z NUnit, protože MbUnit má spoustu sexy vlastností, které NUnit nemá), nebo ZedGraph (vážně lepší než drtivá většina placených komponet pro kreslení grafů, distribuovaná pod LGPL), nebo #ziplib (a asi i další).

Nicméně je fakt, že většina těchto komponent dříve nebo později dojde do situace, kdy si Microsoft všimne, že mu někdo loupe perníček, a buď si koupí (rozuměj zaměstná) přímo vývojáře té které komponenty, nebo vymyslí něco vlastního, skoro stejného, ale ne tak úplně kompatibilního, a přibalí to k Visual Studiu, nebo to vydá jako nějakou zdarma stažitelnou komponentu, na což vývojáři většinou reagují tak, že převedou své aplikace na věci od Microsoftu. Podívejte, jak nepotřebné jsou k Visual Studiu přibalené Crystal Reports od doby, kdy Microsoft distribuuje svůj vlastní ReportViewer (pro jednoduché reporty, samozřejmě).

Já to Microsoftu nezazlívám: je to firma, jejímž cílem je znásobovat investice do ní vložené, která potřebuje růst na trhy na kterých zatím není a tak dále. Microsoft je trochu jako hypermarket: všechno co potřebujete byste měli najít pod jednous třechou, aby vás ani nenapadlo dívat se jinam. Na druhou stranu se pak nemůže nikdo divit, že některé lidi takový přístup znechutí, a že začnou raději věnovat něčamu jinému než je .NET. Něčemu, co jim přinese nehynoucí slávu a uznání, a ne jen temný kout v domě zapomnění.

Říkám si: v čem je ten rozdíl, mezi vývojáři opravdového OSS, kteří se věnují Javě, nebo Ruby, nebo něčemu podobně zajímavému, a vývojáři kteří se spokojeně rochní v teplé náruči Microsoftu?

Napadlo mě tohle: zatímco všichni ti opravdoví OSS vývojáři tělem i duší, sní o tom, že jejich produkt (jeden z mnoha ve stejné kategorii na Sourceforge) napraví svět a tak dále, a že když budou dost dobří, tak je nakonec zaměstná Google nebo nějaká podobně trendy firma, snem vývojářů pro Windows (nebo platformy Microsotu obecně) je opustit řeholi zaměstnání, stát se nejprve MicroISV a pak třeba i regulérním ISV (tedy že naberou zaměstnance, kteří budou makat za ně). Rozdíl je totiž v tom, že zatímco pro osvědčené OSS platformy (Linux, Java, atp.) jsou věci zadarmo, pro ty, co se tak či onak spolčili s Microsoftem je naopak normální za věci platit. Takže stačí, když vyvinete nějakou sadu dostatečně kulatých a gradientních tlačítek, vyrobíte si stránku, zaspamujete pár diskusních fór (nebo nabídnete svůj "produkt" pro nekomerční využití zdarma), a díky té mase vývojářů se docela slušně uživíte.

Jistě OSS produkty se živí službami. Ale množství počátečního kapitálu a výše rizika pro zaběhnutí produktu založeného na službě jsou úplně jinde než u balíku ovládacích prvků, který lze vyvinout poměrně dobře i u práce (dokonce i když máte rodinu) a riziko je vcelku nulové.

Chci tím říct: myslím si, že lidem, kteří obcují s produkty Microsoftu současný stav vcelku vyhovuje. Dává jim totiž naději, že jednoho dne budou pracovat na svém, a že zvyk Microsoftích nohsledů nakupovat licence, jim umožní zbavit se jha práce pro někoho jiného. To, že v okamžiku, kdy se stanou příliš úspěšnými, vrhne Microsoft na stejné pole několik set ze svých tisíců vývojářů, kteří je o jejich malý kšeft zase připraví, je nevzrušuje, protože se ukájejí tím, co tvrdí Paul Graham a Tim O'Reilly: totiž že jsou pod radarem, že na ně není vidět, že jim se něco takového prostě nemůže stát.

Proto si myslím, že podporovat finančně OSS projekty pro .NET je jen takové plácnutí do vody, které stejně nikam nepovede. Aby to bylo k něčemu, musel by se změnit přístup Microsoftu, a to se nestane, protože Microsoft potřebuje růst a nemůže si dovolit, aby místo, kam by se mohl natlačit on sám, zabírala nějaká pochybná skupinka předstírající filantropii, či co.

Tak tohle mě napadlo.

3 komentáře:

gaspoda řekl(a)...

Dobry den, muzete popsat ty sexy vlastnosti MbUnit ? Hodne me to zajima, zrovna jsem zacal pouzivat Nunit, chtel bych vedet jestli neni lepsi rovnou prejit k MBUnit.

Dekuji

jIRI řekl(a)...

Asi nejužitečnější je na první pohled RowTest:

[RowTest]
[Row(1, 2)]
[Row(2, 3)]
[Row(3, 4)]
public void TestSomething(int val, int exp) {
Assert.AreEqual(exp, val - 1);
}

Ale MbUnit obsahuje i spoustu dalších užitečností (test fixtures s pořadím testů, kombinační testy atp.).

Doporučuji prozkoumat wiki na

http://www.mertner.com/confluence/display/MbUnit/Home

(která teď, samozřejmě, nefunguje :-))

Jinak atributy jsou zhusta kompatibilní s NUnit (a nekompatibilní s tím, co používá VS TeamSystem -- jak pěkně to rezonuje s tím co jsem napsal...), nějaké rozdíly jsou oproti poslední verzi NUnit (MbUnit nepodporuje ty pěkné asserty Assert.That()), ale má zase spoustu specializovaných tříd Assert (třeba pro kolekce CollectionAssert).

Jinak člověk, který MbUnit vyvíjí teď dělá v Microsoftu :-) a má weblog:

http://weblogs.asp.net/astopford/archive/tags/MbUnit/default.aspx

Další informace (třeba

http://haacked.com/archive/2007/05/10/productive-unit-testing-with-specialized-assertion-classes-in-mbunit.aspx

) je potřeba usilovně googlit, protože dokumentace k MbUnit je děravá (ne že by k NUnit byla nějak závratně lepší...).

A MbUnit je podporována TestDriven.net, což je možná nejdůležitější vlastnost vůbec :-).

jIRI řekl(a)...

Eh,samozřejmě

Assert.AreEqual(exp, val + 1);

:-))