Opensource pro weby

Postavit firemní web firmy na opensrource není dobrý nápad.

1. vede k šablonovitě - všechny weby vypadají podobně, těžko se vytváří přidaná  hodnota a odlišení od konkurence

2. je těžké až nemožné vytvářet řešení na míru (např. databáze lodí s parametry a předvýběrem, import hesel pro klientskou složku, a jakékoliv jiné nestandardní věci). Téměř pro každou nestandardní věc je nutné systém různě "ohýbat", což následně ztěžuje údržbu systému.

3. každý vidí do zdrojového kódu a může zneužít nalezených chyb -  stále častěji se šíří napadení open source www systémů.

4. Joomla je systém pomalý, těžkopádný a má omezené možnosti co se programování týče.

5.  tisíce programátorů, kteří systém a jeho moduly vyvíjejí nejsou pro vás k dispozici - prakticky nemůže existovat nikdo, kdo by rozuměl celému systému a všem jeho modulům, protože je vytvořilo tak velké množství lidí.

Open source bych určitě doporučil na projekty typu diskuzní fórum, Wiki, Sociální síť, blog, CRM systém atd. - zde jsou k dispozici vyzkoušená řešení a není potřeba je přizpůsobovat. Určitě mezi ně nepatří CMS a už vůbec ne E-shop.
Zde se zdánlivá úspora na začátku téměř vždy prodraží později.



    Průběžný vývoj - máte zaručeno, že nepřestaneme s vývojem kdy nás napadne
    Podpora - máte se na koho obrátit, u koho si postěžovat


Co se týče komerčních CMS systému, tak rovněž doporučuji maximální
obezřetnost. Rozhodně se neřiďte podle počtu dostupných modulů apod.,
protože vždy nakonec v budoucnu přijdete na funkci, která jako modul
není připravena a bude Vás to stát nemalé náklady donutit danou firmu k
potřebné úpravě (samozřejmě toto závisí na licenci a dalších podmínkách).

Souhlasím, že open-source je dobrá volba. Otázka je jaký open-source. Z osobních zkušeností bych Mambo ani Joomlu a podobné CMS nedoporučoval.

  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 <a href="http://blok.net-vor.cz/prestashop-a-format-data/">Prestashopu lidský formát data</a>). 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 <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL injection</a> 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.

Rate this FAQ

0 (0 Votes)