Přejít k navigační liště

Zdroják » PHP » David Grudl: Nette Framework čeká zlomový rok

David Grudl: Nette Framework čeká zlomový rok

Články PHP, Rozhovory

Začátkem roku David Grudl oznámil, že již nadále nebude hlavním vývojářem Nette Frameworku. Vyzpovídali jsme Davida ohledně této změny. Kromě toho se dozvíte, jak Nette Framework vůbec vznikl a dál rozvíjel, a jaká je jeho budoucnost.

Nálepky:

Davide, slyšel jsem, že tě čekají poměrně velké změny. Po mnoha letech chceš skončit s vývojem Nette Frameworku a objevují se dotazy, zda snad nechceš skončit i kompletně s PHP. Co je na tom pravdy?

Jestli s PHP, to nevím, nad tím jsem zatím neuvažoval, ale rozhodl jsem se, že už nebudu dál hlavním programátorem Nette Frameworku. Ale to neznamená, že tím Nette Framework končí.

Tak to mě zajímá, protože Nette se stalo v českém PHP světě řekněme standardem. Nemají teď začít PHP firmy panikařit?

To rozhodně ne. Má se to tak, že už pro mě nebyla radost současným způsobem dál Nette vyvíjet. Framework hodně roste, ale většinu stále programuji sám. A trend neukazoval, že by se to mělo zlepšit, právě naopak. Za rok 2012 podle statistik můj podíl na kódu Nette krásně klesl pod 90 %. Jenže v loňském roce (2013) se to vrátilo na nějakých 95 %.

Původně sis myslel, že se to bude vyvíjet jinak?

Ano. Ono to úzce souvisí s ekonomií open source projektů, o čemž má spousta lidí zkreslené představy.

Když čtu diskuse o open source na Rootu nebo Zdrojáku, tak jedni radí programátorům: “Vydávejte práci jako open source! Jestli vám to nevydělá, tak máte špatný obchodní model. Podívejte na Red Hat, jak ten na open source vydělává.” A pak jsou tu druzí, kteří v open source vidí něco jako komunismus.

Jenže open source v žádném případě není jako komunismus. Open source je čistý kapitalismus. V komunismu lidi držíš proti jejich vůli, míříš na ně samopalem a obeženeš je ostnatým drátem. Zatímco kapitalismus funguje podle lidského vnitřního ekonomického uvažování. Programátory open source nikdo se samopalem a ostnatým drátem nedrží, je to jejich svobodná vůle, musí v tom mít nějaký zájem, vidět nějaký svůj cíl, ať už je to baví, nebo jim to vydělává.

Když si firmy vyvíjejí proprietární frameworky, stojí je to neskutečně mnoho peněz, výsledek není natolik dobrý a musí zaučovat každého nového zaměstnance. Pro všechny zůčastněné je velmi výhodné, když se spojí síly a ten nástroj se vyvíjí společně. A pochopitelně jsou lidi, kteří do toho vkládají víc a jsou i čistí příjemci, těch je asi většina, ti z toho jenom získávají. Pokud je to dobře nastaveno, tak to bude fungovat. Ale v Nette se to nepovedlo nastavit. Hodně za ty roky vyrostlo, už to nebyl projekt, který si píšu pro sebe a s radostí dávám ostatním, ale full-time job. Měl jsem pocit, že se z něj stala kráva, kterou krmím a ostatní dojí. Tím se vytratí nadšení z práce a musí přijít změna.

A můžeš slíbit, že poslední verze, kterou si nedávno vydal, 2.1.0, nebude poslední? Postaráš se o to, aby Nette pokračovalo dál?

Ano, je to moje “dítě” a v žádném případě ho nechci zabít, chci jen změnit způsob jeho vývoje a jsem naprosto přesvědčen, že ta změna pomůže.

David Grudl

Vývoj Nette tedy projde velkou transformací a ty ji budeš řídit?

