In the spring of 2013, I was moved into a “Plugin Czar” position within WebDevStudios. This meant that I was now in charge of the support, maintenance, and development of many of our free plugins available on our WordPress.org account.
Custom Post Type UI is one of our many plugins, and undoubtedly our most popular one. So popular, that it is the first WebDevStudio plugin that has reached one million downloads with an active install count above 200,000. Not only that, but it maintains a 4.6 out of 5 stars rating with an impressive 87 5-stars at the time of this writing. This is quite an impressive feat to achieve since Brad Williams first tagged version 0.1.0 five years ago.
What Exactly Is Custom Post Type UI?
In case you are not familiar with what Custom Post Type UI does, it provides a user interface that someone can use to easily provide settings and labels to be used for registering custom post types and custom taxonomies for their install. The plugin then takes those values and does the actual registration, allowing users to start using them right away. Other features as of the 1.1.0 release include import, export, “get code”, and settings listing functionality. The import and export area helps port the plugin’s settings between installs. The “get code” facilitates moving where the post type and taxonomy registration occurs, while the settings listing acts as a quick view of all your settings with our plugin.
It really takes the pain out of having to type out all the necessary code to register post types or taxonomies and helps non-coders to get a start with extending their sites content. It’s the ease of use and aid to which I attribute its success.
Evolution
Much of the development of the plugin in the early years was the gradual addition of features and fields for associated parameters available to post types and taxonomies. This allowed for more flexibility with the settings for users. By the time I first stepped into maintaining the plugin, we were at the 0.8.0 release, and that was the first release I pushed up to the WordPress.org repository.
During this time, the seeds of the first major shift were planted. I wanted to make it easier to develop the plugin and add new features, but the codebase at the time had slowly become an unintentionally complex. I also felt that the actual UI was not keeping up with the times of the WordPress Dashboard, and also mixed the settings for post types and taxonomies too much.
Because of this, I set out to do the first major update to Custom Post Type UI. This planned update included both a completely redone UI for the users, as well as a much easier to use codebase for myself and others to develop with. In the winter of 2013, I branched off from our GitHub copy and got to work…then development stopped. It wasn’t for any specific reason that things came to a halt, other than just being busy with other work. It wouldn’t be till winter of 2014/2015 when the initial rewrite would be completed and what I thought would be release ready.
Tremulous Times
No matter how much testing you do, or how solid you believe the code to be, massive codebase overhauls are always going to be difficult and rarely go off without a hitch. This is definitely true with Custom Post Type UI in early 2015. Not enough testing went into the changes for Custom Post Type UI 0.9.0, and I will not point blame at any specific aspect of update testing for plugins. It just is what it is. Very shortly after the first attempt at the 0.9.0 release, the forums lit up citing various issues that became evident as users clicked the update button. Live sites were encountering issues and broken links, and it was related to the new release.
I got a very nice tip from the WordPress Plugin Moderation team about doing another release that simply re-installs the last working version. This idea, coupled with the fact that I preserved the original settings and was simply converting the saved settings into a new option row honestly saved myself more headache than I likely realize. I was able to instruct users that they could upgrade to 0.9.5 which would take them back to the previous stable codebase and regain all their original settings while I worked out the missed bugs.
As I started getting bugs taken care of, I started pushing them out, but it was still a long process. One consolation is that I got to get the version as 1.0.x. I feel it is a more fitting version number for such a massive release. It was not until the 1.0.8 release that everything appeared to finally die down and upgrade hickups stopped for users who stuck with it. It is those who stuck with me and worked with me to get their sites back in proper working order that I personally thank the most.
Change Is Hard
Outside of the undetected bugs was the user-facing side of things–the UI for the plugin. The user experience of the new version got mixed reviews from users, especially those who had been using the plugin for a long time already. While some loved it or did not mind the change enough to raise concern, others found it to be harder to use and involved too many clicks to achieve the same results. I did not ignore that feedback, but did put much of it on the backburner for later review. It was my intent to get the functionality back at square one first. While working on the last couple point releases for the 1.0.x line, I was also working on the 1.1.x release. At that point, I started really reviewing the feedback and doing what I could to aid the users there. A lot of focus was put into reducing the amount of clicking needed to get things done, and also getting some new or returning features into the plugin.
Thankfully the 1.1.x release has been notably less rocky and I do not believe there have been any issues reported related to the changes it provided. Much of this can be attributed to the fact that majority of the changes were not related to the setting values. Instead the release was primarily cosmetic and related to display of the user settings.
Looking Beyond One Million
It is hard for me to say what exactly is in store for Custom Post Type UI in the future. At the time of this writing, there are ten open enhancement issues tagged for 1.2. However, I would not call any of them critical to get in as soon as possible. I would love more to get more people up-to-date on the current version and let it be the stable version for awhile. Looking at our stats page, we still have reported active installs using as far back as version 0.6. While I can sit here scratching my head as to why, I also have to consider that that version is stable enough and still meeting the needs of 0.6% of our users. If it is not breaking for them, and there is no security concerns, then it is not all bad that they are still marching on. There is also the minimum version requirement to keep in mind. There are still WordPress installs active and out in the wild that are not running WordPress 3.8 or higher. Until they are, those users are not going to be notified that there is even an update available.
What One Million Downloads Represents
I believe this milestone represents the fact that making features usable and more user-friendly to the “average Joe” can take you a long ways. Custom Post Type UI made it easier for more people to tap into the power and customization ability that custom post types and taxonomies offer to a WordPress powered website. Because of that ease of use, many have added it to their toolbox for every website they have or work on, and recommend it to their friends. All of those points have lead us to where we are today, and where we will continue to go in years to come.
If you have not given Custom Post Type UI a shot, and are interested, you can install it via your Plugin Install screen, or by downloading from the Custom Post Type UI WordPress.org page. We’re super excited about hitting this major milestone, but there’s still work to be done! We would love to hear from you and receive your feedback.