V posledním Java podcastu mne překvapil příběh Jamie Cansdala. Jamie je programátor v .NET a již víc než rok má problém. Podmínky, za jakých šíří program, který vytvořil, jsou Microsoftu trnem v oku a na Jamieho bude možná podána žaloba.
Microsoft po vzoru ostatních již delší dobu nabízí API k rozšiřování řady svých produktů. A našli se programátoři, kteří toho využívají. A tak vedle stovek rozšíření Firefoxu nám je dnes nabízena řada rozšíření Internet Exploreru, podobně jako Eclipse si dnes můžeme rozšířit i Visual Studio atd. Autoři svá rozšíření nezřídka poskytují zadarmo.
A zde začíná příběh Jamie Cansdala, který vytvořil rozšíření Visual Studia nazvané TestDriven.NET sloužící k snadné správě a ladění Nunit testů. Nástroj je pro studenty a open source programátory nabízen zadarmo, ostatní by měli používat placenou verzi.
TestDriven.NET sklidil úspěch a Jamie byl za své rozšíření (kterým v podstatě pomáhal lepší penetraci .NETu mezi programátory) před pár lety Microsoftem odměněn označením MVP (Microsoft Most Valuable Professional).
V čem je tedy problém? Jamie umožnil své rozšíření nainstalovat i do Visual Studia Express Edition. Pokud neznáte Visual Studio, tak vězte, že se dodává v několika verzích, různě nabitých funkcemi a dle toho i odpovídající cenou. Visual Studio Express Edition je nejnižší verze, která je jako jediná k dispozici zdarma.
Koncem roku 2005 byl Jamie Microsoftem vyzván, aby možnost instalace do Express edice odstranil. Microsoftu se zřejmě nelíbí, že Jamie umožnil uživatelům Express verze přidat zajímavou funkčnost. Přeci jen verze zadarmo měla motivovat skutečné zájemce pro koupi verze placené s více funkcemi. Za zmínku také stojí, že Microsoft dodává Visual Studio Team Test Edition, jejíž funkcionalita se s TestDriven.NET překrývá a která má cenu okolo sto tisíc korun (nevím přesně, pokud víte, upřesněte prosím v komentářích).
Jelikož se po dlouhé korespondenci obě strany nedohodly (Jamie na čas funcionalitu odstranil a později opět vrátil), nastoupili právníci.
Pokud jste dosud neviděli dopisy od právníků Microsoftu, přečtěte si tenhle a tenhle.
Jamie dostal stanoven termín k vyřešení problému na minulý čtvrtek. Domovská stránka produktu TestDriven.NET ale stále nabízí ke stažení program pro všechny verzi Visual Studia. Jamie si zřejmě stojí za svým. Bude zajímamé sledovat, jak celá kauza dopadne.
Nejsem právník a ani po přečtení názorů obou stran a společné korespondence neumím jednoznačně určit, na které straně je pravda. Microsoft totiž nedokázal jasně říct cokoliv ve smyslu „použil jste funkci XY, čímž jste porušil bod YX licence“. Všichni by se na to podívali a Jamie by pravděpodobně sklopil hlavu a žádosti vyhověl. Microsoft místo toho hovoří o deaktivovaných funkcích, které prý Jamie povolil, ale žádnou nejmenuje. Jamie se radil s právníkem a ani ten žádný problém rovněž nenašel, proto nechce ustoupit.
Věty z dopisů á la:
You said that by using Intellisense I may be in breach of the dissasembly clause in the VS SDK license.
mi připadají spíše k smíchu.
I v případě, že by právní pochybení nakonec bylo na straně Jamieho, jsem přesvědčen, že Microsoft dělá PR chybu. Ačkoliv se tváří ke své vlastní vývojářské komunitě přátelsky, pokud na Jamieho podá žalobu, může ztratit (vzhledem k tomu, že kauzu s napětím sledují vývojáři celého světa) důvěru řady z nich.
Nu a co vy, neplánujete vytvořit některé vlastní rozšíření některého programu? A nebojíte se, že vás jeho výrobce zažaluje?
[1] Pokus dobry, az na to, ze v licenci nic takoveho neni. Zkusil jsem si ted C# Express nainstalovat do virtualu a licenci jsem zkopiroval na http://a.met.cz/blog-root/testdriven/csharp-expres-license.txt
Zadne takove omezeni tam nevidim.
Ale autor je trosku mimo...
Ve VS Express je deaktivovana komponenta AddIn Manager, ktera v plnokrevnem VS nacita addiny. Jenze on, aby toto obesel, vyuzil jine moznosti rozsireni VS Express...ono totiz umoznuje nacitat pomocne addiny pro visualni komponenty, cehoz on vyuzil, aby natahl TestDriven.
Proto se nejprve musi rozbalit tab Properties, aby VS takovy addin natahlo...a z toho vypliva jedine - OBESEL vyrazenou fci...
The TestDriven.NET product is implemented as a Visual Studio Add-In. In the Visual Studio Standard, Professional, and Team System SKUs, TestDriven.NET is installed as an Add-In and gets loaded into the IDE through the Add-In Manager. In the Visual Studio Express SKUs, because we disabled extensibility (macros, Add-ins, and VS Packages), the Add-In Manager is removed and therefore Add-Ins are not detected or loaded. Jamie has created additional components specifically for the Express SKUs to work around this technical limitation. He takes advantage of an extensibility point that allows user controls (such as a button class) to customize entries in the Properties window. When his property extender gets called, he executes code that finds, loads and injects the TestDriven.Net assembly into the Express SKU’s running process, thus replacing the functionality of the removed Add-In Manager. This explains why he instructs Visual Studio Express users to open the Properties window in order to enable TestDriven.NET. Once his code is injected into the Express SKU’s running process it can add menu items, enable features that were disabled, and in general take over that instance of Express. These special loading mechanisms that Jamie has built exclusively for the Express SKUs are unauthorized workarounds to the SKUs’ technical limitations.
[8] Uz rozumim, diky za odkaz na tvrzeni protistrany, tohle jsem vcera nenasel.
Presto nemam pocit, ze by to bylo jednoznacne. V tom vysvetleni jsou stale mezery. Autor pouzil povolene API a porad vidim jako otazkou, zda jeho zpusob pouziti je opravdu nelegalni. Bez pravniku to nerozlouskneme.
Ale predstava, ze budu rozsirovat nejaky produkt pres jeho verejne API a bat se, zda me nekdo nebude zalovat, protoze se mu zrovna muj zpusob pouziti za par let nebude hodit do kramu, me opravdu prilis netesi.
Takove API je pak peknou pasti na vyvojare.
No to je bezvadný argument, takže každá funkce API má jednoznačně určeno k čemu se může použít a k čemu nikoliv. Něco jako funkci sprintf můžete použít k sestavení hlášek velebící MS a jakékoli jiné použití je "unauthorized workaround". Hmm, a já si říkal, proč je v GNU GPL tolik zdůrazňováno, že jej můžete použít k jakémukoli účelu.
No me to prijde podobne, jako by u textoveho editoru, ktery ma umele zakazano tisknout, nekdo pouzival "Ulozit jako" "Plaintext" a jmeno souboru dal "PRN:"
Cili nepouzil k tisku tu umele disablovanou rutinu, ale nejakou jinou, povolenou, zpusobem, ktery mrsitele necekali.
Pokud je v licenci receno, ze se nesmi pouzit "Tisknout", tak je tento postup naprosto v poradku - "Tisknout" nebylo pouzito ....
[10] COZE? API existuji a sou urcena k tomu k cemu se daji pouzit. Pokud se to M$ nelibi tak si ma dat do dokumentace k API 6k strankovy pravnicky dokument ktery bude presne popisovat k cemu se to smi pouzit... Pokud tohle neudela tak smolka... Dalsi duvod proc nepouzivat M$ produkty... A jinak, kdyz takhle rozumite tomu co to API ma delat, mohl byste klidne i svymi slovy popsat kde presne udelal chybu? Pocitam podle toho jak pisete, ze k M$ mate dost blizko...
[21] API jsou k tomu, k cemu se pouzit DAJI, pokud se nemylim. Odkdy je povolena jen vyjmenovana mnozina pouziti? Pokud zpristupnim funkce, ktere neco provadeji s mym programem, je znas uz svobodou kazdeho, jak jich vyuzije.
Pokud to spravne chapu, autor nic na originalnim produktu nemodifikuje, nemeni zadne zabudovane ochrany, jen si pomoci jinych funkci poradil jak suplovat funkci, ktera tam chybi.
Pokud tedy v licenci API nestoji "nesmite je pouzit k implementaci funkci, ktere originalni progra neposkytuje", nevidim problem. Otazkou by bylo, k cemu je API, ktere nepovoluje implementaci rozsirujicich funkci...
[19]
To ze mate k M$ blizko nebylo mineno, ze jste zamestnanec, jen ze jejich produkty narozdil ode me vyuzivate... Ale od ted budu pouzivat MS jestli vam to $ tak vadi...
[20]
Ne, printf na spojovani retezcu nepouzivam, ale pokud to nekdo dela je to jeho vec, rozhodne to vsak neni duvod proc ho za tudle vec zalovat... API sou k tomu, k cemu se DAJI pouzivat... Unixovy prikaz cat taky puvodne nebyl zabysleny jako prikaz kterym se posle soubor na stdin jineho programu, nicmene ted se tak velmi hojne vyuziva...
[26] To je ovsem veta standardne pridavana do vetsiny (mozna i vsech) licenci Microsoftu. Obsahuji ji i licence k placenemu Visual Studiu, Outlooku atd. atd.
Pokud by se tahle veta vykladala jako zakaz pridavani funkci do programu (prakticky kazde rozsireni nejakou tu funkci pridava - to je jeho podstata - a nejak tim prekracuje omezeni stavajiciho programu), pak by byly nelegalni add-ons sami o sobe (a nejen pro VS, ale i treba pro IE, Outlook atd. atd.), coz se snad shodneme, ze je nesmysl.
[28] to jsme porad na tom samem zacatku, zda pouzitim regulerniho povoleneho API muzeme udelat neco nepovoleneho nebo ne 8-)
Kom. [27] ma zduraznit, ze se jedna o obecny pravnicky zvast, neni to zadna specialitka licence pro zadarmovou verzi a dusledky jeji interpretace se promitnou prakticky do vsech produktu, coz neni zas takova sranda.
[28] No a? Prave to podle mne celou licenci pravne diskvalifikuje, neb zakazat nekomu "work around a problem" znamena zakazat mu si s tim problemem *nejak* poradit...dovedeme-li to dale, treba i nakupem plne verze ci jineho produktu. To vse je *work around* problemu s chybejici funkcionalitou.
Rekl bych, ze jaksi primerene by bylo pouzit tam "circumvent ... limitation", totiz "obejit". To ale, zajimave, nepouzili.
Zajimalo by mne, ktery jiny vyrobce cehokoliv sve uzivatele smluvne odsoudi k tomu trpet jakymikoliv nedostatky a zakaze jim je jakkoliv resit...
Jisteze je tento pripad proti "duchu" smlouvy, ale na duchy ono se v byznysu moc nehraje. A MS zrovna neni hrac, jenz by neke duchy a fair play vesel na moc vysoky stozar. Bud davam do placu neco, co obchodni partneri v ramci rozumneho mohou akceptovat, nebo se vystavuji presne tomuto nebezpeci, ze totiz nekdo nemalou energii investuje do toho, najit v me smlouve klicku, umoznujici mu dosahnout sveho. A pardon, ale situace, kdy nejenze dodam produkt bez jiste funkce ale smluvne vsem zakazi ji jakkoliv pridat ci suplovat, je smesny a o toto si primo rika.
Já si myslím, že Microsoft investoval do vývoje VS mnoho finančních prostředků a uvolnil verzi VS Express zdarma, což je chválihodný proces. To co zde programátor dělá zavání komunistickým myšlením. Pokud mu bude dovoleno podkopat VS Express, tak podkopá příjmy Microsoftu a zastaví vývoj a daný směr nebude výhodný pro nikoho, jak uživatele, tak programátory.
[34] Problem by byl, kdyz by to bylo neco vyjimecneho, ale ono je psani rozsireni pro VS a jejich vydavani zadarmo tak nejak obvykle, dokonce i Microsoftem podporovane.
Proto je onen obrat v pripade, ze "se mi to zrovna nehodi pod fousy" chapan negativne. A to i samotnou komunitou VS vyvojaru, vzdyt jich se to muze tykat priste.
[26] To ale znamena, ze nemozem pouzit takmer ziadne rozsirenie ktore pridava, rozsiruje, upravuje alebo opravuje nejaku funkcnost, ktoru povodny produkt nemal. Aj to je predsa "work around any technical limitations in the software". Ked VS nepodporuje subversion, nemozem napisat/pouzit plugin, ktory mi takuto moznost prida, lebo VS samo o sebe ma technicke obmedzenie ze podporuje iba VSS.
Martin Hassman ex-biochemik, umělecký programátor a publicista. Spoluzakladatel CZilly, zakladatel Zdrojáku, správce HTML5.cz, organizátor hackathonů, čekovacích muzejních nocí aj. akcí.
Přečteno 24 222×
Přečteno 23 716×
Přečteno 20 565×
Přečteno 19 715×
Přečteno 19 665×