Dnešní díl bude ještě mnohem obecnější, než ten včerejší, ale příště se už dočkáte konkrétních ukázek.

Jak se vymýšlí framework?

Kdybych řekl, že Nette jsem tři roky vymýšlel a měsíc programoval, nebyl bych daleko od pravdy. Zadání totiž znělo: velmi jednoduchý, malý a intuitivní framework s nímž bude tvorba i údržba webových aplikací úplná brnkačka.

Neodpustím si aktuální vsuvku na téma „jednoduchost“:

Poměry prvků v chemických sloučeninách představují vždy malá přirozená čísla. Klíčem k životu jsou pouhé tři prvky – vodík, uhlík a kyslík. DNA si vystačí se čtyřmi nukleovými bázemi. Příroda má ráda nejjednodušší řešení nejkomplexnějších problémů. Říkáme jim geniální řešení.

Geniální řešení se bohužel nedají vymyslet, ty nás mohou pouze napadnout. Když se to náhodou podaří, intuitivně to poznáme. Jsou to totiž ryze Přírodní projevy, podvědomě nás přitahují a vzbuzují v nás úžas. Jenom debil může prohlásit, že „E=mc2“ je jednovečerová záležitost.

Tím v žádném případě nechci říct, že by se mi kdy podařilo něco geniálního vytvořit. Jen mám chuť a snahu se tímto směrem ubírat. Za dosaženou jednoduchostí tedy stojí stovky hodin přemýšlení, permanentní sebekritická nespokojenost, šťastná náhoda, nebo prostě náhlé osvícení, co vás ve tři ráno vzbudí ze snu. Nikoliv omezenost. To jenom, až mi bude někdo vytýkat, proč dělám ramena, když těch 50kB kódu Nette napíše cvičená opice za víkend.

Konec vsuvky.

Tak ještě jednou, jak se vymýšlí framework?

Předně: vymýšlení frameworku je slepou uličkou. Na tom jsem se řádně vypekl hned v začátcích. Naopak k cíli vede myšlenkový experiment: vymyslíte si zadání nějaké webové aplikace a pokusíte se ji s pomocí úžasného (leč neexistujícího) frameworku napsat. Píšete aplikaci tak, aby se vám psala dobře. Rychle. Přehledně. A také aby byla co nejméně náchylná k chybám.

Pak přijde na řadu údržba. Zadání se změnilo, část aplikace je třeba překopat. Sledujete, jak framework pomůže. Pak zkoumáte jiná zadání, hledáte kolizní stavy atd.

Framework však stále neexistuje a tohle všechno se odehrává jen v myšlenkách. Je to hodně zdlouhavé a snad i náročné, nicméně přináší to nejlepší ovoce. Framework si vysníte na konkrétních a ryze praktických úkolech, a pak teprve napíšete.

Jiné frameworky

Už jsem se zmiňoval dříve, po dobu úvah nad Nette jsem se raději moc nedíval na nástroje jiné. Důvodem je efekt „nadšení-vystřízlivění“. Podíváte-li se na hotové řešení, které vás nadchne, přijmete jeho filozofii a uvažujete jen nad tím, co vylepšit, co změnit, co nechat. Myslíte tedy jen v jeho mantinelech. A to bohužel trvá až do fáze „vystřízlivění“, kdy jej přerostete a uvažujete opět svobodně.

Velmi krásným důsledkem tohoto efektu je skutečnost, že existují stovky frameworků (nejen) pro PHP, které se dají obecně rozdělit do tří skupin a v rámci skupiny se podobají jako vejce vejci.

Nicméně i když postupujete metodou „čistá hlava“, musíte stejně počítat s tím, že objevujete kolo! „Moderní“ programátorské techniky jsou často principy známé přes třicet let. Jenže… v takovém případě by právě průzkum jiných řešení byl velmi inspirující a pomohl by vyhnout se úskalím, která už jiní úspěšně překonali. No, pak si vyberte 🙂

Dnes vidím, že návrh Nette se lehce blíží ASP.NET. Tedy v tom, že používá komponenty a událostmi řízený model. V tom se se softwarovými architekty Microsoftu shodnu. Naopak s MVC asi mnoho společného nemá a jestli jsem někdy tvrdil opak, tak jsem záměrně kecal. Z hlediska marketinku je MVC dobrá nálepka.

Licence & spol.

Protože jsem si vybral tu nejsložitější cestu, jak „objevit“ Nette, bylo by velmi špatné si je nechat jen pro sebe. Uvolnění jako open source vidím jako jasnou věc. Také chci zhodnotit ten nekonečný čas, co mi v něm leží. Jak nastavit obchodní model? Pohrávám si s představou, že bych Nette pustil do světa pod nějakou hodně volnou licencí a zdrojem příjmů by byly dobrovolné příspěvky + obchod s věci souvisejícími. Tak uvidíme.