Rozhovor s Matoušem o novinkách v pluginech pro PhpStorm

před 4 lety od Honza Černý  

Pokud používáte PhpStorm, tak zajisté máte nainstalované pluginy pro lepší spolupráci s Nette Framework. Jednotlivě to jsou Nette framework helpers, Latte, Neon, Nette Tester a Nette factory interface generator. Na jejich vzniku a vývoji se historicky podílelo více autorů, Jan Doleček, Jan Tvrdík, David Matějka nebo Jirka Pudil (a určitě další přispěvatelé). Dnes jsem měl tu možnost udělat rozhovor s novým vývojářem, který po delší pauze oživil jejich vývoj, a to Matoušem Němcem.

Ahoj Matouši, zaznamenal jsem teď tvoji velkou aktivitu kolem pluginů pro PhpStorm, které jsou blízké Nette Framework. Jak dlouho sis s vývojem hrál, nežli jsi pustil ven první update? A možná zbytečná otázka, ale co tě k tomu vedlo?

Poprvé jsem s tím přišel do styku asi před dvěma lety. To jsem ale jen koukl do kódu, zhrozil jsem se, protože jsem netušil, co se tam děje a tím to skončilo. Poté někdy minulý rok v listopadu nebo prosinci jsem si řekl, že to takhle dál nejde, že se ty pluginy neposouvají a také jsem měl potřebu s tím pohnout, aby mi ušetřily čas. Takže původní impulz se týkal mých potřeb. Ale jakmile jsem to publikoval na Slacku, tak jsem dostal hodně reakcí a uvědomil si, že to bude větší věc, než bych čekal 😀

Tak nějak už poslední dobou tíhnu k Javě, takže mě motivuje i to, že se v Javě zlepšuji. A abych odpověděl na otázku, je to zatím asi 4 měsíce, co se o to starám.

Výhoda také je, že s původními autory je možné v pohodě komunikovat, a navedli mě, když jsem potřeboval.

Čtyři měsíce je dlouhá i krátká doba, záleží na úhlu pohledu. Myslím, že motivace kladným ohlasem může fungovat jako super hnací pohon. Jak po čtyřech měsících hodnotíš API a obecně dokumentaci k psaní pluginů?

Ano, potěší to, když máš kladné ohlasy, ale je to spíš taková třešnička na dortu. Kdyby mě mělo motivovat pouze toto, tak by to asi dlouho nefungovalo.

Po čtyřech měsících se cítím jako někdo, kdo už ví alespoň něco o vývoji pluginů pro IntelliJ platformy 😀 Stále mám ale rezervy, a to hlavně v oblastech, které nejsou popsané v dokumentaci. O dokumentaci bych řekl, že za posledních pár let ji posunuli a doplnili plno informací. Základní informace tam jsou (teorie i příklady), ale některé věci tam chybí a je pak potřeba to dohledávat v kódu jiných pluginů nebo přímo v kódu od IntelliJ.

Na něco existují odpovědi na JetBrains fóru, ale při vyhledávání na Google je blbé, že často navede na řešení problému z pohledu uživatele PhpStromu a ne vývojáře pluginu.

Začalo to Latte pluginem a dnes už přispíváš i do pluginů pro Neon, Tester a Nette. Máš k některému nějak blíže? Myšleno tak, že tě na něm láká něco zlepšovat víc oproti ostatním?

Ano začalo to Latte pluginem, protože tam mi nejvíc chyběly reference, tedy abych při prokliku z metody viděl, že je použitá v šabloně. Bez toho byl refactoring vždy velké zlo, obzvlášť, když se jednalo o metody s obecným názvem, třeba getName.

Nakonec se má snaha rozšířila i na další pluginy, například v Testeru mi chyběly line markery a run configuration přes remote interpretery. V Neonu zase proklik na použité třídy v konfiguračním souboru a případně na metody použité pod klíčem setup. Tím, že jsem měl už zkušenosti z Latte pluginu, už nebylo tak těžké upravit ty ostatní pluginy.

Stále mě asi nejvíc láká Latte plugin, protože je to takový nejvíc komplexní plugin, který řeší nejvíc věcí. Takže většinou vyvíjím tam a pak aplikuji naučené zkušenosti na ostatní pluginy.

Můžeš shrnout základní hlavní body co v Latte pluginu, který minulý týden přišel do plugin storu, uživatelé najdou?

Za nejdůležitější body vidím to, že nyní je možné pomocí nových maker určit typy proměnných v šabloně. Díky tomu plugin ví, jaké metody, property a konstanty je možné na dané proměnné volat. Plugin také zvýrazní neexistující třídy, metody a další PHP elementy. A co vidím ještě jako velmi důležitou featuru, tak je to našeptávání a completion po našeptání. Nyní třeba doplní párový tag nebo koncovou složenou závorku, pokud chybí. A další takovéto vychytávky, které šetří čas při psaní. Doufám, že do budoucna se bude Latte psát skoro samo 😀

Samozřejmě úplně nejdůležitější je proklik z PHP do Latte na místa, kde jsou použité dané PHP elementy a podpora refactoring rename. Kvůli tomu vznikla ta má iniciativa

Tak to jsi zmínil věci které už uživatelé v pluginu najdou. Máš už rozpracované další věci, na které bychom se mohli těšit? Takové malé nakouknutí pod pokličku?

Ano, momentálně vychytávám Neon plugin, kde bude vylepšené našeptávání základních klíčů spojených s Nette. Celkově budou nyní ty klíče znát svůj typ a ten se bude také kontrolovat, například když někde bude použitý INT i když se vyžaduje BOOL. Reference pro metody použité pod klíčem setup: u definic služeb (ideální by to bylo i v CompilerExtension), ale to ještě nevím, jestli bude možné. Také bych chtěl, aby si NEON uměl tahat extensiony a z nich config schéma, aby to našeptávání fungovalo i pro custom extensiony.

Co se týká Latte pluginu, tak jsou v plánu dvě větší novinky a to je optional chaining a podpora array typehintů, jako třeba string[] nebo FooClass[], aby to správně našeptávalo při použití ve foreach nebo při ArrayAccess.

Díky moc za popis toho, co teď tvoříš a co nás čeká. Pojďme k poslední otázce. Je teď něco, co bych já nebo někdo jiný mohl pro tebe udělat, nějak pomoci? Řešíš finanční podporu vývoje? Nebo jak a kam posílat nápady na vylepšení?

Teď mám v plánu všechny pracovní issues z GISTu převést normálně do issues k jednotlivých repozitářům na GitHub. Takže nápady a co by se hodilo klidně přidávat tam se štítkem enhancement.

Co se týká finanční podpory, tak tu uvítám. Vždycky se lépe programuje, pokud člověka někdo podporuje 🙂 Zatím je na fóru odkaz na PayPal a číslo účtu. Dozvěděl jsem se o možnosti podpory přes Patreon nebo GitHub, kde je prý umožněno posílat donate pravidelně, takže to chci nastavit. Myslím, že je větší a hlavně dlouhodobější motivace dostávat třeba 100 Kč měsíčně než třeba 2000 jednorázově.

Případně pro firmy jsem schopný vystavit fakturu, pokud by si chtěla dát donate do nákladů. Ve výsledku ty vylepšené pluginy šetří peníze hlavně firmám.

Jinak pokud by to někoho hodně zajímalo a chtěl by se také zapojit do vývoje pluginů, tak se rád podělím o zkušenosti s vývojem a můžeme spolupracovat 🙂

Díky za rozhovor

Více o pluginu najdete na Nette forum

Podpořit Matouše můžete na patreon.com/mesour.