Many IDEs offer core features through third-party plugins. This is a mistake for several reasons:
- If a feature is important, you should think of it, and build it directly into the IDE with native support. Since it's important, it should be tightly integrated with and as optimized as the rest of the application. Depending on plugins to offer important features means depending on other people to vote on what features your app should have, which strongly suggests a lack of vision.
- Plugins are separated from the rest of the app, and from each other, fragmenting the app into siloed modules. This works e.g. on Unix, but an integrated development environment should be integrated. Splitting your functionality into discrete modules defeats the purpose of building an IDE in the first place.
- Plugins tend to suffer in quality. Plugin developers aren't as invested as the core developers to develop unreasonably high-quality software. They don't have enough information about the app's inner workings to make critical decisions: the plugin API is usually a complete black box, and there's no way for them to interact directly with the app's internals, so they can't test what effect their plugin has on performance and optimize it accordingly. Stock VSCode and stock Sublime Text both start out fast, but quickly become slow after you install a handful of basic plugins.
Apple does this right: they (1) think hard themselves about what the right set of features are, (2) build them into a single, integrated application, (3) using their native understanding of the app to make every feature as fast as possible. We at Raven find this highly inspiring.
Lesser designers use plugins as a way to outsource innovation, yielding mediocre performance and a mediocre product. We at Raven regard any IDE that offers Vim keybindings through a plugin as a non-competitor.