Opensource pro komerční weby. Vážně?

Tahle situace se hodně opakuje. Klient se ptá, proč má dávat dvakrát tolik za eshop na míru, když mu jinde nabídnou aplikaci založenou na opensource systému za polovic. Já nabízím pádné argumenty pro to, že nic není zadarmo a zakládat komerční webový projekt na opensource prefabrikátu může přinášet celou řadu zásadních rizik.

Předně a úvodem – toto není hanění a zesměšňování opensource projektů. Podobných aktivit si bytostně vážím a obdivuji druhé, že nabízejí ostatním věci, které sami vymysleli, a to zadarmo (mimo jiné už proto, že já jsem se zatím na nic takového nezmohl). Tento blok ostatně běhá také na opensource.

Druhá podstatná noticka – body níže se vztahují pouze na „webové hotovky“ v PHP především z oblasti tzv. publikačních systémů a eshopů (Joomly, Prestashopy a spol., které si stáhnu, nahraju na web a frčím), nikoli na opensource frameworky, nástroje nebo programy a už vůbec ne na opensource jako takový.

Je tu ale celá řada rizik, které podle mého názoru činí všechny ty Joomly a Prestashopy nepoužitelnými pro někoho, kdo to s webovými stránkami a seriózními projekty myslí vážně. Proč?

