Rozhovor s Borkem Bernardem o VersionPressu a WordPressu

Vydal Jan Bien | 03/2016 | Trvalý odkaz

Povídání o tom, jak se z myšlenky malého WordPress pluginu stal mnohamilionový startup, který změní WordPress svět. Podaří se mu to?

VersionPress je revoluční technologická hračka, startup a technologická firma. Tipuji, že VersionPress během několika let velmi významně přispěje ke změně WordPress platformy.

Nejzákladnější myšlenka VersionPressu je zcela prostá: jakákoliv změna na WordPressem poháněném webu vytvoří commit do git repozitáře. A to nejen na na úrovni souborů (na tom nic není), ale i na úrovni databáze (a to je ta revoluční „těžká“ část). Prostá myšlenka, která však otevírá zcela nový svět.

Sledujte, co za vás VP zařídí:

  1. Sledování změn: Co vlastně ten „zatracený“ plugin zapisuje do databáze? Co vlastně klient udělal, že se tohle rozbilo? Změny máte evidované na té nejjemnější úrovni, každý „tah štětce“ má svůj commit.
  2. Vrácení jakékoliv změny: Včera jste zaktualizovali plugin a dneska zjistíte, že nová verze trochu zlobí. Vrátit se k předchozí verzi? Na jedno kliknutí.
  3. Zálohování: Tupá každodenní kopie celého webu do jednoho ohromného zip souboru? Na to zapomeňte. Inkrementální zálohování včetně celé historie změn. Přibyl od včerejška 1 komentář? Záloha má adekvátní velikost jednomu komentáři.
  4. Vývojová prostředí + branch + merge: Vyvíjíte novou verzi webu. Jedním kliknutím vytvoříte neveřejnou vývojovou kopii a na ní měsíc pracujete. Přibudou nové stránky, některé se smažou, změní se šablona, nastavení pluginů, atd… Za měsíce je hotovo, ale co teď? Na produkční verzi mezi tím přibyly nové články, změnil se ceník, a přibylo pár komentářů. Dodnes neřešitelné. S VersionPressem si stáhnete (pull) aktuální verzi do vývojové a obě verze spojíte (merge). Otestujete a pokud vše šlape, pošlete na produkční server (push).
  5. A mnohem více … aneb možnosti jsou limitovány jen možnostmi gitu. A možnosti gitu jsou limitovány jen představivostí uživatele.

Sám jsem podrobně vyzkoušel bod 4 (návod) a funguje to ;)

Když mi tuto „jednoduchou“ myšlenku před 3.5 lety představoval Borek Bernard, otec VersionPressu, považoval jsem ho za blázna. Dnes už nemám moc pochyb o tom, že VP změní svět. A protože Borek je velmi inspirativní a nekonvenční člověk, rozhodl jsem se mu položit pár otázek na VersionPress i WordPress a jeho odpovědi vydat jako rozhovor.

Ale ještě než vás nechám vzlétnout do Borkova myšlenkového světa, nemohu si odpustit jeden citát. Přišel mi totiž emailem v posledním newsletteru Na volné noze právě v době, když jsme s Borkem rokovali. Dokonale ilustruje Borkův obdivuhodný přístup:

„Nemyslím si, že existuje jakákoliv jiná vlastnost tak zásadní pro úspěch, jako je vytrvalost. Ta totiž překoná téměř vše, dokonce i přírodu.“ — John D. Rockefeller

Borku, předevčírem jsme se viděli na pražském WordCampu 2016 a Ty z něj máš určitě ještě čerstvé pocity. Co na konferenci říkáš? Jak se Ti líbila nebo nelíbila, co Tě nejvíc zaujalo?

WordCamp v Praze mi připadá rok od roku lepší. Letos jsem sice kvůli workshopu a vlastní přednášce nestihl navštívit mnoho dalších, ale vše se naštěstí dá dohnat na WordPress.tv a na místě jsem si užil hlavně povídání s mnoha zajímavými lidmi z WordPress komunity. Afterparty byla taky dobrá :)

I když jsi nestihl všechny přednášky, přesto se zeptám: co Tě zaujalo nejvíc?

