Když jsem jako obvykle včera v noci pracoval, tak jsem kromě toho diskutoval s Michalem Bláhou při řešení technického problému se systémem Dotnetnuke, do kterého jsem se „zamiloval“ J A mezi diskuzí o životě Michal nadhodil, že bych mohl komunitu českých .NET vývojárů seznámit s tímto produktem. Takže slovo dalo slovo a my se dohodli na tom, že se pokusím napsat pár článků o Dotnetnuke.
reklama
Úvod
Když jsem jako obvykle včera v noci pracoval, tak jsem kromě toho diskutoval s Michalem Bláhou při řešení technického problému se systémem Dotnetnuke, do kterého jsem se „zamiloval“ J A mezi diskuzí o životě Michal nadhodil, že bych mohl komunitu českých .NET vývojárů seznámit s tímto produktem. Takže slovo dalo slovo a my se dohodli na tom, že se pokusím napsat pár článků o Dotnetnuke.
Historie IBuySpy & Dotnetnuke portálu
Pokud se podíváme do historie vzniku .NET platformy, tak můžeme vidět, jak velký důraz Microsoft přikládá ukázkovým aplikacím. Z tohoto důvodu uvolnil společně s betou .NET Frameworku několik „vzorových“ aplikací na použití technologie ASP.NET, kdy jednou z nich byl i IBuySpy portál vyvinutý společně s firmou Vetigo Software. Systém byl uvolněn se zdrojovými kódy a byl velmi podobný Sharepointu a nebo obdobným systémům na LAMPu (Linux/Appache/MySQL,PHP).
IBuySpy portál si získál během krátké doby vysokou popularitu, kterou ale začal postupem doby ztrácet a to z důvodu, že ani Microsoft ani Vertigo Software se již nevěnovali jeho dalšímu rozvoji a vývoj „usnul“ na mrtvém bodě s ohledem i na opravy chyb. Naštěstí EULA pro IBS byla natolik liberální, že vývojáři mohli volně používat zdrojové kódy (poskytované pro VB.NET a C#). Žel komunita Microsoft vývojářů je vychovávána k tomu, že příliš nechtějí využívat výhod open source přístupu a tak opravy a vylepšení, která sami implementovali na původní verzí IBuySpy portálu si většinou nechávali pouze pro sebe a ze strany Microsoftu nebyla žádná podpora pro komunitní přístup, který bylo možné vidět u projektů jako Linux, PHP a dalších.
Osoba, která sehrála zásadní roli pro vývoj IBuySpy portálu a v důsledku k změně přístupu některých významných manažerů Microsoftu k open source, byl Shaun Walker.
Ten 24. prosince 2002 uvolnil svojí open source verzi IBuySpy portálu, kterou nazval IBuySpy Workshop (IBSW) a kterou uvolnil na toto vánoční datum jako dárek .NET komunitě. Walker po uvolnění odjel na dovolenou a po návratu zjistil, že jeho distribuce a úpravy, které provedl v IBSW natolik zaujali, že měl svůj mailbox úplně zahlcený děkovnými emaily, že se rozhodl pokračovat ve vývoji.
Jakmile projekt přesáhl 2000 registrovaných uživatelů, rozhodl se Walker překlopit projekt do modelu předplatného, což způsobilo velkou nevraživost komunity a dostal se pod silnou „palbu“ zastánců „čistého“ open source modelu.
V důsledku tato rozhádanost ASP.NET komunity kolem projektu IBSW zaujala hlavní představitele Microsoftu, primárně to byl Scott Guthrie (zakladatel ASP.NET týmu v Microsoftu, dnes stále působí jako product manager v divizi pro webový vývoj), který navrhoval řešení jak se zbavit modelu předplatného a držet se pouze open source přístupu. Nakonec diskuze s lidmi z Microsoftu nepřinesla žádnou konkrétní podporu. Takže Walker se musel o sebe postarat sám a rozhodl se, že uvede projekt pod zcela novým jménem a bude ho prosazovat nezávisle na aktivitách Microsoftu v souvislosti s IBuySpy portálem.
Shaun Walker zvolil název „Dotnetnuke“ na základě spojení platformy .NET a slova „nuke“ podle open source projektů, které toto slovo používají v kontextu obdobných portálů na jiných technologiích (obvykle LAMP). Kromě toho musel vyřešit i problematiku licencování, kdy původní IBuySpy portál byl uvolněn pod velmi liberální Microsoft EULA smlouvou, která povolovala prakticky vše. Pro lidi, kteří nemají přiliš zkušeností s open source to vypadá ideálně, ale není tomu tak a právě naopak zastánci open source myšlenky byli proti této zcela liberální smlouvě a doporučovali nasazení standardní licence.
Dnes jsou známé primárně dvě licence standardní licence založené na definici pojmu „open source“ organizací www.open-source.org. Těmito licencemi jsou GPL (GNU Public License) vytvořenou roku 1989 Richardem Stallmanem, zakladatelem Free Software Foundation, a BSD (Berkeley Software Distribution) vytvořenou University of California.
Základní rozdíl je v tom, že BSD je velmi otevřená a přesto zachovává základní autorská práva a je známá jako „akademická licence“ poskytující nejvyšší možnou úroveň sdílení autorských prací a zároveň zachování autorských práv (oproti GPL, označované též jako „copyleft“, kde je snaha o naprosté omezení autorských práv a veškeré předání práce do komunity).
Walker zvolil pro Dotnetnuke licenci BSD a pod ní je šířen, takže Dotnetnuke může být libovolně využíván ke komerčnímu a nekomerčnímu využití a zároveň zachovat zmínku o autorství a copyright tvůrců systému.
Co je Dotnetnuke?
V krátkosti jak charakterizovat tento systém? Použiji-li oficiální autorskou definici, pak se jedná o systém pro správu dokumentů (Content Management System), i když tento pojem je dosti amorfní a jeho výklad je dnes velmi variabilní podle zaměření firmy/člověka, který ho bude vykládat (pan Palas z Kentico by určitě poprávu namítl mnoho věcí, co Dotnetnuke neřeší – viz. diskuze). Přesto bysme mohli zkusit tento pojem přijmout v určitém definovaném rozsahu, kdy budeme hovořit o tvorbě internetových/intranetových aplikací, kde je nutné provádět určitou strukturovanou a kontrolovanou práci s daty. Zatím nic? Řekl bych, že mnoha lidem definice v podobě CMS moc neřekne, takže to zkusíme jinak J
Pro programátory bych osobně Dotnetnuke charakterizoval jako základní aplikační framework (trochu něco jako „aplikační server“) pro rychlý vývoj modulárních internetových/intranetových aplikací. Tedy ne jako hotový finální produkt, který si koupíte u dané firmy a můžete jej okamžitě provozovat, ale jako vysoce flexibilní systém, který je založen na jiném přistupu k vývoji aplikací. A tímto přístupem je komunita a open source model., kdy tato komunita má tak rychlý růst a rozvoj, že dokonce si dovoluje „učit Microsoft žít s open source“ a kdy tato komunita produkuje velké množství různorodých modulů.
Proto definice jako CMS není tak přesná, protože Dotnetnuke nemusí být pouze pro kontrolu a práci s dokumenty a daty, workflow a definování digitálních práv uživalů atd. Dotnetnuke můžete toto vše implementovat, ale stejně tak může být i portálovým systémem, internetových obchodem a nebo pouze pro provoz jednostránkové webové aplikace s výpisem událostí. Zkrátka při jeho použití můžete díky obrovské komunitě najít mnoho různých modulů, které Vám tuto funkčnost zajistí.
Jak tedy si jej nejjednodušeji představit? Doufám, že puristy nebudu kamenován, když se vrátím k původní myšlence a to je zkusit vidět Dotnetnuke spíše jako „aplikační server“, do kterého přidáváte funkční komponenty, které se nazývají moduly. Neodpovídá to akademické definici, ale doufám, že snad pro tentokrát mi bude odpuštěno J.
Dotnetnuke v akci
Nyní se ale pojďme konečně již podívat, jak Dotnetnuke vypadá v praxi. K tomuto doporučuji stahnout publikaci, která je zdarma k dispozici zde. Vyzkoušejte si základní práci s tímto systémem podle této publikace na doméně demo.dotnetnuke.cz, abyste si sami mohli udělat představu, jak tento systém v základě funguje a vypadá.
Některé výhody a nevýhody
Teď se vrátíme k tomu, jaké je možné využití a jaké jsou naopak slabší stránky.
Nejprvě k základním informacím o vývoji. Systém Dotnetnuke má základní jádro vývoje ve Visual Basic .NET a v tuto chvíli má základní vývojový tým 47 plnohodnotných členů. Jedná se tedy o velmi úspěšný a zaběhnutý open source projekt, jehož popularita každý den roste (stačí se podívat na domovskou stránku dotnetnuke.com a počet registrovaných uživatelů). Počet nasazení se počítá na tisíce od jednoduchých webů až po armádní systémy (viz. vybranné reference).
Dotnenuke již pokročil do třetí verze a vyřešil mnoho „porodních“ bolestí, které jsou vždy spojené s rannými verzemi. Ale přesto lze najít mnoho připomínek a to často velmi vážných a pádných. Mezi oblasti, kterými jsem přímo „fanaticky“ zaujat patří bezpečnost a té jsem si začal všímat u Dotnetnuke jako u první.
Co mne ihned zarazilo byla nabídka pro „mixed mode“ při konfiguraci instalace systému, aniž by bylo stejně zdokumentováno integrované použití a přístup k databazí. Přestože chápu, že je někdy nutné používat tento mód (typicky hosting apod.), ale na druhou stranu v případě intranetových podnikových portálů, které sám základní tým zmiňuje, je nevyužití integrované bezpečnosti prakticky tristní a pokud bych provádět bezpečnostní audit takového systému, pak Dotnetnuke okamžitě vyhodím J. Takže to byl můj první smíšený dojem z instalace. Další body se opět týkají bezpečnosti a to jsou typické „HTML injection“ útoky, kterým tento produkt často podléhá.
Přestože tyto útoky jsou vážné, přesto bych je neviděl jako kritické, protože tyto chyby se stávájí a jde při hodnocení kvality výrobce primárně o způsob jeho reakce a rychlost. A to je podle mého názoru již velmi vážná připomínka na tento projekt.
Typickou ukázkou jednání Dotnetnuke týmu je nalezení bezpečnostních chyb umožňujících cross-side-scripting útoky (jejich popis je zde). Když se podíváte na jejich řešení, pak není příliš profesionální, kdy „vendor“ nereaguje na ani druhé upomenutí (13-01-2005 Sent email asking for confirmation of second email (No vendor response)). A toto potvrzuje i moje osobní zkušenost s tímto týmem, který zjevně má určité komunikační bariéry a na konkrétní technické připomínky zásadně nereaguje, což mne u komunitního projektu hodně překvapuje.
To jsou tedy moje vytrhnuté výhrady k bezpečnosti, kdy k tomuto bodu bych mohl napsat celý samostnaný článek, ale snažím se u tohoto tématu kontrolovat, aby se s z tohoto článku nestal bezpečnostní audit jednoho produktu J.
Pouze pro rozšíření kritiky systému Dotnetnuke uvedu důvod, který asi bude trápit mnohem více lidí, než bezpečnost a to je podpora databází. Je to další slabé místo Dotnetnuke, kdy v standardní instalaci verze 3 podporuje pouze Microsoft SQL Server (tedy MSDE, MSSQL 2000 a také MSSQL 2005). Ale pokud bude chtít nasadit Access, MySQL, Oracle, atd., pak máte problém, protože v tuto chvíli Dotnetnuke neumí s těmito databázemi pracovat a musíte si konfiguraci a částečně i kód upravit sami.
Závěr
V tomto krátkém článku jsem se pokusil seznámit s tím, že existuje zajímavý produkt Dotnetnuke a že jeho budoucnost vypadá určitě velmi slibně. Také doufám, že nyní již nebude tento systém brán jen jako uzavřené řešení např. jen pro správu dokumentů (CMS), ale spíše jako základní framework pro vývoj portálových řešení, která mohou nabízet zcela rozdílnou funkcionalitu.
Úspěch jakéhokoliv open source projektu stojí a padá s jeho komunitou, a proto věřím, že také u nás bude narůstat komunita uživatelů Dotnetnuke a tento systém dokáže přesvědčit naše klienty jak o vynikajících vlastnostech platformy ASP.NET tak i přesvědčit Microsoft o kvalitě a správnosti přístupu v mnoha open source projektech.