Rizika opensource řešení

  1. nekonzistence, což je dost zásadní problém. Na projektu často pracuje řada nadšenců s různými zkušenostmi a různým přístupem. Tu je kousek programován objektově, tu procedurálně, tu je pokus o nějaký šablonovací systém nebo MVC architekturu, který se ale nakonec nepodaří prosadit, takže v kódu zůstanou torza něčeho, co tam vlastně nemá co dělat. Jeden vývojář pracuje raději s tímto, druhý raději s něčím jiným… a výsledek? Podivný, nekonzistentní slepenec.
  2. elementární chyby a nedostatky. Není zas tak vzácné, že se člověk setká s opensource projektem nebo některou jeho komponentou, kde se neošetřují vstupy od uživatele (což je naprosto zásadní bezpečnostní riziko), kde se neřeší nějaká místní specifika (prostě všichni mají weby v angličtině, tak ty ho taky budeš mít v angličtině, co na tom, že chceš faktury s diakritikou nebo v Prestashopu lidský formát data). Kdo někdy nasazoval třeba Prestu, potvrdí mi, že korekce různých chyb nebo nedokonalostí tak, aby to nějak důstojně fungovalo, zabere týden až 14 dní. Pokud chcete mít projekt založený na tom, že absolutně netušíte, co kde kdo naprasil, je opensource ideální řešení.
  3. absolutní neflexibilita. Jistě, třeba pro Wordpress nebo Joomlu existují tuny tzv. pluginů, ale stejně – není nic tak zoufale neflexibilního jako opensource. Problém spočívá v tom, že roky vývoje učinily z většiny opensource dost obludné a složité molochy. Úprava jakékoli prkotiny často obnáší úpravu desítek věcí, které na ní závisejí, a leckdy už ani není možné to všechno dohledat a ošetřit. Tím se člověk dostává do situace, že věří ve funkčnost, ale vlastně ani neví, jak je možné, že to funguje. A to je dost špatně – to žádným pluginem nevyřešíte. A studovat měsíc, jak co kdo myslel, za tu dobu se dá udělat slušný eshop po vlastní ose.
  4. molochovitost. To je věc částečně vycházející z bodu výše. Veškeré opensource systémy (eshopy i ty tzv. publikační) vycházejí z předpokladu, že je třeba připravit co nejvíce funkcí, aby to bylo co nejuniverzálnější. Zdánlivá výhoda má dva následky: jednak máte v aplikaci 80 % funkcí, které nevyužíváte, pročež akorát opruzují, druhak se tím vytváří moloch, který je výkonnostně tak zoufalý, že je to poznat i pouhým okem a nejsou na to třeba měření (zkuste si třeba takovou Joomlu a její rychlost načítání jednotlivých stránek; uvidíte sami). Podle mého názoru je v tomto nedocenitelné, když klientovi připravím aplikaci přesně na míru a jen s těmi funkcemi, které potřebuje. To je pak lahoda.
  5. zásadní bezpečnostní rizika. Nutno říci, že situace se trochu zlepšuje, nicméně stále není u každého opensource produktu samozřejmost, že ošetřuje veškeré vstupy od uživatele, že je imunní vůči SQL injection nebo různým krádežím sessions. Pokud vám někdo hackne soukromý blog, asi se nic neděje. Pokud někdo hackne komerční web s nějakými privátními údaji (jména, hesla, čísla karet ad.), nastává pro provozovatele obrovský průšvih. Nemluvím ani o instalaci různých „pluginů“ od různých šikulů, kde člověk absolutně netuší, na jaké je to úrovni a co si instaluje (a leckdy má ještě dobrý pocit, že si aplikaci obohatil).
  6. nulová zodpovědnost tvůrců systému. Což není žádná banalita. Většina opensource se používá pod nějakou z veřejných licencí typu GPL, její součástí bývá to, že produkt si berete, jak leží a běží, tedy bez keců a případné možnosti vymáhat škody, které produkt někomu způsobí (např. krádež čísla kreditní karty kvůli snadnému hacknutí systému, kleknutí serveru kvůli špatnému výkonu ad.).
  7. zoufale nekvalitní a nevalidní HTML kód - tohle je neduh snad všech opensource systémů, troufám si říci bez výjimky. Layout stránek se i v roce 2011 generuje do tabulek, ideálně pěti do sebe vnořených (fuj!), kód je slepený, jak to komu přišlo pod ruku (kousek HTML, kousek XHTML a ještě s chybami, kousek vysmrklý z nějakého wordovského editoru, stylování přímo v kódu – dvakrát fuj!! ad.), výsledek naprosto zoufalý. A jediné, co s tím můžete udělat, je sednout si nad to a za nějaký týden to sjednotit a po někom opravit. To se opravdu vyplatí.
  8. licenční a právní problematika. Pokud si pořídíte aplikaci naprogramovanou na míru, je jasné, že nejste povinni ji dávat k další volné distribuci. U opensource tato povinnost být může – v textu licence může být třeba podmínka, že pokud dílo použijete jako součást jiného díla, stává se nové dílo automaticky opensource. Záleží na konkrétním textu konkrétní licence – ale to stejně nikdo nečte, že? Navíc právní složitost toho, co je nebo není zadarmo, se se všemi důsledky liší stát od státu, vyzná se v tom čert a spoléhat se dneska nejde na nic. Jen abyste pak nebyli překvapení, že něco vlastníte, ale vlastně to nevlastníte.
  9. těžší odstraňování kritických chyb. Tohle také není vyslovená drobnost. Pokud nejste osoba, která se přímo podílí na vývoji opensource produktu, bude dost problematické v případě nějaké kritické chyby ji dohledat – musíte se nejdříve s celou aplikací seznámit, najít části kódu, které danou funkcionalitu zajišťují (a nejspíš budou roztříštěny po deseti na sobě závislých metodách, to se pak hledá opravdu skvěle). Obvykle se jedná o chybu, která zcela znemožňuje funkcionalitu systému (pamatuji např. u Prestashopu chybné počítání DPH, chybné zobrazování faktur nebo matoucí datum, protože jej nebylo možné lokalizovat; např. u Opencartu se zobrazovala v košíku nějaká cena, přestože košík byl prázdný) nebo která umrtvuje některou jeho podstatnou funkci (např. nefunkční doprava zdarma pro Opencart). Pokud si systém vyvíjíte sami, netvrdím, že bude bez bugů, ale asi bude snazší je dohledat a opravit. Pokud používáte opensource, musíte počkat na vydání patche, což může být záležitost týdnů i měsíců.

