David Grudl: Marketing Nette dělají spokojení uživatelé

Dnešního zpovídaného určitě není potřeba čtenářům Zdrojáku dlouho představovat – David Grudl, autor několika známých open source knihoven, propagátor „správného stylu“ programování v PHP a výrazná postava české webařské scény v nejbližších dnech představí novou verzi frameworku Nette

Na úvod – co vlastně děláš, jak se máš? Kromě toho, že připravuješ Nette Framework, děláš školení, tvoříš weby, …

Počkej, ty jsi říkal rozhovor – to mám odpovídat já! Řekls zhruba všechno co dělám.

Dobrá. Takže, blíží se ti vydání Nette…

Mně se Nette, člověče, blíží už roky!

Teď už ale víme, že to má být v pátek. Co je v Nette 2 nového?

S Nette dvojkou dělám už dlouho, když se mě někdo zeptá, co je tam nového, tak odpovídám: Moment, já se musím podívat na tu starší verzi, abych věděl… Vážně, novinek je tolik, že nevím, kde bych začal. Ale neboj, při příležitosti vydání dvojky připravím pro Zdroják přehled.

Takže slovy klasika: Ty vlastně Nette 2 už několik let máš, schováváš si ho sobecky sám pro sebe a komunitě ho nedáš!

Ne, komunita ho má a staví na něm své weby, ačkoli to je zatím alfa. U Nette neznamená „alfa verze“ že to je nefunkční, ale že některé věci se ještě mohou změnit, a pravděpodobně i změní.

Vývoj Nette jde evolučně, nikoliv revolučně, rozvíjejí se věci, co se ukázaly, že jsou fajn, a přidávají se nové. Vyspěly šablony, máme nové debugovací nástroje, databázovou vrstvu, taky řadu drobných vychytávek, které usnadňují používání. Mám takovou zkušenost, že když člověk něco vymyslí, tak trvá asi půl roku, než se ukáže, jestli to byl krok správným směrem. Proto se i vývoj táhne.

Je Nette těžké na naučení?

Já si při vývoji dávám pozor na jedno: kolem Nette vyrůstají programátoři, získávají určité návyky a díky kontaktu s ostatními se zlepšují a zdokonalují. Věci, které je původně přitáhly, je po čase už nezajímají, protože jsou pro ně samozřejmost, a začínají se na framework dívat jinýma očima, na vyšší úrovni, přemýšlejí, co by se tam dalo změnit. Třeba teď je aktuální téma nejzdatnějších programátorů z komunity Dependency Injection. To je věc, která by je před pár lety naprosto nezajímala, protože třeba nebyli na dnešní úrovni. No a já se snažím o to, aby Nette nešlo jen s touhle elitou, ale aby bylo stále chytlavé i pro nováčky.

Právě Dependency Injection je dobrý příklad přístupu k novinkám: já tam nechávám začátečníkovi i jednu statickou třídu, protože použití statických tříd a singletonů je pro začátečníka „myšlenkově“ mnohem jednodušší než DI. Ačkoli programátor, co se DI naučil a pochopil, byť teprve před měsícem, už říká: Já jsem to pochopil, vždyť je to jednoduché, tak proč tam je ten zastaralý způsob? On je tam jen jako alternativa, aby se začátečník mohl snadno „dostat do Nette“.

Používáš PHP dlouho a intenzivně. Co se ti na něm nelíbí?

Já ti odpovím asi takhle: Na PHP mi vadí dvě věci, které se vzájemně ruší. Zaprvé mi vadí, že se ten jazyk absolutně nevyvíjí. A druhá věc, která mi vadí, je, že když už se vyvíjí, tak směrem, který se mi nelíbí.

Proč tedy u PHP vlastně zůstáváš?

Na to zase odpovím slovy z tvého článku: PHP je „dostatečně dobré“. Dnes nevidím jazyk, na který by se firmě tvořící weby nějak zásadně vyplatilo přejít. Firmu zajímá, jak je těžké sehnat dobrého programátora a kolik bude stát. Sehnat dobrého programátora není snadné v žádném jazyce, ale v PHP je to asi nejsnazší. Spolu s dalšími věcmi kolem, od omílané dostupnosti hostingů po získávání lidí, jsi s PHP v poměrně dobré situaci. Ještě jsem neviděl na jiných platformách a v jiných jazycích něco, co by tuhle výhodu dokázalo zásadním způsobem vyvážit.

