Blog

News from the versioned universe

VersionPress 4.0 Alpha

We're happy to announce that after months of development, VersionPress 4.0-alpha1 is ready and available on GitHub. It brings plugin support which means that even complex sites like WooCommerce shops, large magazines etc. will be able to enjoy version control benefits soon. There are also some other nice features like an awesome Slack-like search, branching & merging visualization, support for Composer workflows and more.

VersionPress 4.0 will undergo a full alpha / beta period to gather feedback on the plugin support and this really is the first alpha. Not all planned features are in it but it's a good start.

Plugin support

To get a good idea what v4 is about, let's look back at the previous releases:

  • 1.0 was about a basic Git version control. The internals were already prepared to handle database merging but there was no real way to tap into it.
  • 2.0 exposed the DB merging functionality to the users via a set of WP-CLI commands.
  • 3.0 was a large maintenance release, handling things like serialized data, shortcodes and other things much better.

In all these releases, if a plugin added a custom database table or even stored custom data in tables like wp_options or wp_posts, VersionPress could not guarantee that things like Undo and database merging would work. In practice, there was a gray area of sites that mostly worked but one could not be sure.

VersionPress needs to know about data and actions and v4 is all about that. It's a start of a long journey where more and more plugins will be described using the new definition format VersionPress is offering. It looks like this (an excerpt from @JanVoracek's rough draft of WooCommerce support):

image

In short, every plugin can now contain a .versionpress folder with a couple of relatively simple files that VersionPress picks up and does its magic. Here's the full spec.

Wait, every plugin will need to provide this?

Well, yes and no. We're also building an online repository of these definition files, sort of like what DefinitelyTyped is to TypeScript. We'll provide definitions for the most popular plugins but anyone will be able to contribute and we really hope you guys do 🙂. All VersionPress installations will benefit immediately.

Also, we're working on a fully hosted platform where VersionPress (among other things) will run great and where we will be able to employ some additional tricks to machine-learn the plugin definitions. We'll contribute them back to the open repository so hopefully, plugin support will grow quickly. I expect that by the end of 2017, it will be pretty rare to encounter a popular but unsupported WP site scenario.

As you can imagine, v4.0 is a fairly significant release and if you're a plugin author, please help us get it right. As noted above, we'll be happy to work with so that your users are the first ones to enjoy the benefits of version control.

Other goodness

Amazing improvements are coming to search. It will be very Slack-like, supporting searching for changes done by certain users, of certain types etc., all with world-class autocomplete.

image

Composer workflows are also shipping in v4. This means that if you install plugins, themes or even WordPress itself via Composer, VersionPress will correctly track that. This leads to really small repos, sort of like if an experienced developer hand-crafted them. It's an early support but this will important in the future.

History visualization is a nice UI feature if you work with multiple environments, e.g., dev, staging and production (and VersionPress is all about these workflows). Branching and merging is nicely visualized in the main table:

image

Again, this is an alpha version of the feature, we'll experiment with more ideas soon.

Summary

Key takeaways are:

  • Plugin developers, this release is all about you. Please help us get the v4 right. Chat with us on Gitter, watch the repo, try writing definitions for your plugin; we'll be happy to help!
  • There will be a full alpha + beta release cycle again (we didn't used it since v1). 4.0 final should ship sometime during the fall.
  • This truly is an alpha. It's not feature complete nor stable but already has a ton of work in it and we hope you enjoy it. Get it from GitHub.

Thanks, ✌️,

Borek, on behalf of the VersionPress team

Discuss & subscribe on Reddit:

r/VersionPress