Feature focus: the Undo functionality

If we should describe VersionPress in layman’s terms we would say it’s “the Undo button for WordPress”. The ability to revert anything and everything is the core feature of VersionPress and is actually quite smart compared to e.g. text editors. In this blog post, I’m going to show how it looks like and what it can do.

Let’s start by saying that VersionPress keeps track of every important action in a WP site and is definitely not restricted to just content or some selected areas. It can revert all kind of actions, some of which are quite advanced, for example:

  • Content updates (new, updated or deleted posts and pages, comments, images etc.)
  • Settings updates (site title, tagline, date format etc.)
  • User changes
  • Plugin installations and uninstallations
  • Theme customizations
  • Whole WP upgrades (for example, it can downgrade from WordPress 3.9 to 3.8 if needs be)
  • … and generally everything that happens on a site

This means that WP admins can approach their sites with a whole new level of confidence. If anything goes ever wrong, it can be undone in a single click.

That takes us to how the UI looks like. (Note that the following screenshot is taken using the current prototype which is a very early preview and not yet polished. For example, the messages will use human friendly names instead of IDs.)

VersionPress: undo and revert functionality

This screenshot shows a site where a couple of posts have been edited, some settings updated, new theme installed and customized etc. For each action, there is a line in a VersionPress log, and for every line except the newest one there are two actions available:

  1. To undo that specific action
  2. To revert (roll back) to a some previous state of a site

You can probably see how these things are both useful, just in a different way.

The “Undo this” functionality is used for instance when you install a new theme, do a couple of customizations to it and don’t like just one of them (for example, you don’t like the background color). So you’d just hit the Undo button and the background color will be back to its default, all other changes untouched. Note that this is something that e.g. MS Word cannot do – it cannot selectively undo actions from the past. VersionPress can.

The “Revert to this” functionality is a complete rollback of a site to some previous state. It is basically the same as clicking the Undo button for all the changes up until that historic revision. For instance, if you experiment with some new plugin, do a couple of changes to it but later decide that it was not a good choice, simply revert to the state before the installation and all the plugin files and database changes will be gone.

So hopefully that showed you how VersionPress can be useful for WP admins. We must admit that even we as creators are still amazed when we use the prototype on some of the test sites and see it do the reverts. This is such a useful thing that we can’t wait to share the working version with you.


VersionPress licensing

Important update: VersionPress will be 100% GNU GPL-licensed! Read more in this blog post.

We have been asked about VersionPress licensing a couple of times already so we thought we’d address that.

When you head over to versionpress.net and scroll down to the campaign section or further down to the FAQ, you’ll find a note that the licensing model is not set in stone yet. This concerns some people and their point is valid – they don’t want to contribute to something they don’t know whether will be open or closed source / commercial. However, from our point of view, this is the most honest thing we can say about licensing at the moment. Let me explain.

First and foremost, we want to see VersionPress built. We believe it is a hugely useful thing for WP admins and we, ourselves, always wanted that something like that existed. It is our top-most priority to build it and properly support it in the long run.

For that, we need to be realistic about funding. The current crowd-funding campaign will cover the initial development (if successful) but think about all the 3rd party plugins that do “interesting” things to WP sites, their combinations, various hosting configurations etc. VersionPress is a huge undertaking and if we want to do this professionally and keep the users (you) happy, realistic funding is key.

That’s why we cannot announce anything definitive about the licensing today. The campaign has been out only for a couple of days and we don’t know, can’t know, how things will work out. For instance, if some major sponsor appears we would be more than happy to make VersionPress available as open source, free to everyone. But what if there isn’t? We believe that in such case, it’s better to offer a reasonably priced plugin than nothing at all.

To sum up, the best we can announce today is that we would love this to be OSS but we’ll need some time to make a final decision on this. If you’re not comfortable with this, please do not contribute to the campaign and we’re sorry that we’ve lost you. However, we hope that many of you understand our situation and will support VersionPress just as a project that makes sense, regardless of the license.

Thank you and if you have any questions, I’ll be happy to answer them.

P.S. Thanks to all the people who brought up this issue on Twitter. Based on your feedback, we have also updated versionpress.net to make things clearer.


Introducing VersionPress

We’re happy to announce a project we’ve been working on for the past few months – VersionPress. It is a version control plugin for WordPress that keeps the whole site, files and the database, in a Git repository. This enables things like site-wide reverts, easy staging, efficient backups, and more. We have also launched a crowd-funding campaign at versionpress.net that you can join if you like what you see here.


The Promise of VersionPress

Versioning has long been a technique used by many different things and projects, from versioned content in Wikipedia or DropBox to professional version control systems used by software developers. In fact, WordPress itself uses version control to manage its development and could hardly live without it. So it’s a bit of an irony that typical WordPress sites cannot easily enjoy the same benefits – for instance, reverting to some previous state is not easy, merging changes from test site to live site is downright difficult, and so on.

The basic idea of VersionPress is to fix that. The only question was, how. The path we’ve chosen was technically demanding but opens up a whole new world of opportunities. Specifically, VersionPress provides these main features:

  • Any change can be easily undone, any historic version of the site can be returned to. This is great for updates – no more broken sites after failed updates, the working version of a site is always just one click away.
  • Built-in staging. We’re currently finalizing how the support will look like but as VersionPress deeply understands the site and can compare it to some other version of the site, we’ll be able to automatically sync changes between test / staging / live environment.
  • Efficient backup. The repository with hundreds or thousands of historic versions is still ridiculously small, so it’s a much better solution than storing MySQL dumps.

One other important point is that we didn’t want VersionPress to be useful only for geeks or technical people so we’ve packaged everything as an easy-to-use plugin. The benefits of versioning should be available to everyone, we believe.

Overall, the promise of VersionPress is to radically improve the experience for WP admins. We hope you like it.

We need your help

VersionPress is a prototype at the moment. We have confirmed that our approach works, however, a lot more work needs to be done should this become a real thing.

And that’s where we need your help. If you like what VersionPress has to offer, please spread the word and consider supporting us via a crowd-funding campaing running at http://versionpress.net/. The campaign will be active during June and we can’t make it without you.


P.S. If you have any comments or questions, I’ll be happy to answer them in the comment section.