Budu na to dohlížet. A ještě chci zdůraznit, když říkám, že ten vývoj nefungoval dobře, tak to není věc, kterou bych někomu vyčítal, já jsem v tomhle realista.

Řeknu to takhle. Když jsme s bráchou jako kluci bydleli s mámou, měli jsme službu na mytí nádobí. A když jsme se zrovna nedokázali shodnout, kdo je na řadě, máma šla a nádobí umyla sama. Což ve výsledku vedlo k tomu, že jsme na umývání nádobí kašlali a myla ho máma.

To byl tedy pěkně nevýhodný model. Anebo výhodný. Jak pro koho.

Přesně. Takhle byly nastavené podmínky a prostě to nefungovalo. A já jsem se u Nette stal tou mamkou, která jde a věci udělá, což nevytvářelo dostatečnou motivaci pro ostatní.

Také je potřeba, aby komunita přicházela s nápady a zároveň aby v ní byli lidé, co jim budou naslouchat a budou na ně reagovat. Jako jednotlivec to nemůžeš stíhat, čímž se stáváš překážkou komunitního vývoje.

A nápady od vývojářů přicházely?

Se zpětnou vazbou je to tristní, nevím, jestli jde o národní specifikum nebo je chyba jinde. Dám ti příklad: byl jsem pozván na večírek jedné firmy, která používá Nette, a poprvé jsem se setkal s jejich vývojáři. Probírali jsme framework a oni mi říkali: “Tohle se nám nelíbí, tohle by chtělo udělat jinak.” A já se ptám, zda to napsali třeba na fórum. Nebo na GitHub? A prý ne. Vyjmenovali X věcí, které by se daly zlepšit, ale nikomu o tom neřekli. Komunikace z jejich strany byla nulová. Chtěl jsem se zeptat jejich šéfa, jak je to možné, ale přitom jsem si uvědomil, že vlastně ani žádný jiný tým mi nikdy nepředal plnohodnotný feedback.

Můžeme spekulovat a mnoha důvodech, proč tomu tak je, ale ať už jsou jakékoliv, můj odchod z piedestalu by to měl změnit.

Navíc, ono se říkalo, že problémem Nette je bus factor, a co se stane, když mě srazí šalina. Tak se to konečně teď dozvíme. (smích)

A dokonce ještě za mého života, což je fajn. (smích)

Tady by byla na místě otázka, jestli mi Nette vydělává peníze.

A vydělává?

Na to se dá odpovědět buďto stručně: Ano, vydělává peníze, tudíž je hloupost ho opouštět. Anebo to můžeme rozvést: Vydělávám dost peněz na to, abych mohl dotovat Nette. A to je asi přesnější. Když vydělám měsíčně 100 tisíc (to berte jen jako příklad), tak z toho 50 tisíc vrazím do Nette. A to je hodně. Ať už je to formou přímých investic, nebo především v podobě mé práce. Problém je, že projekt roste, ale už mu víc dávat nemůžu. Každá hodina navíc znamená, že o hodinu méně můžeš fakturovat.

Takže prostá ekonomická úvaha zní: buď se do Nette naleje čas a práce z jiných zdrojů a poroste dál, nebo ne, ale pak je to mrtvý kůň a okamžitě musím přestat do něj investovat.

Máš už konkrétní jména lidí, kteří by tě mohli ve vývoji zastoupit?

Ano, v Nette vím minimálně o pěti top programátorech, kteří ho rozhodně mají kam posunout. A časem se organicky vyvrbí další. Lidi, kteří jsou dobří a budou mít zájem, se objeví, jen tam byl ten efekt s tím umýváním nadobí.

Takže žádná konkrétní jména?

Je úplně zbytečné je říkat, když se podíváte do commitů, tak vidíte, kdo jakým způsobem přispívá. A taky doufám, že se zapojí i někdo další.