Já viděl jen @steida-ovu a kousek Jardovy přednášky, takže mám fakt moc malý vzorek, ze kterého vybírat.

Byl jsi také na několika zahraničních WordCampech. Tuším, že v UK a USA. Prozradíš mi, na kterých a kdy jsi byl? Jaká byla jejich atmosféra? Kolem kterých ústředních témat se teď světové WP konfrerence točí?

Vloni jsem byl ve VídniPhiladelphii, letos pak na konferenci A Day of REST v Londýně. To nebyl WordCamp, ale specializovaná konference na téma REST API, a upřímně se mi ze všech WP akcí líbila asi nejvíc, protože byla malá a odborně našlapaná – pořád jsem v jádru geek.

Jinak, co se WordCampů týče, Vídeň mi přišla hodně podobná Praze, takže klobouk dolů před českými organizátory. A Amerika byla zkrátka Amerika – ohromná akce v ohromném kongresovém centru, hlučné party velkých společností, zkrátka takové megalomanství, pro Evropana snad až moc. Na lidské úrovni ale bylo hodně cítit, jak je WordPress v Americe „doma“ – lidi tam mají mezi sebou dlouholeté vazby, viděli se již mnohokrát předtím a v předsálích byla skvělá atmosféra.

V Praze jsi měl zajímavý praktický workshop o VersionPressu. Byl jsi ve Vídni a Philadelphii jako normální účastník, nebo jsi tam měl také přednášku (event. workshop)? Jaké jsou reakce na VersionPress na zahraničních konferencích a jaké u nás?

Workshop je žhavá novinka, technicky jsme ho dokončovali ještě během sobotního dopoledne na WordCampu, ale jinak samozřejmě o VersionPressu mluvím, kde můžu. Nejde jen o šíření povědomí, ale neustále sbírám feedback, jestli řešíme ten správný problém, těmi správnými prostředky a tak dále. Zatím můžu říct, že ohlasy jsou skvělé, a to jak u nás, tak v zahraničí.

Současně je pro lidi trochu těžké dohlédnout důsledky toho, co děláme. Nejde jen o „undo tlačítko“, ale snažíme se do světa WordPressu přinést plná Git workflows, kde je limitem jen představivost. VersionPress například „jen tak mimochodem“ řeší věci jako migrace, staging, search & replace absolutních URL, přechod z HTTP na HTTPS, máme přesah do bezpečnosti, zálohování a tak dále. Mnoho WordPress vývojářů je historicky svázaná vlastními představami, co ve WP jde a „nejde“, takže je pro ně svět bez bariér trochu těžko uchopitelný. O to větší wow-efekt pak VersionPress má.

Dívám se zpětně do naší korespondence a první zpráva, kterou jsi mi o VP poslal, má datum 15.10.2012. To už je 3 a půl roku. Tady je její znění:

„Jak řešíš sync mezi vývojovým prostředím a ostrým nasazením? Nemyslím kompletní přenesení všech souborů a databáze z vývojového prostředí na produkci, ale skutečně jen sync změn (upravilo se nějaké nastavení v databázi plus byla třeba změna v šabloně, chci přenést jen tyto změny). Děláš to manuálně nebo na to máš nějaký postup? Ptal jsem si i na různých fórech, ale odpovědi nic moc…“

Tehdy jsme ještě ani jeden nevěděli, že si už si povídáme o největší českém WP startupu.  Jak se na svá vlastní slova díváš zpětně? Jaké jsi tehdy měl představy a očekávání?

Je dost vtipné vidět to takhle zpětně. Za „oficiální“ start projektu většinou považuji datum 10. dubna 2013, což byl první Honzův commit do repa (pozn.: Jan Voráček je Borkův kolega a hlavní spolu-tvůrce VersionPressu), ale tady je tedy hezky vidět, jak to může být s historii složitější. Za sebe bych dokonce řekl, že cesta k VersionPressu pro mě začala daleko dřív — od verzovaného, ale pomalého file-based CMSka, které jsem napsal někdy v roce 2003, přes práci na větším Drupal webu, kde jsem poprvé bojoval s verzováním obsahu v databázi, až po hrátky s myšlenkou vytvořit odnož (fork) WordPressu a vylepšit právě ten verzovací aspekt. VersionPress je svým způsobem kulminací mnoha předchozích let mého života, a to v pro mě dost nečekané formě, protože profesně bych se u WordPressu před pár lety rozhodně neviděl.

