VersionPress is a version control plugin for WordPress. It versions both files and the database enabling things like site-wide reverts, safe updates, easy staging etc. All on your server.
VersionPress started as a prototype and we're currently building the first public version.
This could be the next big thing
Possibly the best thing about WordPress is how simple it makes most tasks. Just log in to the administration, click here and there and boom, you have three new plugins installed, a new theme activated etc. People love this, and we do too.
There's a flip side to it, however. Once the site is deployed and used by real visitors, those buttons actually become sort of a threat to the site because they make all the changes irreversibly and straight in the production. That is a problem because 3rd party plugins sometimes have bugs, are incompatible with each other, the theme might need updates etc. There are ways to deal with it but it's a tricky job – so tricky that over 70% of WP sites in Alexa Top 1 Million gave up on updates.
And we felt this was just wrong.
WordPress is our CMS of choice, we love it and build many types of websites on it. There is one recurring problem though: once the site is published, how to make changes to it reliably? There will be plugin updates, design changes, we'll sometimes want to deploy new functionality etc.
By default, WordPress has various Install and Update buttons, textareas to edit the source files directly and so on. This sounds nice on paper but is actually pretty scary because all those changes are done in production and irreversibly. It means that sooner or later, any customized WP site will break in some way. It just will.
This is an issue with deep consequences. Probably the worst thing is that many people fear updates and ignore them, meaning that their WP instances are outdated, vulnerable to security attacks and so on. Even for professional WP admins that usually have some ways around it, it is currently not pleasant to deal with The Great Update Problem™.
We wanted to change that.
We are primarily software developers and something occurred to us: the same problem is encountered all the time in our field and actually solved. There is a technique called version control which is very simple in principle – just store a new version after every update – but is extremely powerful in consequences. Just imagine WordPress could do all this:
Any historic version of the site can be restored from the archive and returned to
This sounded too good not to pursue it. So please (drumroll)...
VersionPress is our dream of how to develop and manage WordPress in a much more pleasant way. We took proven practices from software development, applied them to WordPress and packaged everything as an easy-to-use plugin.
The result is exciting. We don't know of any other solution for WordPress that would combine user friendliness and powerful technology in a way that VersionPress does.
VersionPress creates a new version every time something changes, be it new comment, plugin update, some admin action or just anything.
This is the core feature of VersionPress. Technically, we version both files and the database which is a unique and powerful approach.
Maintaining historic versions means that VersionPress can return to any previous state of the site easily. It is always just one click away.
There are two options – either return to a historic version as it existed at that point in time, or just undo some specific change(s) from the history.
The Undo feature is actually smart – you can roll back any change (or multiple changes) from the history without affecting the newer updates. For instance, you can return to an older theme while maintaining newer content updates.
This is often useful and not many undo implementations can do that.
Staging is crucial for reliable updates but has been traditionally bit of a pain to set up and work with.
VersionPress changes that. As it deeply understands what changed in a WP site, the sync between environments is painless and automatic most of the time.
VersionPress is extremely space-efficient when it comes to its internal storage. A site with hundreds of updates will still take just a few megabytes.
Another great thing is the granularity. New version is created after every logical change, not at a fixed time of day.
No matter how you manage your WP site, whether through admin screens or by manually editing the files or the database in an external tool, VersionPress supports that. Use whatever workflow suits you best.
This is a small but very important point. VersionPress needs to integrate deeply with a WP site so we are very happy that it can ship as a standard plugin with all the advantages.
It also means that the data is 100% under your control – on your server – and only you decide where it goes.
Once installed, VersionPress runs silently behind the scenes. You don't need to see it, you don't need to worry about it, it just does its job.
However, should there be any problem with the site, VersionPress is right there to help you out.
We use Git to manage the internal storage. This has many advantages over custom MySQL tables and was an important decision up-front.
Git is an amazing system – used by millions around the world, reliable and supported by many 3rd party tools and services. We love it.
During June 2014, we have been running a crowd-funding campaign for VersionPress here. We didn't fully reach the funding goal but the response from the community was so overwhelming that we decided to go ahead and build the first public version anyway.
If you'd still like to contribute to the development and join the early access program, you can (this is the "early-access" level as it was during the campaign; if you're interested in something else please contact us). First development builds will be available during the summer and the expected release of v1 is in Q4 2014.
For updates, you can follow us on Twitter.
The main issue is not the feature incompleteness; it is that the current prototype can completely break the site under some circumstances. First public release will come when we are 100% sure that that doesn't happen.
In v1, we plan to implement all the core features as described above and make it run on an own server with a clean or relatively mildly customized WordPress instance. This is expected to be delivered in Q4 2014 with preview releases available during the summer to backers from the "Early access" level up. After v1, we plan to focus on supporting more complex WP plugins and to make sure VersionPress works in as many hosting environments as possible.
Yes, it provides some basic version control for some of the contents but VersionPress goes far, far beyond that. Those two things are really not comparable and can actually live happily beside each other.
The founder of the project is Borek Bernard (LinkedIn, Twitter), long-time software developer and blogger from the Czech Republic. He was joined by Jan Voráček (LinkedIn, Twitter) who is a great PHP developer and Borek's colleague for the last few years.