Jinými slovy: Není nástroj, ve kterém bys standardní web mohl vyvinout s polovičním počtem programátorohodin, což by ti vyvážilo fakt, že je na trhu polovina nebo třetina dostupných a dražších programátorů. Připadá mi, a navíc se mi to i potvrzuje v rozhovorech s lidmi, co shánějí programátory a udržují tým atd., že když to nakonec přepočítají na finance – kolik kdo bere, kolik potřebuje lidí, jak složitý projekt dělá – tak vychází PHP naprosto nejlíp. Přitom ten jazyk je „dostatečně dobrý“ – good enough. Pochopitelně jsou zadání, kde určité jazyky nemají konkurenci, a tady by trvat na PHP bylo naopak neekonomické.

Kdysi jsme se bavili o tom, že se ti líbí C#, nešel bys třeba tam?

Já nemám nic proti Microsoftu, ale ten ekosystém okolo mi nevyhovuje. Víš, jak jsme se dlouho dívali s podivem na IIS, jak složitě se nahrazovaly věci jako mod_rewrite z Apache. Nebo zobrazování záznamů po stránkách, to se i v nejnovějších MS databázích řeší krkolomně. A právě kvůli tomu všemu C#, což je jinak jazyk, který se podle mne vyvíjí úplně nejvíc, nepoužívám, jen zpovzdálí sleduju. Navíc na ASP.NET se objevil zajímavý framework pozdě, to už jsem měl hotový vlastní framework postavený na PHP, se kterým jsem… no, já to takhle nemůžu říct. Já jsem s ním vlastně neustále nespokojen…

To je asi problém každého autora…

To je otázka, člověče. Já si třeba myslím, že dokud to tak je, je to dobře! Ale jednou se to třeba zlomí, začnu být spokojen, a v tu chvíli předám žezlo někomu jinému.

Jak se vlastně předává open source projekt? Už víš, co se stane ve chvíli, až tě přestane vývoj Nette bavit? Máš vymyšlené předání nástupci…?

Já myslím, že to je něco podobného, jako když jedna diktatura přebírá moc od druhé diktatury. Takže někdo přijede se šalinou, srazí mě, sebere mi přístupové údaje na GitHub a řekne: „Teď jsem tady vládce já!“ Nebo se vyhlásí revoluce, udělá se fork, nazve se to trošku jinak…

David Grudl (vpravo) s Jakubem Vránou, spoluautorem Nette Database

Proč bych si měl vybrat Nette? V čem se liší od ostatních frameworků, zaběhaných a celosvětově používaných?

Jednoznačně určitým stylem práce, „Nette Way“. Já jsem nad tím přemýšlel asi před rokem, když jsme o tom diskutovali s lidmi, a ti mi říkali: Hele, musíš formulovat nějakou „vizi frameworku“. To mi připomnělo takové ty weby korporací, kde je povinná stránka „Naše vize“…

… nebo „Naše mise“…

… nebo „Naše mise“, a tam se dalo deset vět vygenerovaných nějakým generátorem korporátních frází, které neříkaly vůbec nic, ale musely obsahovat slova jako „dynamický“, „strategie“ a tak dále. Tak jsem si říkal: Proč bych měl tohle vytvářet? To nepotřebuju! A pak mi to došlo. Trvalo mi to hrozně dlouho a přišel jsem na to díky školení Nette; taky mi pomohlo, když jsem se zúčastnil školení jiného nejmenovaného frameworku, kde školil přímo autor. Tehdy jsem si uvědomil, v čem se liší přístup Nette.

V čem se liší?

To byl takový AHA! moment. My jsme na školení toho frameworku měli udělat určitý krok, a bylo vidět, že se tam lidi ztrácejí v adresářích, sem tam jim vyskočilo nějaké chybové hlášení, které bylo sice věcně správné, ale moc nepomohlo. Autor musel chodit kolem lidí a všem jim říkal, co tam udělali špatně a opravoval je. A já si uvědomil, že když mně se taková věc stane při mém školení, tak začnu okamžitě přemýšlet, jak té chybě předejít, jak zařídit, aby uživatelé nebyli zmatení…