Co se týče mých představ a očekávání tehdy v roce 2012, myslel jsem si především, že VersionPress bude daleko jednodušší projekt. Jak se programátoři běžně seknou tak 2x až 3x, tak tady to bylo aspoň 100x. Zpětně ale chápu, že to bylo nutné – kdyby VersionPress řešil jednoduchý problém, tak už ho někdo před námi udělal.

Jojo, pamatuji si, jak jsi mi pak v listopadu 2012 v kavárně na Smíchově povídal o svém záměru naprogramovat „plugin na verzování pro WordPress“. Mě to sice přišlo jako naprosto revoluční nápad, ale mám-li být upřímný, po té schůzce jsem prakticky vůbec nevěřil, že se Ti to povede. Jaké byly od prvního commitu další významné milníky VersionPressu až do dneška?

Ta schůzka byla vlastně první validací, že má vůbec smysl se do VersionPressu pouštět. Slovo validace pak asi nejlépe vystihuje následující rok a půl, kdy jsme skrze prototypy ověřovali, zda vůbec půjde ideu technicky realizovat (docela dlouho jsme si nebyli jistí), a současně jsem se ptal lidí, jestli by vůbec o něco jako VersionPress stáli (být o tom přesvědčený pouze vnitřně, je velká chyba začínajících “startupistů”; sám jsem ji několikrát udělal). Asi vyvrcholením tohoto období byla crowdfundingová kampaň v půlce roku 2014, od kdy již nebylo pochyb, že VersionPress prostě musíme zkusit udělat.

Druhou půlku roku 2014 jsme strávili intenzivním vývojem, stále tedy jen ve dvou, ale už jsem to vnímal jako full-time projekt. Taky se ale začaly ukazovat dvě věci: zaprvé jsme (klasicky) podcenili šířku problému a rozhodně nevypadalo reálně, že VersionPress doděláme brzy, a zadruhé začaly docházet peníze. Takže problém.

Další etapa je tedy celkem logicky shánění investora…

Jasně, ale ještě bych rád zůstal u té „listopadové schůzce“. Na ní ještě nebyla řeč o tom, že pro klíčovou funkčnost použijete řešení, které již existuje: GIT. Kdy jste přišli k tomu, že budete verzovat v GITu? Zvažovali jste i jiné varianty?

Git byl rozhodně součástí plánu od samého počátku, o ničem jiném jsme ani neuvažovali. Na druhou stranu je ale možné, že jsem ho tehdy nezmínil prostě proto, že se dá považovat za technický detail. Jako uživatel Wordu taky neřeším, jak mají interně udělané undo tlačítko, hlavně že tam je.

Celkově je ale Git a vůbec způsob, jakým verzujeme databázi, pro celý projekt definující. Vybrali jsme si těžkou cestu, která nám už roky vývoje zabrala a další zabere, komplikuje nám hosting a tak dále, ale to, co odemyká, je zkrátka přelomové. Ten posun je zhruba stejný, jako když vývojáři přešli od verzování ve stylu my-project-v1.zip, my-project-v2.zip atd. na Git / GitHub. Zcela to změnilo svět softwarového vývoje.

Velký milník tedy bylo hledání investora v roce 2015. Kdy Tě napadlo udělat z VP startup, který má investory? Jak vůbec celé „shánění“ a domlouvání vypadalo? A jak se pak pak projekt vstupem investora proměnil? Formálně je teď VP klasické s.r.o, že?

Upřímně jsem o investorech nikdy nepřemýšlel a dlouhé roky hledal cesty, jak ufinancovat VersionPress (a předchozí projekty) z vlastních zdrojů. Pokud se to podaří, je to určitě jednodušší, a ve světě WordPressu jde o nejčastější model – plugin businessy začnou něco prodávat, když se zadaří, najmou prvního vývojáře, pracují dál a tak pořád dokola. Zkrátka typický bootstrapping.

