iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
😊

More Features Aren't Always Better: The Plugin Edition

に公開

This is a follow-up to my previous article, Adding features isn't always the answer.

After writing the last article, I received various reactions. One of them was, "You can solve this by creating a plugin system." A plugin is a mechanism that allows extending functionality from the outside at various points in the software without modifying the core itself. In this article, I'll talk about how this plugin feature is quite a challenge in its own right. I'm assuming you have the motivation to increase the number of users for your software as much as possible.

Now, let's get into the main topic. First of all, it's difficult to decide on the extension points for plugins and the specifications for how much extension to allow. If you choose the wrong extension points or offer too little capability, it becomes impossible or difficult to create useful plugins, leading to the sad situation where no plugins are developed despite having created the extension points. There's also the problem that the more room you provide for extensions, the higher the security risks become.

Maintenance costs also increase. Since an extension point is a feature in itself, the code becomes more or less complex, and you'll start receiving issues and PRs regarding those points. The more extension points you have, the more these problems multiply, and issues such as multiple plugins interfering with each other and failing to work properly can also occur. Furthermore, even if you want to change the specifications of an extension point, it tends to become a major undertaking because it would trouble existing plugin authors and their users.

Furthermore, issues regarding plugins might be sent to your core software. Most users cannot distinguish whether a problem lies in the core or in a plugin. Each time this happens, you have to direct them by saying, "Please ask the plugin author." If it's not clear whether the issue is with the plugin or the core, it also takes time to isolate the problem.

There are various other difficulties, but I'll leave it at that for this article. Although I've only written about the drawbacks, I don't mean to say that plugin systems are bad. If you can create good extension points and interfaces, it is a very powerful mechanism. However, I hope this article has helped you understand that plugins bring not only benefits but also challenges.

Discussion