News from the versioned universe

What to expect in VersionPress 2.2 and 3.0

With VersionPress 2.0 released and some infrastructure things sorted out in the past couple of weeks, I'd like to talk about what to expect in VersionPress 3.0 and the interim 2.2 release.

VersionPress 2.2

2.2 will be a compatibility release with WordPress 4.4. (Look, we're mathematically halfway there 🙂 )

After many years, WordPress is adding a new database table for term meta and we need to adapt to that. Funny thing is that if we ran our test suite on WP 4.4 now it would not yield any errors or warnings because stock WordPress doesn't utilize the term meta in any way, however, plugins and themes will in the future and we need to support it.

Also, we are doing some more work on our internal data structures so that they are as close as possible to their final, production-ready state.

BTW, the work on data structures (various “storages” as we call them) is not something we like to do because it affects upgradability from previous releases (commits created by older releases are tricky to undo / roll back to if the format changed). However, this time, all of our storages – for posts, users, options, terms etc. – will follow the same structure so it should be the last big update we ever do.

No user-visible features are planned for 2.2.

VersionPress 3.0

While the initial two releases were groundbreaking in some way or another, the first one introducing automatic Git versioning and the other one bringing painless staging, version 3.0 will focus on many smaller things that are important for an overall usability of VersionPress.

This is what we will be working on in 3.0, specifically:

  • Commit filtering. If you use VersionPress today, it will technically correctly track every change in the database and create an undoable action for it. This is great, except in practice, your site will probably be hit by thousands of spam comments, and you probably don't want to see them. Not only that, you also probably don't want to waste server resources on creating commits for them at all. So we will add support for that, as well as doing plain UI filtering such as “show me changes concerning plugin upgrades only” or “changes done by user XY”. This will be greatly useful.
  • Sorting out frequent DB writes. Imagine a plugin that tracks page views and increases a counter on every visit. Right now, VersionPress creates a commit for every change which is wasteful. It's not so easy to sort this out because eventually, you want to have the view count stored with your data but we will be more clever about it in v3.
  • Support for custom directory layouts. Some people / frameworks use custom directory layout where for example the wp-content folder is renamed to app and sits next to the rest of the WordPress folders. We want to support that.
  • Other core versioning updates. For example, we need to think again about media / uploads, Customizer changes could be tracked better, the initial creation of a Git repository could perhaps be made incrementally so that it works better on large sites, etc.
  • Multi-environment improvements. Cloning & merging was a big new feature of 2.0 and in v3, we will be improving this area e.g. by tracking in which environment the change originated, which would be useful for site history inspection. v3 will probably not yet see a fully usable UI on top of the staging features, that will most likely come in a subsequent update.

Regarding Multisite, we have many people asking about it and support for it is certainly coming at some point but it's a different kind of beast and there are quite a few things to work out. I expect one whole release to be dedicated to Multisite.

Overall, VersionPress 3.0 should bring the core of the product close to what will eventually be a fully usable public release later next year. It should be available in about 2 months from now and will still be marked as an EAP (Early Access) release.

If you have any suggestions on what you'd like to see in VersionPress 3.0 or beyond, please leave us a comment, feedback is always valuable to us.

Discuss & subscribe on Reddit: