VersionPress – seznamte se

Dnes spouštíme crowd-funding kampaň pro náš asi nejambicióznější projekt, VersionPress. V jádru nabízí plnohodnotné verzování WordPress webů (souborů i databáze), v důsledku ale umí o dost víc. Plný popis najdete na oficiálním webu, tady na blogu bych se chtěl trochu soukromější formou podělit o to, co k VersionPressu vedlo a proč je to taková bomba :)

Trable s CMS

Nevím, jestli to máte stejně, ale hledání vhodného CMS mě provází v podstatě celý život. Blog, produktová stránka, různé mikrosajty, multi-uživatelský DevBlog, komunitní web pro kamarády, dokumentace k projektu atd. – pořád řeším, jak nějaký obsah publikovat a spravovat. Za svůj život jsem přešel mezi několika redakčními systémy a i si pár menších napsal, v čemž patrně nejsem výjimka (kdo nějaký aspoň maličký CMS nikdy nenapsal, ať hodí klávesnicí).

Ač mě o principech CMS baví přemýšlet a částečně je i realizovat, celkově vzato je to hrozná pruda. Mám obsah, chci s ním ven a typicky nechci strávit dny a týdny řešením (v horším případě rovnou programováním) CMS. Když jsem si po mnoha letech marných snah a prázdných pokusů uvědomil, že vyvinout a provozovat vlastní CMS není realistické, zakotvil jsem jako miliony dalších u WordPressu (viz například výběr CMS pro DevBlog). Byl to takový sňatek z rozumu – unešený jsem z WordPressu nebyl, ale na druhou stranu nad ním lze postavit celkem libovolný web, na všechno existuje plugin, UI je docela hezké, WordPress se aktivně vyvíjí, lze ho provozovat na mnoha různých hostinzích, s problémem pomůže řada uživatelských fór a tak dále. Můžete mít proti WordPressu mnoho námitek, ale asi nebude náhoda, že je s převahou nejrozšířenější CMS na světě.

Přesto se mi WordPress nikdy nevybíral snadno. Vím, že u něj budou problémy s kvalitou externích pluginů. Vím, že u něj budou problémy s aktualizacemi (rozbitý web poté, co jeden z deseti pluginů zrovna obsahuje chybu nebo nekompatibilitu s novou verzí WP). A že když aktualizace vypnu, velmi pravděpodobně můj web bude náchylný k nějakému bezpečnostnímu útoku. A že bude problematický staging. A že se to bude blbě verzovat v Gitu, když půlka pravdy o webu je na disku a druhá půlka v MySQL databázi. A tak dále, a tak dále.

Zkrátka WordPress je kompromis. Rozumný kompromis, ale kompromis.

A tam někde vznikla myšlenka na VersionPress.

Co je VersionPress

VersionPress je verzovací plugin pro WordPress. Jeho nejvýraznější vlastností je, že verzuje jak soubory, tak databázi, takže v repozitáři (na pozadí používáme Git) je v každém okamžiku kompletní informace o webu jako celku. To zcela mění způsob, jakým mohou administrátoři s WP webem pracovat – například lze rozbitý web opravit jedním kliknutím na “Undo” button, zálohy jsou mnohanásobně úspornější než typické MySQL dumpy, dokážeme synchronizovat testovací / staging / živé prostředí, projekt se dá snadno sdílet přes GitHub a tak dále. Je to zhruba stejný upgrade, jako když se v softwarových projektech zabydlely VCS – i bez nich se software dal nějak vyvíjet, ale pro mě je to třeba už dneska těžko představitelné.

VersionPress proto vnímám jako mnohem víc než malé verzovátko pro WordPress. Je to snaha vzít populární publikační platformu a vyměnit její relativně křehký podvozek za něco řádově spolehlivějšího. Nezmizí tím sice automaticky problémy, ke kterým je WordPress náchylný (stejně jako Git nepomůže vyřešit záludnosti programovacího jazyka X nebo Y), ale když už nastane problém, cesta zpět je rychlá a bezbolestná. Rovněž, důležitá věc je synchronizace více prostředí (test / staging / live), což je u WordPressu historicky problematické a s čímž VersionPress nesmírně pomáhá. Takže zatímco dnes mnoho lidí “testuje” v produkci, s VersionPressem to lze dělat lépe.

Jednoduše řečeno, VersionPress je snaha spojit populární, uživatelsky orientovaný WordPress s technikami, které jsou běžné v “seriózních” softwarových projektech, to vše formou, kterou zvládne běžný Franta uživatel. Nikdy se mi nepodařilo vytvořit CMS zcela podle mých ideálů, ale VersionPress je něco, co WordPress v mých očích posouvá výrazně blíž redakčnímu systému, který si vyberu relativně bez váhání.

Potřebujeme vaši pomoc

Při realizaci VersionPressu jsme měli dvě cesty – buďto to zkusit celé vyvinout potichu, nebo jít s kůží na trh brzo a zkusit získat nějaké zdroje financování ve stylu Kickstarteru. Zvolili jsme druhou cestu (ač přímo na Kickstarteru kvůli jeho pravidlům být nemůžeme), především proto, že VersionPress je technicky hodně ambiciózní a jeho implementace je běh na dlouhou trať. Verzování databáze je obecně těžký problém a další velkou výzvou budou různé externí pluginy, které v databázi dělají různé “zajímavé” věci, potřebujeme rozchodit Git na běžném LAMP hostingu a tak dále. Práce je zkrátka moře a není realistické plně realizovat VersionPress po večerech.

Proto jsme dnes spustili crowd-funding kampaň, která poběží v průběhu června. Pokud děláte s WordPressem a náš projekt by pro vás mohl být užitečný, prosím podpořte ho, ať už finančně nebo třeba tím, že nás zmíníte na svém blogu / FB / Twitteru. Pokud byste nás chtěli podpořit finančně, můžete použít kód CZSK při checkoutu pro získání 50% slevy.

Díky, a snad o trochu posuneme stojaté vody jednoho malého CMSka :)

P.S. VersionPress můžete sledovat na Twitteru nebo lajkovat na Facebooku

P.P.S. Pokud máte otázky nebo zpětnou vazbu, pište prosím do komentářů nebo na můj mail. Rád na cokoliv odpovím.

9 komentářů u “VersionPress – seznamte se
  1. Ahoj Borku,

    Super nápad a zajímavý projekt. moc se mi to líbí. Nebudete mít ale problém s gitem na klasických webhostinzích ?

    díky za odpověď

  2. Ahoj Michale, velmi správná otázka. V první verzi bude Git na serveru pravděpodobně vyžadován, což je na hostingu, jak správně poznamenáváš, problém. Do budoucna ale toto omezení zmizí. Jsou dvě možnosti: buďto se příhodná implementace Gitu v PHP objeví nezávisle na nás (už takové náznaky jsou), nebo ten vývoj zainvestujeme my. Cíl rozhodně je, aby WP+VersionPress běžel všude, kde běží samotný WordPress.

    Díky!

  3. Tohle mě kdysi taky napadlo, dokonce jsem něco málo i zkoušel, ale nakonec jsem ten nápad zahodil jako “nemožný”.

    WordPress je děsný bastl (The Loop WTF?!) a různé komerční pluginy a témata z toho dělají chaos ještě větší.

    Jestli to dokážete rozchodit, jste borci. Pokud díky WordPress API neskončíte dřív v blázinci :)

  4. Martine, i my se při budování prototypu několikrát dostali do situace, kde jsme mysleli, že daný problém nepůjde překonat a budeme muset skončit :) VersionPress je velmi, velmi na hraně, ale ty nejtěžší problémy se nám už podařilo překonat a máme jistotu cca 98%, že VersionPress tak, jak jsme si ho vysnili, půjde zrealizovat.

    Díky za podporu, zkusíme se docentu Chocholouškovi vyhnout :)

  5. Super napad! Mam dotaz ke GITu. Chystate se podporovat GitHub, BitBucket aspol? Jak jiz bylo zmineno lokalni GIT bude na sdilenem hostingu problem.

  6. Martine, GitHub a BitBucket samozřejmě podporovány budou, ale asi jinak, než vás napadlo. Pro fungování VersionPressu totiž potřebujeme distribuovaný VCS (je jedno, jestli Git, Mercurial nebo cokoliv dalšího) a v takovém případě je vždy potřeba mít lokální klon repozitáře. “Problému” s hostingem se tedy nelze nijak jednoduše vyhnout, resp. ne v případě, že chceme podporovat všechny zamýšlené scénáře VersionPressu, což rozhodně chceme.

    Jak jsem odpovídal výše, problém s Gitem na serveru je dočasný. Pro první verzi je prioritou dokončit veškerou funkcionalitu a udělat VersionPress neprůstřelný, na odstranění požadavku na Git na serveru dojde později.

  7. Super nápad, mohla by to být skutečně revoluce, neplánujete to spojit s nějakým webhostingem? Pak by byl problém absence GITu vyřešen.

  8. Díky, Pari. Co se hostingů týče, přemýšlíme evidentně stejným směrem. Víc zatím nemůžu prozradit :)

  9. you are really a excellent webmaster. The site loading speed is incredible.
    It sort of feels that you are doing any distinctive trick.
    In addition, The contents are masterpiece. you have done a wonderful process on this subject!

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Mete pouvat Markdown: **Tun**, *kurzva*, `kd` atd.

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>