Ale domluvili jsme s Vítkem Ježkem, že on bude nyní dělat takového manažera. Což bude putovní funkce, tj. po nějaké době ho bude dělat zas někdo jiný. A tenhle manažer bude dohlížet a úkolovat lidi, aby se splnily konkrétní věci. Ty nemusí souviset s vývojem. Ono nenakomanduješ člověka, aby něco vyvinul, ale okolo je spousta dalších věcí, které je třeba manažersky řešit.

A ty?

Já se budu držet toho, aby vývoj směřoval tím správným směrem, aby se do kódu dostávaly zajímavé věci a naopak se tam nedostávalo něco, co by v něm být nemělo.

Takže budeš dělat code review?

Asi, ale nejspíš to není úplně přesné, protože zároveň bych chtěl i vymýšlet nové věci, které by se mohly v Nette objevovat. Ale už nechci být ten, kdo je bude implementovat.

Sleduješ nějaký jiný projekt, který prošel podobnou historií, kde se můžeš inspirovat?

To je hodně těžké, protože pokud nevidíš dostatečně dovnitř toho projektu, tak vidíš jen tu stránku zvenčí a ta většinou neni vypovídající.

Projekty buď působí úspěšně, nebo dospěly ke krachu. A také si myslím, že téměř každý projekt stejně jako mezilidské vztahy prochází občas určitou krizí a je pak třeba něco změnit. Myslím, že to není nic mimořádného.

Takže Nette Framework je teď v krizi?

Ne, tak bych tomu neříkal. V krizi by byl za nějaký ten rok, kdybych tenhle krok nyní neudělal. Nebo kdybych nevěřil, že jde o krok spráným směrem. Já bych to nazval znovunastartování.

Znovunastartování, aby se projekt časem nedostal do krize?

Přesně tak.

U těch dlouhodobých projektů problém většinou objevíš, až když je hodně pozdě. Ten můj krok teď mnoha lidem přijde nesmyslně razantní, ale kdybychom takhle pokračovali dál, tak se skutečně do té krize dostaneme.

Zdroj: cs.wikipedia.org

Zdroj: cs.wikipedia.org

Máš nějaký odhad, kolik lidí aktuálně Nette používá?

Neumím to odhadnout. Mám pocit, že to tolik lidí není, ale pak vždy přijde šok, třeba když jdeš na PHP konferenci a zeptáš se, zda někdo programuje v Nette a zvednou se v podstatě všechny ruce v sále. Tak to je vždy milé překvapení.

A současně si říkám, že v podstatě v České republice už téměř není kam dál pokračovat. Což je další věc, která tě nutí ke změně.

Takže cílem téhle transformace je i expanze Nette do zahraničí?

To je můj dlouhodobý cíl – orientace směrem na anglicky mluvící svět měla přijít mnohem dřív. Já nečekal, že to bude tak pomalá záležitost.

I když připravíš všechny podmínky, uděláš anglické fórum, uděláš infrastrukturu pro anglickou dokumentaci, na GitHubu jedeš anglicky, tak to vůbec neznamená, že se o tom někdo dozví. Také než komunita přejde na angličtinu, to trvá dva, tři roky. Což je věc, se kterou jsem nepočítal. Myslel jsem si, že už dva roky budeme vše řešit anglicky, ale jde to velmi pozvolna.

Takže existuje už anglické fórum, které nějak žije?

Ano, můžeme říct, že diskuse o vývoji je dnes kompletně v angličtině, tam se už česká strana fóra zavřela.

A opravdu to vývojáři dodržují?

Ano. Občas tedy někdo napíše česky, ale pak mu stejně všichni odpovídají anglicky, aby mu ukázali, že to se tady nedělá.

Ale je nutné rozjet nějakou další aktivitu do zahraničí. Mě Nette Framework vytěžoval víc a víc. Komunita v tomhle případě pomohla překladem dokumentace do angličtiny, ale dosud chybí někdo, kdo by jezdil do ciziny přednášet nebo kdo by napsal články pro zahraniční časopisy. To je taky jeden z důvodů, proč přestávám vyvíjet Nette. Potřebuji víc času, třeba na propagaci v zahraničí.