Že VersionPress bude muset být jiný, jsem si plně uvědomil na začátku roku 2015. Sešly se v něm totiž dvě věci: jednak je problém daleko obtížnější, než co běžné WordPress pluginy řeší, současně ale s lepší příležitostí: znovu a znovu nám lidi po celém světě potvrzovali, že o tohle enormně stojí, a když má člověk v ruce něco, co ve své finální podobě může ovlivnit podstatnou část internetu, je venture kapitál na místě.

Takže jsem na jaře 2015 začal studovat, jak to v investorském světě chodí, co vůbec různé termíny znamenají, oprášil jsem některé staré kontakty a tak dále. Během jara a brzkého léta jsem pak mluvil s několika investory v Praze a v Londýně a nakonec jsme se v červenci dohodli s Ondřejem Bartošem / Credo Ventures a čtyřmi dalšími investory, mezi které patřil např. Michal Bláha nebo společnost Tapmates. Byla to pro mě extrémně zajímavá zkušenost, ale půjdeme dál, protože o tomto bych vydržel povídat hodinu :)

Od srpna 2015 jsme tedy, jak správně říkáš, standardní české s.r.o., a zatím si nový model fungování nemůžu vynachválit. Máme osvícené investory v tom, že nám do věcí nekecají — věří nám, věří naší vizi a nechávají nás pracovat. Současně ale fungují jako neocenitelná zpětná vazba a neustálá motivace, takže super.

Přizváním investora jsi tedy musel mnohé přehodnotit. Jak se Tvůj přístup a uvažování proměnilo příchodem investora? A nakolik investor do VP „strká nos“? Co chce vidět a vědět a co ho naopak (třeba k Tvému překvapení) ani moc nezajímá?

Asi hlavní rozdíl je, že se vstupem venture kapitálu je zkrátka potřeba k VersionPressu přistupovat ambiciózně. Prodávat pár stovek licencí měsíčně za pár stovek dolarů je hezký „rodinný“ byznys, ale VC fond by do něčeho takového nikdy nešel. Opět, pro VersionPress je to jen a jen dobře, protože zatímco dva roky zpátky byl plán spíš blíž k běžným premium WordPress pluginům a neustále jsem přemýšlel, jak měsíc od měsíce uživit náš malý programátorský tým, nově se dá VersionPress pojmout daleko velkoryseji, dát ho plně zdarma na GitHub, vyvíjet komunitně a tak dále. Mám radost, že věci teď můžeme dělat “správně”.

Máš tedy s VP ambicózní cíle. Dokázal bys nějak rámcově vyčíslit, kam bys rád VP dotáhnul? Kde bude VP za rok, dva, za pět let? Jak velkou firmou bude, kolik bude mít zaměstnanců, co vše bude dělat?

Plánů je mnoho, ale vše se tak rychle vyvíjí a mění, že si netroufnu tady dávat nějaká konkrétní čísla. Znáš to: chceš-li rozesmát Boha, řekni mu své plány do budoucna.

Ještě bych se vrátil k těm ambicím. Teď na konferencích a workshopech ukazuješ, co všechno VP (někdy ne ještě ideálně umí). Některé věci si člověk už dokáže představit (že ty WP-CLI příkazy budou mít nějaké GUI). Ale když bych si chtěl udělat představu o proporcích, jak veliká část toho, co VP za pár let bude, je vidět?

Velmi malá :) VersionPress je dnes (oprávněně) vnímaný jako specializovaný plugin do WordPressu; je to *technologie*. Dovedla nás ale k širšímu vnímání dnešního WordPressu jako platformy, která má určité slabiny, které stojí za to řešit. Verzování určitě zůstává ústředním motivem a například kolem VersionPressu budeme stavět různé SaaS služby (tam je náš business model), ale docela bych si tipnul, že se časem podíváme na další oblasti WordPressu, které by šly vylepšit.

V kterých oblastech vidíš prostor na nějaké významnější vylepšení. (Jak tě znám, tak ten seznam asi bude dost dlouhý.) Vy už si stejně ve VP stejně hrajete i s jinými věcmi, než se verzováním, že?

