Plugins Are Outsourced Innovation

Many IDEs offer core features through third-party plugins. This is a big mistake.

If a feature is important, the designer of the IDE should've thought of it, and built it directly into the IDE with native support. Since it's important, it should be tightly integrated with and enjoy the same optimizations as the rest of the application.

Depending on plugins to offer important features means relying on other people to vote on what features the IDE should have. This is abdicating the responsibility of creation. Also, plugins are separated from the rest of the app, and from each other; having lots of plugins means fragmented functionality. An integrated development environment with plugins is literally not integrated.

Plugins also tend to suffer in quality. Plugin developers aren't as invested as the core developers to offer unreasonably high quality. They don't have the insight into the app's internals that one needs to build good, fast software. They don't understand the app's performance model; many an initially performant app ends up being slowed by a popular but inefficient plugin. This is partially because plugin writers are expected to reason about their plugin using the API provided by the app, which is usually (a) a collection of crappy black boxes that (b) can't be easily changed after a while, since now existing plugins are depending on their stability.

Apple eschews plugins in favor of thinking hard about what the most important features are, then building them into the app with an extreme level of quality. This is the right answer. Plugins give lesser designers a means to outsource innovation, which is synonymous with being fucked.

Here at Raven we regard any IDE that offers Vim keybindings through a plugin as a non-competitor.

0 responses