Complete Software

One of the more unusual things we strive for with some software is the concept of being complete. In other words, the only changes we make will be to fix bugs. No new features will be introduced.

At first, these plugins may appear to be unmaintained. Seeing that a repository hasn’t had changes in the past year isn’t usually regarded as a good sign in open source. However, this is exactly what we’re striving to achieve with completion.

Complete software should be in real-world production use on either client sites or internally, and watched for bugs that appear. If others run into bugs, these should be fixed where possible. Rearchitecturing the software to fix an edge case is usually not a good idea though.

This stance may be confusing to some users. Maybe they want to use a plugin we develop, but it’s missing one tiny feature that they need. Unless this use case is crucial to our own needs as well, it’s unlikely we’d include this in the plugin. Instead, an ecosystem of extensions on top of the software should be encouraged instead. Generally speaking, making plugins more pluggable is a good idea.

Why not simply accept new features?

Accepting PRs and adding new features isn’t free. Each new feature requires someone to maintain it and ensure it works correctly with other features when those are added. For code supplied by others, this also requires learning the code to ensure it does what it says on the box, and getting it up to the same quality as the rest of the plugin. In addition, every feature requires documentation and support resources, which are definitely not free.

New features are typically better handled in separate plugins which can be enabled as needed and follow their own updating process.

What’s the alternative?

We can’t possibly write code to handle every potential use case, so instead we should encourage a large ecosystem around our plugins. To enable plugins to work coherently, we need to make sure they’re as extensible as WordPress core itself. In addition, we should have a resources page that lists other available plugins, and promotes them as much as possible.