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.

Published
Categorized as Code

6 comments

  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.

    Christopher

  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 comment

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