Tedy že to je tvoje hloupost, ne jejich.

Je to vždycky moje hloupost! Jednoznačně. Pokud tutéž chybu udělá třeba polovina lidí, tak kdo je tady blbej? A pokud je to chyba, které nejsem schopen předejít, tak aspoň formuluju text výjimky tak, aby to bylo návodné. Dokonce v případě jedné výjimky jsme asi půl roku řešili text zprávy, aby lidem došlo, co udělali špatně – a tohle je podle mého ten zásadní rys Nette: Je stavěné tak, aby bylo co nejpoužitelnější a nejvstřícnější.

Vůbec jsem přesvědčen o tom, že pokud vývojář svůj framework sám aktivně nepoužívá a neškolí, nemůže se nikdy dobrat perfektního výsledku.

Proč vzniklo Nette, proč jsi nevzal Zend / Symfony / cokoli a neupravil ho podle svých představ? Proč vlastně vymýšlíš kolo?

Jednak Nette jsem potřeboval už v roce 2004, kdy jsem ho začal vyvíjet, a to ani Zend, Symfony nebo Rails nebyly. Ale i dnes mi občas někdo říká: Proboha, proč vymýšlíš další šablonovací jazyk, když máme milion šablonovacích jazyků? Já na to odpovídám: A jak s ním vyřešíš to či ono? Když pak vidím, jak je to jinde složité, mám hned motivaci pokračovat ve vymýšlení dál. Když mi na školení řekne člověk: Já jsem kodér, přišel jsem se spíš jen podívat, ale šablonovací jazyk Latte o kilometr předběhl to, co znám. Proč to nepropaguješ víc? tak jsem spokojen, protože vidím, že ta práce je dobrá. Plus to, že pak i jejich práce je dobrá, že se v tom, co dělají, snadno vyznají atd.

Tos mě trochu navedl… Čtu různé zahraniční magazíny, a tam jsou třeba články typu „Deset nových zajímavých PHP frameworků“, a teď tam jsou vyjmenované různé obskurní záležitosti, o kterých ví pravděpodobně jen autor a jeho kamarádi – proč tam není Nette?

Důvody jsou dva. Za prvé: Nette nemá anglickou dokumentaci, což je problém, který, jak věřím, velice rychle napravíme; anglická dokumentace by měla vyjít brzy po vydání české, už máme pomocníky, co slíbili, že to přeloží – a já jim chci tady moc poděkovat, protože to jsou prostě věci, které člověk sám udělat nemůže. No a v okamžiku, kdy bude dokumentace, se dá napřít síla na prosazení frameworku v zahraničí.

Počkej, počkej, říkáš: „dá se“ – uděláš to? Sebereš se a pojedeš přednášet o Nette na zahraniční konference?

No to je právě to. Budu hrozně rád, když se najde člověk, který mi s tím bude chtít pomoct, takový Nette evangelista. V ČR už jsou kluci, kteří jezdí po školách a přednáší o Nette. Teď bude potřeba přednášet i v angličtině. Což je pro mne otázka… no… budu to muset zvládnout, jednoho krásného dne se postavit před publikum…

David Grudl přednáší – jak jinak než o Nette

Asi by bylo nejlepší teď razantně nastoupit a do konce roku udělat alespoň tři přednášky na zahraničních konferencích…

No, to by bylo pro začátek ideální. Jak ale prosadit framework ve světě, to mě na vysoké škole neučili. To tě nenaučí, nikdo s tím u nás nemá běžně zkušenost a lidi, kteří takovéhle zkušenosti mají, tak to zase nejsou lidé, se kterými by ses mohl běžně potkat. Ti už dneska jsou někde úplně jinde.

Na druhou stranu – marketing Nette byl od začátku na české poměry poměrně výrazný. Jestli si dobře pamatuju, tak okolo něho byl obrovský hype skoro rok před tím, než vůbec vyšla první verze.