Před asi 8 lety si napsal: “Kdybych řekl, že Nette jsem 3 roky vymýšlel a měsíc programoval, nebyl bych daleko od pravdy.” Jak to vidíš dnes? Těch 8 let jsi víc vymýšlel, anebo programoval?

Vnímám to stále stejně. Je lepší, když programátor víc přemýšlí, než když víc píše.

Často když něco commitnu, není to commit, který mě zrovna napadl, ale větev, kterou jsem napsal, pak stokrát přepsal a nechal 2 měsíce odležet a až pak řekl: “O.K. dám to tam.”

Tyhle rozpracované věci byly přes git přístupné i ostatním?

Většinou ne.

Jak vzniklo Nette? Někde jsem zahlédl, že už je to 10 let a název si vymyslel ve vaně.

Před 10 lety, když jsem praštil s grafikou, s prodejem a psaní frameworku pro Flash, jsem se rozhodoval, co budu dělat dál. Už mě strašně nebavilo programovat webové aplikace v žádném jazyce, který byl tehdy dostupný, tj. PHP, Python — tehdy zrovna umíral Perl — a .NET platforma. Pro mě to znamenalo začít dělat něco úplně jiného nebo najít způsob, jak si tu práci zpříjemnit. A tak jsem vymyslel Nette.

A vymýšlel jsi ho opravdu několik let?

První veřejná verze dostala označení 0.7. Ve skutečnosti to byla sedmá verze napsaná úplně na zelené louce. Ale přidal jsem tehdy před to nula tečka, aby to nevypadalo hloupě. (smích)

Budeš i nadále školit Nette?

Pro mě je školení strašně důležitou zkušeností. Říkal jsem si, že kdybych věděl, že framework budu jednou školit, udělám ho jednodušší. (smích)

Když vidím, že si lidi s něčím neví rady, hned přemýšlím, jak Nette vylepšit, aby další školení bylo příjemnější. Dnes za den školení zvládneme to, co nám kdysi zabralo dva dny.

A jelikož já si myslím, že tento rok bude pro Nette Framework zlomový a to v tom pozitivním slova smyslu, není důvod se školením končit.

Dočkáme se knížky o Nette? Lidé se na to často ptají.

Věřím, že když se teď lidé více zapojí do dění kolem Nette, vzniknou i nějaké knihy. Ale já to aktuálně neplánuji.

Jaké máš další aktivní projekty kromě Nette? Já vím jen o Texy a Dibi.

Texy je projekt, který není potřeba dál rozvíjet dál, je to funkční projekt, který stačí jen udržovat.

Dibi dnes nahrazuje nový projekt Nette Database. Dibi dále udržuji, ale nevidím v něm další zajímavé příležitosti. Ale začal jsem rozjíždět projekty, které se odvozují od Nette Frameworku.

A sice?

Dá se říct, že rozbíjím Nette Framework na malé části. Prvním projektem je samostatná verze Nette Debuggeru (alias Laděnky), která se jmenuje Tracy. Druhým projektem bude samostaný šablonovací systém Latte.

A pak je tu ještě testovací nástroj Nette Tester. Těmhle projektům se chci věnoval na plno. A budou už čistě v angličtině.

Jedna věc zajímá mě osobně, a to, zda nebudeš teď mít víc času pro psaní článků na Zdroják?

Nevím, jestli budu mít víc času, ale když jsem říkal ve své přednášce:  „Pište pro Zdroják“, tak taky napíšu. Jen to nebude seriál o Nette. Přijde mi hloupé být jediným propagátorem Nette na Zdrojáku.

Souhlasím, to může někomu připadat divné.

Já nemám nic proti tomu, aby člověk propagoval to, co dělá. Naopak. Připadnou mi hloupé postoje jako “Proč tohle píše autor? Proč si to chválí?” No, protože je to dobré! Proč by to nepochválil? Ale není úplně zdravé, pokud jsi jediný, kdo to píše.

