tecosystems

The Plugin Problem

Share via Twitter Share via Facebook Share via Linkedin Share via Reddit

For some time now (e.g., here), I’ve been advising purveyors of platform technologies to steal a page from the Eclipse and Firefox playbook, as those projects have experienced a bit of success along the way. Embracing this role can be painful for vendors and developers alike, implying as it does a deemphasized, more manageable role for the platform while deferring at least a portion of the limelight to its supporting actors: third party extensions/plugins/add-ons.

Counter-intuitive as the notion that software products should limit their ambitions might be, the point is difficult to assail from a historical perspective. The most successful software product in history, Windows, was built in just such a fashion (though it’s gotten away from those roots in recent years).

But it’s also important to emphasize that the benefits afforded by this approach do not come without a cost (though what does, in this life?). The price, in this case, being potential reliability issues. Consider the case of my Firefox 2.0 woes, which may or may not have been due to the Google Toolbar. Or the fact that subsequent to the installation of the Eclipse PyDev client, my Eclipse PHP IDE extension broke completely and utterly. Or the fact it was not damage that I inflicted upon my WordPress theme that forced it to display the same comments on every page – as originally suspected, but a plugin conflict. And so on.

The point here is not to retroactively indict the recommended approach; I remain as firm a believer as ever that the plugin strategy is the soundest for guaranteeing long term success for would-be platforms. But it’s also important for the platform provider to recognize the limitations of this strategy and design accordingly. Can you, for example, help users isolate and and deactivate misbehaving plugins? Or better yet, not permit the misbehavior in the first place?

In some cases, the answer is an easy yes. In others it requires a fundamental refresh of the architecture, framework and otherwise. In all cases, in my opinion, the investment is worth it. Sooner or later a popular platform will run into this problem, so you might as well fix it sooner rather than later.