How to End-of-Life a Plugin

Yesterday I released a version of Popularity Contest that removed all functionality and simply delivered a message that the plugin was discontinued and not recommended. It was the first time I’ve done this with a plugin, and it turns out I hadn’t thought through some of the ramifications of the changes I made. Here is a brief outline of what I was trying to accomplish and a mistake to avoid should you find yourself in a similar situation.

The reasons Popularity Contest had to die are outlined here. I also wanted to end it’s life in such a way that people weren’t left in the dark about what happened to it. That meant not just removing it from the repository, but updating the repository to let people know what had happened (and point them to the code, etc. if they wanted to continue with it).

I also updated the README so that the message shown to people when they were prompted to upgrade was as clear as possible.

Plugin Discontinued

Of course, it’s foolish to assume people will read things – you want to make the information available to those who do, but you shouldn’t assume people will read the notices before upgrading.

So we’ve established that people will upgrade without realizing that the plugin will :scare: go away :/scare: once they do. I did realize this, but I didn’t think it all the way through.

There are functions in Popularity Contest that are expected to be used as template tags – calls that you add directly to your theme, if desired. When I removed those functions, I caused a situation where sites that were using them would break once they upgraded (until they edited their theme files to remove the template tags, or re-activated the previous version of the plugin).

So that’s the big gotcha – don’t remove any functions that may be coded into themes.

I released version 2.0.1 this morning to bring back the template tag functions in the plugin to avoid this situation. The functions no longer do anything, but at least sites that were using them shouldn’t crash when they upgrade the plugin.

This post is part of the project: Popularity Contest. View the project timeline for more context on this post.