Stíhal jsi za poslední roky kromě PHP sféry sledovat i další oblasti vývoje? Zaujal tě za poslední roky významně nějaký nový jazyk, framework, nebo nástroj?

Když se bavíš programováním 30 let, v nejrůznějších jazycích, vysleduješ, že historie se neustále opakuje. Jede to pořád dokola a já už nevím, kolikáté nyní jedu kolo, asi třetí. A ono to začíná být spíš vtipné. Každou chvíli zpátky na stromy a objevujeme to stejné znovu. Takže i z toho důvodu jsem k “novinkám” tak trošku chladnější.

Dneska je třeba velký hype programovat v JavaScriptu Single-page application. Řeší se věci, které jsou na serveru a v prohlížeči dávno vyřešené, jako je třeba dohledatelnost přes vyhledávače nebo pohyb v historii.

Čistě server-side a client-side frameworky jsou dva extrémy, ideál je někde uprostřed. Bude zajímavé sledovat, jak se to bude vyvíjet, ale pokud jde o nějakou blížící se revoluci, jsem zatím v klidu.

Tehdy před 10 lety ses rozhodl, že na PHP postavíš svou kariéru. Kdyby ses měl dnes rozhodnout znovu, jaký programovací jazyk by to byl? Stále PHP?

PHP bylo tehdy dostatečně špatné na to, aby se jednou stalo tím leaderem. Podobné je to dnes s JavaScriptem. Jsou jazyky, které máš pro krásu, radost, pro hraní, pro zajímavé věci a pak jazyk, který je nejpoužívanější. Ve chvíli, kdy píšeš framework, u kterého ti záleží na používanosti, tak PHP v tomhle mělo naprosto nejlepší podmínky. Navíc tehdy nemělo žádný pořádný framework. Takže PHP bych asi volil znovu. Za ty roky jsem se nedostal nikdy do situace, kdy bych si řekl: měl jsem zvolit jiný jazyk nebo platformu.

Takže PHP nevidíš jako mrtvého koně?

Rozhodně ne. Co se týče budoucnosti, ta je vždy naprosto nejistá, ale PHP má výhodu, že už se mu podařilo přežít tolik svých killerů, že není pravděpodobné, aby teď něco PHP zabilo. Naopak, konečně se v něm začínají dít zajímavé věci, iniciativy Facebooku ve virtuálních mašinách pro PHP atd.

Navíc je to jazyk se strašně nízkou vstupní bariérou. To je dobré pro lidi, co začínají programovat. Je to jazyk, který má nejvíc bastličů. Který jiný jazyk se tímhle může pochubit?

To že intelektuální elita přejde na jiný jazyk, to je ta nejvrtkavější věc. Protože ta intelektuální elita, která s nadšením přešla na Ruby, dnes s nadšením přechází na JavaScript. Čímž de facto podráží to pěkné na Ruby, protože byli schopní vyměnit Ruby za něco tak strašně low level jako je “webový assembler” – JavaScript. Mně vyhovuje pop mezi jazyky, tedy PHP.

Budeš mít teď víc času. Na co se nejvíc těšíš?

Chtěl bych zkusit nějaké věci, které nesouvisí nutně s byznysem ani s IT sférou.

Můžeš to víc konkretizovat?

Chtěl bych se pustit do věcí, kde uživatelé nejsou jen programátoři. Těch možností je moc a já to nechci říkat, protože bych to zakřikl. Začít se věnovat nějakému novému oboru. Neříkám zrovna studovat na škole, ale začít prostě dělat i jiné věci.

Přeju, aby se ti to povedlo a díky za rozhovor.

Děkuji.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.

Pocta C64

Za prvopočátek své programátorské kariéry vděčím počítači Commodore 64. Tehdy jsem genialitu návrhu nemohl docenit. Dnes dokážu lehce nahlédnout pod pokličku. Chtěl bych se o to s vámi podělit a vzdát mu hold.