Behind-the-Scenes: Planning The Future of WP Migrate DB Pro

#

We often get questions about what’s coming next to WP Migrate DB Pro or if we ever plan to include X feature or support Y sites. After shipping our latest major release, the new Theme & Plugin Files addon, a few weeks ago, we started to ask that question ourselves.

For anyone curious about where WP Migrate DB Pro is going, this article will give you a peek inside our working roadmap for the next several versions.

Where We’ve Been

Around this time last year, I wrote about why the WP Migrate DB Pro release had taken twice as long as it should have. And here we are again, nearly another year gone by and only one major release to speak of: the new Theme & Plugin Files addon we released a few weeks ago.

The good news is we didn’t repeat the same mistakes this past year. The main reason it took so long is that the minimum version of the Theme & Plugin Files addon turned out to be a lot of work. Transferring files over HTTP in a performant way (as good or better than FTP) and ensuring data integrity (checksum ftw!) was a challenging feat as Peter described in the release post.

The bad news is the technical debt in WP Migrate DB Pro that I wrote about last year slowed us down a lot. And so we’ve decided to focus on servicing technical debt for the next release.

Next Release

Peter has been performing a major reorganization of the code over the past 6 weeks or so, which should speed up development going forward. Believe it or not we’re on track to release that along with an all-new Backups tab later this month. Yup, another major release after just a couple of months!

The Backups tab will simply list the files in your backups folder and have download and delete functionality to start:

Wireframe of the new Backups tab

Please keep in mind that these are wireframes and that the finished product may look significantly different.

This release will also require PHP version 5.4+, so if you still need to use WP Migrate DB Pro on a server running PHP 5.2 or 5.3 you’ll either need to upgrade or use an older version of WP Migrate DB Pro.

If you’ve turned on beta update notices, you should see one very soon. To turn on beta update notices, simply visit the Settings tab in WP Migrate DB Pro.

The Release After Next: 2.0

The release after next is going to be a biggie. The plugin’s Javascript (JS) is in terrible condition. It was written in jQuery six years ago and is a tangled mess of nested callback hell. The team absolutely dreads working on it and it’s painfully slow going to add or update anything in there.

We’re going to throw it all out and start over with React. Why React over Vue.js or another JS framework? I’ll let Peter start the holy war here:

React is the obvious choice for a JavaScript rewrite as it’s been chosen by the Gutenberg team and will be available in WordPress core going forward. I also personally have more experience with React so it’s a no-brainer for me. If you’re here for the holy war, check out the comments of the Vue vs React post I published a couple of months ago. 🔥

Because starting over with React involves heavy updates to the UI, we’re also going to refresh the UI a bit, better grouping settings together and other small details that are long overdue.

Wireframe of the new migration options screen

We’ll also be adding some more significant features, like the option to back up the database without running a migration or to automatically save a recent migration so it can easily be reused or saved as a migration profile.

Wireframe of the profiles screen

A new solid UI foundation with fresh, well-written JS is going to do wonders for us going forward, allowing us to work more quickly and painlessly. Which should mean we can deliver on more features and other product improvements faster.

Beyond 2.0

What should WP Migrate DB Pro look like in a couple of years time? That’s the question we asked ourselves. So we opened Balsamiq and started sketching what our customers have told us they’d like to see and what we’d like to see ourselves.

Although we haven’t prioritized yet, we definitely want to tackle the following items in the future.

Dry Run

Wireframe of the future progress display with option to pause migration

It would be pretty sweet if in addition to pausing a migration before it completes (like you can already), you could view the search and replace changes and decide whether you want to proceed with replacing the database or cancel and make some adjustments before running it again.

Wireframe of the future search and replace changes screen

Friendlier Backups

Backup file names are currently not descriptive at all. It would be nice to know why a backup exists in addition to when it occurred:

Wireframe of the future backups screen

It would also be nice to restore a backup right there on the Backups tab.

Safer Backups

Something that has always irked me about WP Migrate DB Pro’s backups is their location. They’re in a publicly accessible folder! 😬

