Last week we had the pleasure of chatting with Jay Miller of Microsoft about Visual Studio Code's extension model. As Jay explained, VS Code's extension model makes it possible for users to customize their experience of the software in a way that's:
Free of new overhead for the core team to contend with
These are the same reasons we at Suborbital are excited to be working in the extensibility space, and it was fun to hear how that plays out in VS Code and see those parallels with our own "customizable yet lightweight" vision for the future of SaaS.
Check out the recording on YouTube, or keep reading for a summary!
What should be an extension vs a built-in feature
Microsoft decides what should be an extension versus a built-in feature for VS Code based on a balance between flexibility, maintainability, and performance. Making a new type of functionality or set of customizations a built-in feature avoids compatibility issues, but increases the complexity of supporting all of the features, Furthermore, an accumulation of these creates the potential for degradation of the performance of the software. On the other hand, making that new type of functionality or set of customizations into an extension allows for more customization and flexibility for users, while the maintenance of the extension is handled by the extension's author(s). The VS Code team can give the author a heads-up when a new version of the core software will soon be released so the author can keep ahead of any potential compatibility issues, but the release of that new version of the core software won't be held up by any compatibility fixes.
The VS Code extension API takes a number of steps to ensure the security of extensions in VS Code. Extensions are scanned for viruses and other malicious content, and users can report problems with extensions, which are taken seriously and reviewed. Microsoft does not dictate how extensions are built, as long as they are safe and fit within the framework of extensibility that VS Code handles. And because extensions can only make customizations or create new functionality through endpoints made available by the API, the VS Code team can focus on the capabilities of the API and not on the specifics of the extensions themselves.
What are the challenges of porting VS Code into the browser?
The main challenge of porting VS Code to run in the browser is making sure the experience is as similar as possible to that of the native desktop environment. The base experience is the same, but as yet not all extensions can run in the browser. And that's another advantage of the extension model: it's possible to closely align the core VS Code experience in the browser with the core native experience because that core native experience isn't straining under the weight of extraneous features.
Thanks so much to Jay for hanging out and chatting extensibility with us! You can find Jay on YouTube, and consider checking out the VS Code channel! To find out more about how Suborbital is making SaaS applications extensible, visit suborbital.dev.