One issue with making features optional is that it’s usually harder to write plugins/addons than core features (since you also need to design and maintain an interface for your plugin, and then constrain yourself to using it). In some cases this might be long-term beneficial (better encapsulation), but it’s additional work.
The GNOME people used to talk about this a lot: the reason there’s so few settings or plugins in GNOME is that it makes it much harder to write and test applications, so they strip out options so they can give the best experience for the cases people care most about.
There’s also issues with plugin interface overhead, which normally aren’t a huge problem but are a problem if the whole point of the plugin is to improve performance.
Good point, that makes sense as a consideration. It sounds like a surface area thing. Suppose you have plugins A, B and C. Now you have to make sure that things work with 1) just A, 2) just B, 3) just C, 4) A and B, 5) A and C, 6) B and C, 7), A, B and C, and 8) none. That’s a larger surface area where things can potentially go wrong.
One issue with making features optional is that it’s usually harder to write plugins/addons than core features (since you also need to design and maintain an interface for your plugin, and then constrain yourself to using it). In some cases this might be long-term beneficial (better encapsulation), but it’s additional work.
The GNOME people used to talk about this a lot: the reason there’s so few settings or plugins in GNOME is that it makes it much harder to write and test applications, so they strip out options so they can give the best experience for the cases people care most about.
There’s also issues with plugin interface overhead, which normally aren’t a huge problem but are a problem if the whole point of the plugin is to improve performance.
Good point, that makes sense as a consideration. It sounds like a surface area thing. Suppose you have plugins A, B and C. Now you have to make sure that things work with 1) just A, 2) just B, 3) just C, 4) A and B, 5) A and C, 6) B and C, 7), A, B and C, and 8) none. That’s a larger surface area where things can potentially go wrong.