What about Visual Studio Shell?

Java and the Eclipse platform is an excellent platform for writing IDE’s (and RCP applications). A platform I’ve been working on and with since the Visual Age for Java demise. During the years I’ve become quite proficient in, and also very pleased with API’s and the technology in general. When Microsoft announced Visual Studio Shell (VSS) in 2007, I figured it was a desperate attempt to hold on to customers that otherwise would migrate to the Eclipse platform. Knowing Eclipse I also thought that there was no way VSS would catch on. So I ignored it. Now I’m in a position where I have to take a look at VSS and figure out what it is all about. According to Microsoft, VSS is:

“A streamlined Visual Studio development environment, the Visual Studio Shell provides the core foundation so you can focus on building your application’s unique features.”

Yeah, right. That’s marketing talk, so a deeper investigation is required. Google does not reveal a lot. It appears that most the information available comes from Microsoft which indicates that the community is quite small. No big surprise there since the product is just a year old. Just have to stick to the offical documentation then.
VSS can be distributed in two modes. One for integration with VS and another for freely distributable applications.
Integrated mode
As Microsoft says; “Applications built on the integrated Shell will automatically merge with any other editions of Visual Studio installed on the same machine”. So what this basically means is that if you already have Visual Studio installed, the integrated VSS applications will be available in that installation, more or less as “plug-ins”. However it appears to you will have to make a choice whether to distribute your application as integrated or isolated.
Isolated mode
“Applications built with the isolated Shell will run side-by-side with any other editions of Visual Studio installed on the same machine”. So this is more like an RCP application in Eclipse terminology. (Not that it has anything like the Eclipse platform to offer). Somewhere else Microsoft state:

“Visual Studio Shell (isolated mode) is optimized for the deployment of specialized tools that have full access to Visual Studio services but also have extensive, custom appearance and branding flexibility. Visual Studio features and menu command groups can be easily turned on and off. Application titles, application icons, and splash screens are fully customizable.”

Ok, so you do have full access to Visual Studio services even in isolated mode. That had me confused, what do they mean by services? Looking at the list of available services shed some light. A service is basically a feature of VS such as the intellisense (content assist) engine, help system and access to the file system.
So what do you get?
Microsoft’s getting started page for VSS 2008 has a list of features that supposedly are available in both modes. This list is disappointingly short (and confusing). According to this you get a C# Expression Evaluator for debugging. Now why would you need this when there is no language support?
Adding new stuff
The extensibilty of VSS (in isolated mode) appears to be extremely limited. At least when comparing to Eclipse. The most usable extension points appear to be:

  • Branding; splash screen, application title, icon etc.
  • Menus and commands
  • Debug engine
  • New project dialog, Installed Templates Header
  • Solution file extension. (A solution is more or less a set of projects making up an application).
  • Option file extension

An article on MSDN explains more about the extensibilty points.
Conclusion
VSS appears to be a subset of Visual Studio that allows you to add features and customize a few existing features. By itself it is useless as an IDE because you will have to add language and debug support. Since very little open source exists for VSS (I’m not sure if it would work with the VSS license either) you will either have to implement it yourself or buy what you need.
There does not seem to be a lot of products based on VSS yet, however I succeeded in finding a few.

VSS has obviously not catched on yet, but with the marketing strength of Microsoft it will without doubt do so. In some cases it will probably be a competitor to Eclipse, especially when a huge, open code base and a large community is not a requirement.