Recently, I’ve been giving a lot of thought to the debate over whether it’s better to develop larger plugins that handle many related tasks or smaller, mini-plugins that handle extremely specific tasks. There’s merit to both arguments, but I wanted to give my readers a chance to discuss this and help me come to a decision about how I developer some of my future plugins.
The biggest reason for this article is that I’ve been trying to make a final decision on how one (or multiple as the case may be) of my plugins will be developed. Other plugin developers might also find this discussion useful in helping them make decisions.
The example plugin
I want you to have an example of what I’m asking you to discuss, so I’ll give you a few details on the plugin(s) I’m developing. It is a set of extensions to how comments are handled in WordPress. Some of these extensions include:
- Moderate all non-Enlish comments.
- Automatically delete spam on a schedule.
- Turn on/off comments for specific post types by default (like with posts).
- Moderate all trackbacks and pingbacks.
- And more.
The plugin currently has several options like the above. Basically, it’s just an extension to the “Discussion Settings” page in the WordPress admin. It’s easy to see how some users might only want to use one or two of those settings rather than all of them.
Advantages of a single, multi-task plugin
The following is a list of some of the advantages to running a single plugin:
- You only have to run one plugin. Many people live in fear of running "too many plugins" because it might somehow break their site. Realistically, running too many large or poorly-coded plugins would be more of a problem. While you can't really have too many plugins, this fear from users is something to consider.
- Fewer things to manage. No one likes to update plugins every day. The more plugins you have, the more likely you'll have to update them frequently. Having to only update a single plugin instead of several is easier.
- Fewer translation files. Translators would only have to update and maintain a single translation file for one plugin as opposed to multiple translations for multiple plugins.
Advantages of multiple, single-task plugins
The list below is some of the advantages of using several plugins.
- You don't have to load code you don't need. Using mini plugins means that you only have to load and run code that you absolutely want. With a single plugin, there may be several parts of the plugin that you don't want to use.
- There's generally fewer bugs. Less code in a plugin means there's less chance of bugs arising. It also makes it easier to find and fix bugs more quickly. Thus, allowing plugin developers to quickly get out new releases when they're needed.
- Fewer database options. With multiple plugins, sometimes you don't need an option at all. The plugin simply works. With a single, large plugin, each setting might need to be enabled/disabled.
What are your thoughts?
Think about the example plugin I mentioned early in the post. If I allowed you to make the final decision on whether you’d like to see this developed as a single plugin or multiple plugins, which would you choose?
Now, think about the plugins you currently have installed on your site. Are there some that you’d like to see broken down into smaller plugins that only handled specific tasks?
Are there any other advantages or disadvantages you’d like to share?