On maintaining a WordPress plugin for 11 years

Eleven years in and I find myself in a curious surge of development on Redirection.

Let me prefix this with the statement that Redirection is old. I mean, you got that from the title right – 11 years. It’s quite a while. But more specifically I mean that it’s old code. It’s been around since WordPress 1.5 and PHP 4, and a lot of the code and reasons for the code, are based on things that have long since passed.

When I started the plugin it was to cover up some of the mistakes I made as a novice blogger. I released updates without a thought to who was using it. People offered suggestions for new features and I’d include those, also without a thought – why not, it’s all good.

Development of WordPress started increasing in pace. I found myself playing catchup just to keep the plugin working. A lot of code became redundant and technical debt started accumulating. At one point I think the plugin worked on WordPress from versions 1.5 through to 4. Now I only check the last three versions.

Then I became aware that a lot of people were using the plugin. Some 600k active installations, according to the stats. This made me horribly aware that small changes affect a lot of people. Big changes become hard, and I become reluctant to do anything.

And people. They sometimes get angry. In the early days of WordPress people were more forgiving. Maybe I was younger and didn’t notice.

Then I’m referred to as a team. Don’t I have support staff? Maybe I’m a company. Your support sucks, by the way. All of a sudden plugins are commercial enterprises with lots of money being exchanged and I’m trying to squeeze spare time in between work and family.

Some people sent donations. Some people sent $0.01. I was never sure if that was an insult or a misunderstanding.

I had a kid. That really eats into your time. Someone hacked my server via a WordPress vulnerability that I hadn’t updated while my daughter was being born. Nice.

For a long while not much happened with the plugin. I got some grey hair. The world went forward, then backwards. People complained. People suggested it had been abandoned. (Dodgy) people offered money to ‘buy’ it.

Gradually, though, I started trying to modernise it. Unit tests were introduced. Old features were phased out and I focussed on the things people were having problems with. The technical debt was slimmed down.

Recently I started replacing the UI with React. This started with a single page, then another, and soon it will be everything. I’m able to do things better and much faster, and all of a sudden inspiration is back.

Now I find myself compiling JavaScript. When the plugin started this would have been a horrible joke and yet the plugin is now full of build scripts and compilation steps. It’s the 90s returned. And you know what? I’m enjoying it again.

Eleven years. Huh.

6 thoughts on “On maintaining a WordPress plugin for 11 years”

  1. Thanks for sharing the journey, John. Two things stood out for me in your piece.

    First, the never-ending ingratitude and rudeness of complete strangers. Offer something useful for free and they expect you to answer to them like a paid employee. The sad side of human nature.

    Second and far more pleasing, your re-discovery of the fun of coding, the return of your inspiration.

    That’s fantastic and I appreciate your sharing that.


  2. Nice read … I use your Redirection plugin since … 2010 I think? I think I’ve also donated once … Glat to see that you enjoying being a wp developer again!

  3. That is cool to hear. It’s amazing how popular it is. Must have one of the busier support forums for such a “simple” plugin. Had to chuckle about people referring to you as a team. Growth. 😀

  4. I cannot thank you enough for writing that plugin. Seriously, I am probably the grumpiest dev on the planet and yet not only did I actually feel the need to write a review but seek you out and say, from the bottom of my heart, Thank You. You turned a fiddly problem into a joy. Today, you are my hero.

Leave a Reply

Your email address will not be published. Required fields are marked *