Často na něco narazíme právě skrze verzování. Dám jeden konkrétní příklad: obrázky. WordPress pro ně má vestavěnou podporu, a dokud se neřeší různá workflows typu více prostředí (staging), pushování na GitHub apod., v zásadě nevadí, že pro každý uploadnutý JPEG vytvoří i několik náhledů, apod. Pokud to ale všechno začneme ukládat do Git repozitáře, začne být problém. Což nás pak vede k úvahám, jestli by vůbec měly být obrázky někde ve složce na uživatelově serveru, jestli by neměly být nějak optimalizované pro výkon, a tak dále.

Co se tvé druhé otázky týče, tento rok by měl být hlavně o tom, abychom *něco* doručili. Když se mě někdo zeptá, kdy už bude VersionPress hotový, je pro mě čím dál obtížnější odpovědět. Protože co to znamená hotový? Podporující základní WordPress? Všech 40 tisíc pluginů na wordpress.org? Aspoň 90% z nich, nebo jiné procento? A co hostingy – musí VersionPress běžet všude, aby se dal považovat za univerzálně použitelný?

VersionPress čím dál víc vypadá, že bude dlouhodobou, postupnou iniciativou, podobně jako se např. WordPress komunita snaží dostat do WordPressu REST API, nebo koneckonců i sám WordPress je dlouhodobou cestou za stále lepším redakčním systémem. Proto i VersionPress bude plně open source, na GitHubu, budeme podporovat komunitní vývoj a tak dále – věřím, že lepší cesta dopředu nevede. Současně jsem ale po těch letech vývoje hladový doručit něco reálně použitelného, a co si budeme povídat, je to potřeba i z pohledu businessu.

Takže brzy nabídneme „hostovaný VersionPress“ – jméno ještě řešíme, ale v zásadě půjde o to, nabídnout skvělé prostředí s WordPressem a VersionPressem. Nepůjde jen o vestavěnou undo funkcionalitu, konečně fungující staging a další věci z našeho projektu, ale i o celkovou experience — hodně se zaměřujeme na rychlost, bezpečnost, spolehlivost a tak dále. Mělo by to být tak dobré, že člověk v podstatě přestane řešit, jestli tam běží WordPress nebo kýho šlaka, prostě to bude skvělá platforma na provozování webů.

Už jsme mluvili o GITu a jeho výnamu pro VP. Jaké další technologie používáte? A na jaké se určitě chystáte?

Na „blbý“ WordPress plugin toho máme poměrně hodně. Vezmu to v bodech:

  • Naše UI je napsané v Reactu + TypeScriptu + WP REST API + webpacku + …
  • Na automatizaci používáme WP-CLI / npm / Gulp.
  • Podstatná část našeho projektu (přes 50% kódu) jsou testy. Jako runner používáme PHPUnit.
  • Na serveru nám některé jednodušší věcí pohání Node.js.
  • Hodně si teď hrajeme s Dockerem, ať už na testování (CI) nebo na hostování kompletního prostředí s VersionPressem.

Co byly ty nejtvrdší technické oříšky, která jste museli rozlousknout? Jak dlouho jste si na nich lámali hlavu?

Ze začátku to bylo obecně o zkoumání, jestli nás WordPress pustí na ta správná místa, jestli jsme schopni pokrýt všechny jeho akce našimi hooky a podobně. Prototyp byl hotový během několika měsíců, ale s různými problémy bojujeme dodnes, ať už se jedná o serializovaná pole v databázi, věčný problém s číselnými ID a podobně.

To zní hodně zajímavě. Říkal jsi mi také, že si hrajete distribucí pluginů Composerem. Jak na tom jste? Jste jediní, kdo to řeší, nebo víš ještě o někom?

To je Honzův „večerní projekt“, zatím do této oblasti neinvestujeme nijak oficiálně. Ale Composer je další dobrý příklad toho, že ve WordPress světě není vše dobře domyšlené, a někdo by měl…

Myslím, že mnoho lidí sleduje VP a Tebe. Zajímalo by mě, jaké WP projekty (nebo blogy, diskuze, atd…) sleduješ Ty, případně Tvůj tým? Do jakých diskuzí případně aktivně přispíváte?