Myslím, že k rozhodnutí, že opensource pro profesionální řešení opravdu ne, by stačil jakýkoli jeden důvod uvedený výše. A já jich sesmolil cca desítku. Je to dost? Já myslím, že ano. Pokud jsou nesouhlasy / výtky / jiné pohledy, uvítáme v diskusi.

http://en.wikipedia.org/wiki/SQL_injectionpo
Vyvěšeno v PHP prakticky, Tvorba webových stránek a oštítkováno , , . Přidat si do záložek permalink. Přidat komentář nebo zanechat trackback: trackback URL.

Komentářů: 9

  1. Zveřejněno 12.8.2011 v 10:14 | Permalink

    Já se taky kloním spíš k vytváření řešení na míru, open-source k tomu ale zhusta používám (např. Nette nebo Adminer). Většina tvých argumentů je ale sporná – jistě by jim prospělo uvedení konkrétních příkladů. Navíc to z popisu vypadá, že open-source je fuj a komerční aplikace těmito nedostatky netrpí – z mých zkušeností se dá říct spíš pravý opak. Mezi konkrétními projekty jsou navíc zásadní rozdíly, ty je přitom házíš všechny do jednoho pytle.

    Bod 2 mi přijde asi nejsmutnější ze všech – když už strávím čas hledáním a opravou chyb, tak je u open-source potřeba tyto opravy poskytnout zpátky. Je to důležité pro rozvoj projektu a zajistí to, že stejné chyby nebude v budoucnu muset hledat a opravovat někdo znovu (třeba i já sám).

    • NET-VOR
      Zveřejněno 12.8.2011 v 11:06 | Permalink

      Možná je to nejednoznačně nebo blbě vyjádřené, ale tenhle text se vztahuje výhradně na webové „hotovky“, tedy produkty, které si stáhnu, nasadím na web a jedu. Jinak jsem rozhodně zastánce opensource a nechci na to plivat, pokud to tak zní, tak mě to mrzí. Bez Nette už ani ránu a tvůj Adminer je naprostá nutnost. Jinak veškeré ostatní věci, na kterých dělám, jsou všechny opensource – kreslím v Inkscapu (a nikdy už jinak – ať se jde Adobe bodnout), upravuju v Gimpu, píšu v NetBeans… jsou to neuvěřitelně perfektní nástroje bez problémů konkurující placeným programům… akorát je člověk za magora, dreďáka a alternativního vegetariána, což mě trochu mrzí.

      Že je zakázkový „neopensource“ zárukou kvality, z článku podle mě nevyplývá. Nedávno se mi dostala do ruky „práce“ od jednoho nejmenovaného studia, které se profiluje jako renomované. Nestačil jsem se divit, a to dokonce nejsem vzděláním programátor, takže někteří zkušenější by asi dostali infarkt. A prý tam na to mají tým školených programátorů…

      Co se týká většiny postřehů, jsou založeny na dlouhodobějších zkušenostech se systémy Joomla, Wordpress, Drupal, phpBB, Prestashop, Opencart, PHP Nuke a ještě tak dvěma, u kterých jsem již zapomněl na jméno. Ve větší nebo menší míře jsem zaznamenal všechny problémy, které píši, nejvýraznější byly dva, zprasený HTML výstup (to už ani nebyla otázka validity, ale nějaké základní „anatomie“ toho, že to má vůbec držet pohromadě) a bohužel základní chyby, které se táhly i napříč několika verzemi, takže člověk to v jedné opravil, pak nasazoval jinam novou verzi a musel to opravovat znova. Spočítal jsem, že čas, který jsem do podobných úprav a oprav investoval, výrazně překročil dobu, za kterou bych byl schopen si podobnou věc udělat sám. Takže z toho mé zatrpknutí. Některé z opensource hotovek jsou na dobré úrovni, to máš pravdu (třeba bych zmínil Opencart), ale když to beru kolem a kolem, vážím misky, tak si prostě myslím, že to za to nestojí.

      Jinak pokud to někomu vyhovuje, ať každý používá, co mu blízké je…

      • Zveřejněno 12.8.2011 v 13:24 | Permalink

        základní chyby, které se táhly i napříč několika verzemi, takže člověk to v jedné opravil, pak nasazoval jinam novou verzi a musel to opravovat znova

        Už jsem to psal – když opravím chybu, tak bych to měl protlačit přímo do původního projektu. Nechci psát, že to je moje povinnost, ale na této citaci je vidět, že jinak jsem sám proti sobě.

        • NET-VOR
          Zveřejněno 12.8.2011 v 14:10 | Permalink

          Já si nemyslím, že by to byla povinnost, byť by to byl ideál. V běžném provozu, kdy je člověk rád, že stíhá své projekty, to jde dost těžko. A některé opravy není možné „protlačit“ – např. Prestashop je evidentně koncipován jako multikulty, ale třeba už není možné lokalizovat formát data (pokud to potřebuji upravit, musím to natvrdo přepsat).

    • NET-VOR
      Zveřejněno 17.8.2011 v 09:33 | Permalink

      Vzal jsem si tvoji radu k srdci a čerstvá zkušenost: našel jsem náhodou v Opencartu, že se dají spustit některé fragmenty aplikace přímo pomocí URL (používají framework, takže něco takového by nemělo být možné, jeden ten fragment navíc obsahuje nesanitizovaný formulář). Tak jsem to „protlačil“ do bug reportu, vedoucí projektu mi napsal, že když v aplikaci nikde není přímý odkaz na danou URL, tak to přeci nikdo nemůže otevřít, a celé to zakončil „stop wasting my time and other peoples time“.

  2. Zveřejněno 29.8.2011 v 21:15 | Permalink

    Možná by pomohl konkrétní případ. Možná to co tady píšeš bude spíš problém komunuity, v jaký se pohybuješ. Já se pohybuju někde trochu jinde, a ani s jedním z tvojích problémů nemám zkušenost a nesoulhasím s tebou. Naopak do OS projektů, které používáme v práci, zpátky přispíváme a snažíme se zapojit. Navíc není proč pořád dokola „vynalézat kolo“. Asi půjde čistě o věc komunity. Zkus se na to optat někoho kdo dělá podobný věci, ale ne s PHP.

    • NET-VOR
      Zveřejněno 29.8.2011 v 22:16 | Permalink

      Každému to přeju, ale já píšu o PHP. Vynalézat kolo je pravda nesmysl, ale dělat z motorky auto je taky nesmysl. Jinak jsem měl tu čest dělat na dvou OS programech, tam byla spolupráce bezvadná. Ale o tom článek není.

  3. Robert
    Zveřejněno 5.1.2012 v 16:52 | Permalink

    Mam otazku. Neviem ci moc dobre chapem tento pristu open source, ale teda… pokial si vezmem nejaky program, vyrobok a pod. ktorý vznikol, prípadne jeho recept je dostupný na báze open source a ja ho napr. napalím na CD, resp. vyrobim a zacnem slobodne predavat (a zacne mi teda z toho plynut zisk), mozem to??? Ci je podmienka, ze musim na kazdom takomto vyrobku spristupnit aj presny postup ako tovar vznikol??? Alebo nemusim?? Dakujem za odpoved.

    • NET-VOR
      Zveřejněno 5.1.2012 v 19:31 | Permalink

      Konkrétní podmínky, co se smí nebo nesmí, jsou vždy uvedeny v licenci a mohou se lišit produkt od produktu. Může zde být např. podmínka, že derivát musí být opět opensource, tedy autor derivátu musí poskytnou zdrojové kódy pod stejnou licencí. Zisk jako takový nemusí být z prodeje softwaru, ale ze služeb, které se k tomu vážou (např. vytvoření grafické šablony, instalace / zprovoznění webu ad.).

      Toto obecně není vůbec jednoduchá záležitost a v případě potřeby vědět / konzultovat více doporučuji využít profesionálních právních služeb.

Přidat komentář

Váš email nebude nikdy zveřejněn. Povinná pole jsou označena *

*
*

Můžete použít HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>