Jo, to bylo až neuvěřitelné. Když jsem četl, jak lidi píšou, že se jim vyplatí počkat na Nette, až vyjde, protože Nette je nejlepší, bylo to až zábavné. Na druhou stranu to na člověka kladlo nároky…

Věřím. Ty jsi vlastně mohl nastavená očekávání jen zklamat…

Tak. Ale vážně – tenhle způsob uvedení, takový pozvolný, kdy jsem pouštěl malé ukázky předem, se nakonec asi vyplatil.

Mě na tom zaujalo, že ty vlastně, jako jeden z mála open source vývojářů v ČR, děláš svým věcem i marketing. To nebývá pravidlem, častěji programátoři něco udělají a pak čekají, až si toho svět všimne… Jak ses k tomu vůbec dostal, jak tě napadlo svoje výtvory takhle „tlačit“?

Já měl vždycky takový příklad toho, jak to nedělat, u tebe – takový ten přístup „až si svět všimne Bloguje“… Ale ne, vážně: To je souhra obrovských náhod, dalo by se to označit úslovím „štěstí přeje připraveným“. Není v tom žádný kalkul, jestli si někdo myslí, že jsem si v roce 2004 založil blog, který mi získal návštěvnost, abych o pět let později tuhle návštěvnost využil k propagaci Nette, tak – ne, žádný takový plán v tom nebyl. Byla to spíš náhoda, byl jsem v pravý čas na pravém místě, a hlavně jsem měl okolo sebe lidi, kteří tomu pomohli.

Když jsme mluvili o dokumentaci – napadlo tě někdy napsat knížku? Nějaké to „Vyvíjíme v Nette“… Nebo že by sis ji od někoho nechal napsat?

No, náznaky stran tohoto jsem už zahlédl v mailech… Co se mě týče – dva kamarádi na podobnou nabídku přikývli, a jejich zkušenosti jsou pro mne dostatečným mementem, abych na takové nabídky nikdy nepřikyvoval. Samozřejmě byl bych rád, kdyby knihu o Nette někdo napsal, pomohl bych mu s tím, dal bych mu materiály, udělal bych korektury, ale sám to psát nechci. Člověk nestihne všechno.

Když o tom mluvíš – jak vlastně děláš na Nette? Jsi tam ten diktátor, co všechny commity schvaluje a celé to sám pevnou rukou řídí, nebo tam máte nějakou volnost?

Jasně, diktátor. Můj přístup je… hm, hele, dám ti příklad: Na fóru někdo napíše nějaký návrh, a ostatní tam píšou „+1“ a tak. Já jim na to odpovídám: Ale tady žádná demokracie nefunguje! Pokud to chceš prosadit, tak dej jasný argument, můžeme o tom diskutovat a když mě ubiješ argumenty, tak máš pravdu – ať tě všichni „plusujou“ nebo „mínusujou“, to je jedno. Takže nejsem ani tak diktátor, co by určoval, co v Nette má být, ale vyžaduju prosazování opodstatněných vě­cí.

Když někdo přijde s požadavkem na featuru, tak musí dát „use case“, kde ji potřebuje. V Nette totiž zásadně nepřipouštím featury typu „dneska mě napadlo, co bychom tam mohli přidat“, protože mám vyzkoušené, že tohle nefunguje. Zajímavé featury jsou ty „teď dělám projekt, a tam by bylo skvělé mít tohle, naimplementované takto, aby se to dobře používalo a šlo by to použít i jinde“.

Necítíš se tak trošku jako zajatec svého vlastního díla?

Ne, mě to totiž baví. Je to asi jediná věc, která mě na vývoji server-side částí dnes baví – psaní Nette. A když tě něco baví, tak se necítíš jako zajatec.

Tak jinak: Neděsí tě to množství lidí, co čekají na to, až něco uděláš?

Spíš mám dojem, že celý vývoj probíhá ve skupince několika lidí. To máš jako na blogu – máš blog a tam ti komentuje skupinka iks lidí, co se víceméně nemění, a ty máš pocit, že se to odehrává mezi vámi. Pak jen trošku nechápeš, proč je u článku 5000 PV, když se přeci bavíte v pěti lidech.