Sure we suffix each filename with a salt string so it’s hard to guess, but yikes, that’s still not very safe. It would be infinitely better if you could choose an offline folder for them to be saved to instead:

Wireframe of the backups location setting

Independent Connections

Wireframe of the connection options on the Migrate tab

Currently the connection info for remote sites is saved to each profile. But what if you have a few different profiles for the same site and you need to update the connection info? Yup, you need to update each profile. Annoying. Making the connection info independent of profiles will allow you to update it once.

Push/Pull One Post

Once the connection info is independent of profiles, we can do other things with it, like push an individual post to a remote site or pull in a post from a remote site.

Migrate Files without the Database

Although we have an easy little hack for migrating files without the database, it would be great if there was a more intuitive way to do it. We plan to have exactly that:

Wireframe of the migration options screen pointing out the ability to choose to migrate the database or not

Preserving Options

Currently you can preserve the active_plugins option from the wp_options table when performing a migration:

Wireframe of the current Advanced Options in the migration screen

But what about other options, like which theme is active and whether or not the site can be indexed by search engines? We’d like to enable you to easily preserve any option in the wp_options table:

Wireframe of the preserve rows migration options

Currently you can achieve this is with the wpmdb_preserved_options filter, but it will be much more convenient to be able to do it via the UI.

Regular Expressions and Case Sensitivity

Wireframe of the search & replace migration options

Currently WP Migrate DB Pro’s search & replace is case-sensitive and does not allow case-insensitive searches, nor does it allow regular expressions (regex). We’d like you to be able to toggle these on and off.

CLI Command Builder

Wireframe showing a CLI command in the UI

Migration commands can be pretty long and ugly. It’s not usually pleasant to type them out, so we thought it would be handy if you could set up a migration via the UI and it would spit out a CLI command for you to turn into an alias or set up a cron to run it on a schedule.

Import/Export Migration Profiles

Many of our customers have told us that they’d like to import and export migration profiles. We plan to implement this the same way many plugins do: JSON.

Wireframe of the export of migration profiles

We considered allowing you to push/pull profiles but JSON has the advantage of being easily editable. Don’t want to import all the profiles? Just delete that part of the JSON. Need to change the name of a few profiles? Open it in your favorite editor and run a search and replace.

Subsite-to-Subsite for the Multisite Tools Addon

Currently there is one major feature missing from the Multisite Tools addon: the ability to push/pull a subsite (database and media) from one multisite install to another multisite install. We need to tackle this at some point.

CLI Support for the Theme & Plugin Files Addon

We tried to keep the first release of the Theme & Plugin Files addon as minimal as possible to get it released sooner than later. This meant sacrificing features like CLI support. There is currently no CLI support for the Theme & Plugin Files addon but it’s definitely something we want to add in the future.

Speeding Up Migrations

When we built the new high-performance file transfer system for the Theme & Plugin Files addon, we made sure that it could transfer any data, not just files. We plan to swap out the old transfer systems for database and media file migrations which should make a massive speed improvement when migrating data and media files.

Resume Migration on Error

There are few things more frustrating than running a large migration and a network blip causes the whole thing to come crashing to a halt. Currently the only thing you can do is start over and hold your breath again. We plan to have better recovery from errors like this in the future.

Handle Different Table Prefixes

Currently, if you try running a push or pull migration between two sites that have different database table prefixes, you get a warning message like this:

Screenshot of the different database prefix warning message

I think it’s high time we ditch this warning and gracefully handle this for you. It was a complicated problem when we last looked at it years ago but it’s at least worth revisiting.

Conclusion

WP Migrate DB Pro turned five years old this year and people still love it…

https://twitter.com/jackmcconnell/status/1049278775106707458

But as the length of this post demonstrates there is plenty of room for improvement and we’re far from done.

What are the top 3 things you would like to see in WP Migrate DB Pro? Something from this list or something else? Let us know in the comments.

About the Author

Brad Touesnard

As founder of Delicious Brains Inc, Brad has worn many hats. He now spends most of his time managing the product teams and growing the business. Before starting this company, Brad was a freelance web developer, specializing in front-end development.