Co se klasických zdrojů týče, stačí mi v podstatě WP Tavern (skvělý, možná nejlepší zdroj novinek ze světa WP) a komunitně střižený ManageWP.org, kam občas i něco nasdílím. Poslední cca půlrok pak hodně ležím v podcastech, skrze které se snažím hlouběji poznat ekosystém WordPressu, zajímavé osobnosti v něm, jaké jsou jejich ambice, motivace a tak dále. Skoro mám až pocit, jako bych s některými z nich byl už kamarád, kolik jsem toho od nich naposlouchal :)

Jaké podcasty posloucháš? A jaké osobnosti z komunity WP Ti přijdou zajímavé a inspirativní?

Z podcastů mám hodně oblíbené Apply Filters, takže Pippin Williamson a Brad Touesnard, a potom Post Status Draft, takže Brian Krogsgard a Joe Hoyle, nebo např. lidi kolem Roots.io podcastu.

Po technické stránce mám velký respekt ke každému, kdo kolem WordPressu dělá něco zajímavého. Tam mi hned naskočí například Daniel Bachhuber (WP-CLI), Ryan McCue (REST API) nebo třeba Ben Word, Austin Pray a další lidi z Roots.io. Pak mám řadu oblíbenců, kteří mě inspirují spíš po business stránce; tam bych zařadil třeba Brada Touesnarda (Delicious Brains / WP Migrate DB Pro), Jasona Cohena (WP Engine), no a samozřejmě průběžně sleduji, co dělá Matt Mullenweg.

Jak vnímáš pověst WordPressu? Já mám někdy pocit, že je WP považován za lowcost. WP vývojáři pak nejsou doceněni stejně dobře, jako vývojáři se srovnatelnou úrovní na jiných platformách. Jak to vnímáš ty?

WordPress má určitě komplikovanou reputaci, ale poslední roky se to hodně lepší. Na západě už WordPress vnímají jako plnohodnotnou platformu, na které si troufnou stavět značky jako Facebook, CNN nebo The New York Times.

A my jsme tradičně 2 roky pozadu, že?

… optimisticky vzato. :)

Kdybys byl pracoval jako zakázkový WP vývojář na volné noze, jaké nástroje by sis pro svou práci vybral? Používal bys nějaký framework, nebo něco, co by Ti více „vedlo ruku“? Jak z tohoto pohledu vnímáš návrh API WordPressu? Jaké vidíš slabé a jaké silné stránky?

Nikdy jsem jako zakázkový WP vývojář nepracoval, takže toto není můj obor, ale podobných frameworků vznikla celá řada – dokonce máme jeden i v České republice (WP Framework od kluků z KT Studia). Takže ta potřeba tam evidentně, jak říkáš.

Jasně, ale neříkej mi, že jako vývojář nemáš na API WordPressu žádný názor? :)

To mám :) Základ je v podstatě hromada globálních funkcí, hooků a akcí, nad čímž se klasický programátor trochu oklepe, ale jsou i alternativní API, a například REST API nebo interakce skrze WP-CLI, a ta jsou v pořádku.

Borku, děkuji Ti za odpovědi na všechny mé otázky. Přeji, ať se Tobě i celému VersionPressu nadále daří! Pokud bys chtěl ještě závěrem cokoliv říct mé “široké čtenářské obci”, máš příležitost.

Taky díky. Pokud se někdo dočetl až sem, chtěl bych jen říct, že VersionPress je technicky nesmírně zajímavý projekt s mnoha oblastmi, kde se dá “vyřádit” (React, Docker, verzování GitHub issues apod.), takže pokud to někoho zaujalo, ať se určitě ozve. Náš skvělý tým může být ještě skvělejší :)

Tak ještě jednou díky moc za rozhovor!

Související

O autorovi

Jan Bien
Jan Bien
Jako kluk jsem si hrál se stavebnicí Merkur, kterou jsem v dospělosti (lze-li o něčem takovém u muže vůbec mluvit) vyměnil za WordPress. S WordPressem kouzlím zajímavé weby, radím lidem, zda je WordPress dobrý nápad pro konkrétní projekt, a občas koučuji jiné freelancery, co a jak s WordPressem podniknout ke spokojenosti své i svých klientů.

Komentáře nejsou povoleny.