I’m currently in the process of a complete rebuild of my WordPress plugin Loco Translate. Releasing version 1.0 was fairly easy two years ago when it had zero users, but rolling out much needed version 2.0 is proving to be quite a different story.
The first problem is that WordPress offers no soft upgrade path for users with automatic updates enabled. Although WordPress can be configured to update the core for minor updates only, plugins are fully replaced as soon as a new “current version” is published. There are also no options for installing different versions (e.g. for rolling back a broken plugin, or trying out a release candidate).
So when I push the button, I really push the button – thousands of websites will be updated overnight and my inbox will be full by morning.
For this reason I am attempting to conduct a “beta” trial (in old speak) except I’ve been disappointed by very little interest (despite the number of people experiencing problems that the new version solves). Part of the problem is that WordPress lacks the tools to aid this process. As a WordPress user, you have two choices: (1) manually install from the development branch, or (2) wait until a “stable” version is released. Aside from the technical gap between these options, it illustrates a somewhat false divide between what is “safe” and what isn’t.
The polarised view is that the development branch is “unstable” and the current version is “stable”. While the former is a very sensible precaution, the latter indicates a false sense of security. I could – right now – release my current version 2.0 and find out the hard way what the problems are. The same people avoiding the beta version out of caution are happy to enable automatic plugin updates and receive the new version just because I said “ship it”.
The truth is that my real development branch is private and I’m only pushing updates to the public trunk that I consider stable enough for beta testing. However, there’s no easy way get this kind of pre-release code tested by the community at large.
So as I see it, the WordPress plugin ecosystem could benefit from a few product cycle features:
- Soft upgrade options that avoid major version bumps for automatically updated plugins.
- More control over which plugin versions are installed, including rollbacks and release candidates.
- A better way of assuring users a plugin is safe to run, other than it simply declaring itself to be stable by merit of being “current”.