Co tvoje další projekty? Dibi, Texy! – zůstaly udržované, neboj jsi je dal k ledu?

Texy! je věc, která vznikala v určité době, řešila konkrétní úkol – a funguje. Sice jsou nějaké požadavky na změny, ale vzhledem k tomu, kde všude to je nasazené, by například změna chování syntaxe představovala obrovský problém.

A Dibi? To je vlastně součást Nette, ne?

Není. Já do Nette udělal novou databázovou vrstvu… Oni mi sice kluci potom říkali, že už jednu databázovou vrstvu mám, a já si uvědomil, že vlastně jo. Nová vrstva je takový experiment. Všichni si na Dibi pochvalovali, jak se tam skvěle píšou SQL dotazy pomocí modifikátorů, a já si říkal: Možná je čas na databázovou vrstvu, ještě jednodušší, která už ani ty modifikátory mít nebude. A výsledkem je Nette Database.

Co ty a frontendové věci – HTML5, CSS3, JS API a další. Zajímáš se i o tyhle novinky, nebo jsi zažraný do server-side?

Snažím se sledovat jak frameworky, tak jiné technologie, nakonec Nette byl průkopníkem v AJAXu, dnes je v HTML5. Ale dívám se na novinky z pragmatického pohledu. Třeba HTML5 jsem vítal s nadšením, protože jsem měl proti XHTML velké výhrady – to byl jazyk, který nedokázal popsat ani HTML stránku a musel si vypomáhat berličkami. Například takový atribut class, který už je vlastně serializací dat bez podpory v DOM. Nebo absence logických atributů, polofunkční syntaxe pro komentáře a tak dále.

Co mi chybělo nejvíc, a z čeho mám při přechodu na HTML5 velkou radost, to jsou datové atributy. Nette 2 generuje kód v HTML5 a data atributy používá – tím pádem je to zpětně kompatibilní s čímkoli, s výjimkou XHTML1. Ačkoli, dalo by se to možná řešit rozšířením DTD… Datové atributy společně s jQuery výrazně zjednodušují AJAX, což je klíčová technologie; framework je dneska už napůl serverová, napůl frontendová věc.

Zároveň jsem ale pragmatik – třeba nový návrh formulářů v HTML5 je značně nedotažený a nechci stavět na něčem, co se mění pod rukama.

Pod vlivem Rails a Djanga se i do PHP šíří generátory kódu, co ti ty části, které píšeš pořád dokola, vygenerují za tebe. Chystáš něco takového do Nette?

Nette se bez generátorů obejde, protože kombinuje komponentový a MVC přístup. Takže to, co se píše pořád dokola, a co ti ty generátory generují, si můžeš vytvořit jako komponentu. Mně nepřipadá jako správné dělat generátor, protože si říkám, že v okamžiku, kdy potřebuju generovat spoustu podobného kódu, tak na to asi nejdu úplně dobře. Mám ale v plánu do Nette dát komponentu pro administraci. Stáhneš si Nette, vytvoříš projekt, a budeš mít připravenou administraci. Nechci jít cestou generování kódu, ale cestou komponenty, která tohle vyřeší.

Když se dívám do diskusí, tak si říkám – proč má PHP tak špatnou pověst mezi programátory? Že je to „jazyk pro bastliče“ a „lepiče skriptů“…

Dobří programátoři jsou všude, na jazyku zas tolik nezáleží. PHP se snadno naučíš, je tu obrovské množství programátorů, co na fórech poradí, i začátečníkům. A do začátečníků se dobře strefuje: Tohle v jiných jazycích nemáme, tam to jsou samí odborníci, co se nejdřív pět let učili teorii programování.

Otázka zní: A je to dobře? Vždyť žádný učený z nebe nespadl! Ono se to dá otočit a říct taky: Lidé kolem toho a onoho jazyka neumí pracovat se začátečníky, nemají jim co nabídnout! Je těžké klást začátečnické otázky, když si připadáš jako outsider a jako nevítaný vetřelec.

Navíc si vezmi, že ne každý programuje proto, že chce být profesionál – mnohé to jen baví a chtějí si udělat radost. Cuketka začal psát blog o jídle ne proto, že by chtěl být kuchař s pěti michelinskými hvězdami; byl to doktor a jídlo ho bavilo. Proč mu to vyčítat? Věřím tomu, že spousta odborníků mu to vyčítat bude, ale to není argument.

Chceš něco čtenářům vzkázat? Představ si ty komentáře, co pod rozhovorem budou, nadechni se a…

Ne, nějak apriori záporný postoj fakt nemám. Lidé fungují velice pozitivně. Oni ti pomáhají, oni ti dělají vlastně tu nejlepší reklamu, když jsou spokojení. Co si budeme povídat – marketing Nette není založený na tom, že já bych přesvědčoval ostatní; dělají to právě ti druzí.

Lepší větu na závěr jsi ani říct nemohl! Takže ti přeju, ať se daří tobě i Nette a doufám, že se konečně po dvou letech dočkáme pokračování seriálu o Nette na Zdrojáku.

Foto: archiv Zdrojáku,

autoři: Ivana Dvorská, Internet Info; Dušan Šimonovič

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 206

Přehled komentářů

Radek N. Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Petr Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Rubysta Nette 2.0
srigi Symfony2
fanboy Re: Symfony2
Michal Re: Symfony2
Jiří Kuneš Re: Symfony2
David Grudl Re: Symfony2
fanboy Re: Symfony2
David Grudl Re: Symfony2
fanboy Re: Symfony2
David Grudl Re: Symfony2
Cechjos Re: Symfony2
David Grudl Re: Symfony2
Michal Re: Symfony2
David Grudl Re: Symfony2
Vebloud Re: Symfony2
David Grudl Re: Symfony2
Michal Re: Symfony2
David Grudl Re: Symfony2
Michal Re: Symfony2
Jan Tichý Re: Symfony2
David Grudl Re: Symfony2
Oldis Re: Symfony2
Borek Bernard Re: Symfony2
Martin Malý Re: Symfony2
Oldis Re: Symfony2
MW Re: Symfony2
David Grudl Re: Symfony2
Martin Malý Re: Symfony2
Michal Re: Symfony2
David Grudl Re: Symfony2
Martin Malý Re: Symfony2
Michal Re: Symfony2
Tharos Re: Symfony2
Landy Re: Symfony2
Tharos Re: Symfony2
Landy Re: Symfony2
Tharos Re: Symfony2
Tharos Re: Symfony2
landy Re: Symfony2
Tharos Re: Symfony2
Landy Re: Symfony2
Tharos Re: Symfony2
fanboy Re: Symfony2
paranoiq Re: Symfony2
Tharos Re: Symfony2
David Grudl Re: Symfony2
Honza Marek Re: Symfony2
Honza Marek Re: Symfony2
Xificurk Re: Symfony2
David Grudl Re: Symfony2
Honza Marek Re: Symfony2
Martin Hasoň Re: Symfony2
David Grudl Re: Symfony2
Honza Re: Symfony2
Segeda Administrace
Jiří Kuneš Goud Enough
srigi Re: Goud Enough
HosipLan Re: Goud Enough
Petr KDO DELA V PHP tak at se sebere a jde do UK
Petr Janda, @petrjanda (at) twitter Spatna povest PHP
Jiří Knesl Re: Spatna povest PHP
Michal Augustýn Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Mahrew Re: David Grudl: Marketing Nette dělají spokojení uživatelé
fanboy Re: David Grudl: Marketing Nette dělají spokojení uživatelé
ondrej pragmatik
Tharos Re: pragmatik
HosipLan Re: pragmatik
Petr Praus Generátory kódu v Djangu?
Pepa Re: Generátory kódu v Djangu?
Ajax Chybi dokumentace
Jiří Kuneš Re: Chybi dokumentace
Tharos Re: Chybi dokumentace
verajo Re: Chybi dokumentace
Pepa Re: Chybi dokumentace
Sebastian Re: Chybi dokumentace
FAk Re: Chybi dokumentace
ax Re: Chybi dokumentace
Talpa Pokora
Jiří Kuneš Re: Pokora
HosipLan Re: Pokora
plistiak Re: Pokora
talpa Re: Pokora
Hmmm Re: Pokora
Vojtěch Dobeš Re: Pokora
talpa Re: Pokora
Martin Malý Re: Pokora
wikipedista Re: Pokora
Martin Malý Re: Pokora
wikipedista Re: Pokora
Martin Malý Re: Pokora
keff Re: Pokora
wikipedista Re: Pokora
David Grudl Re: Pokora
wikipedista Re: Pokora
David Grudl Re: Pokora
talpa Re: Pokora
Jiří Kosek Re: Pokora
wikipedista Re: Pokora
FAk Re: Pokora
Jakub Vrána Re: Pokora
Jan Tichý Re: Pokora
Martin Malý Re: Pokora
Hmmm Re: Pokora
Jakub Vrána Re: Pokora
Jakub Vrána Re: Pokora
Pepa Re: Pokora
Jakub Vrána Re: Pokora
Pepa Re: Pokora
HosipLan Re: Pokora
Pepa Re: Pokora
Hmmm Re: Pokora
Jakub Vrána Re: Pokora
Pepa Re: Pokora
Jakub Vrána Re: Pokora
Pepa Re: Pokora
Spidy Re: Pokora
Hmmm Re: Pokora
HosipLan Re: Pokora
Jakub Vrána Re: Pokora
Hmmm Re: Pokora
Jakub Vrána Re: Pokora
Hmmm Re: Pokora
Jakub Vrána Re: Pokora
gawan Re: Pokora
Jakub Vrána Re: Pokora
Ondřej Mirtes Re: Pokora
Hmmm Re: Pokora
Jakub Vrána Re: Pokora
Hmmm Re: Pokora
David Grudl Re: Pokora
Timy _ Re: Pokora
Martin Hasoň Re: Pokora
David Grudl Re: Pokora
Martin Hasoň Re: Pokora
David Grudl Re: Pokora
verajo Re: Pokora
v6ak Re: Pokora
Petrr Re: Pokora
David Grudl Re: Pokora
verajo Re: Pokora
paranoiq Re: Pokora
Martin Hasoň Re: Pokora
martin Re: Pokora
lolak Nette
TrSek David ako programator super
HosipLan Re: David ako programator super
Dragonn Re: David ako programator super
DM Re: David ako programator super
blizz Re: David ako programator super
blizz Re: David ako programator super
Jaromír Nette je pro všechny
LeMongoine Vydání Nette
Jiří Kuneš Re: Vydání Nette
David Grudl Re: Vydání Nette
Honza Davide, Davide
Michal Re: Davide, Davide
Hmmm Re: Davide, Davide
David Grudl Re: Davide, Davide
Hmmm Re: Davide, Davide
Jakub Vrána Re: Davide, Davide
David Grudl Re: Davide, Davide
Ondřej Mirtes Re: Davide, Davide
Hmmm Re: Davide, Davide
Magneto Re: Davide, Davide
Hmmm Re: Davide, Davide
HosipLan Re: Davide, Davide
Oldis Re: Davide, Davide
blizz Re: Davide, Davide
:) Re: David Grudl: Marketing Nette dělají spokojení uživatelé
marcela Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Jakub Vrána Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Jakub Vrána Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Michal Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Čelo Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Michal Re: David Grudl: Marketing Nette dělají spokojení uživatelé
gawan Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Jakub Vrána Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Čelo Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Jakub Vrána Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
paranoiq Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
David Grudl Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
frosty22 Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Landy Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Čelo Re: David Grudl: Marketing Nette dělají spokojení uživatelé
jason argonut Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Smokie Re: David Grudl: Marketing Nette dělají spokojení uživatelé
LeMongoine Dokumentace
maryo Re: David Grudl: Marketing Nette dělají spokojení uživatelé
maryo Re: David Grudl: Marketing Nette dělají spokojení uživatelé
David Grudl Re: David Grudl: Marketing Nette dělají spokojení uživatelé
maryo Re: David Grudl: Marketing Nette dělají spokojení uživatelé
Ondřej Škvařil Re: David Grudl: Marketing Nette dělají (ne)spokojení uživatelé
andrejk massively frustrating mess of outdated and inconsistent documentation
Fanda Pěkné
Zdroj: https://www.zdrojak.cz/?p=3495