Archive for March 2008
Visual Studio 2008 isolated mode shell reminds me the Eclipse rich client platform (RCP).
The most important architectural characteristics of Eclipse is the Plug-in architecture, which has concept of Plug-ins, Extensions and Extension-Points.
Plug-ins are the smallest deployable and installable software components of Eclipse. The similar concept in VS is VSPackage. After this eveything began to be very different.
Eclipse plug-ins are pure Java libraries on Java platform.
VS Packages are .NET libraries on COM based on platform through COM interop and MPF.
Eclipse plug-ins are described in XML.
VS replies on registry. VS Packages are using pkgdef and pkgundef files and code attributes.
From the Visual Studio 2008 Shell offcial definition:
The Microsoft Visual Studio 2008 Shell provides a core integrated development environment (IDE) to help you build and ship specialized languages and development tools.
Looks like it is only targetting development tools, not general application platform.
What about DSL then? Bound DSL only to VS shell is really limitting the potentials of DSL.
I have created two DSL projects on codeplex.com.
Agile Planner: A This tool is for agile project teams, who currently are using sticky notes on the wall. With this tool stories, backlog and iterations are managed in a graphic designer, saved as files within visual studio projects and can be exported to images, reports and etc.
SharePoint Services Site Top Navigation DSL: A DSL tool that models top navigation of WSS sites with a code generator that generates PowerShell scripts to create the navigation bar.
All successed with visual studio integrated mode (deploy as vspackages). All stucked with isolated mode (deploy as a stand alone application). It took me 2-3 day each to do DSL model. Now more than a week passed, I still did not finish a shell.
I wish I can host DSL designer directly, because it is really difficult to customize Visual Studio Isolated Shell. I explained in MSDN forum thread Re: Can we host DSL designer in a custom host application?
As using VS isolated shall for DSL, my first difficulty is to organize/hide the out-of-the-box packages, editors, templates. After copied the pkgundef file from the story board designer, web site template is gone, but something like “connect to database”, “class view”, “code definition window” are still there. Those GUIDs are pretty hard to manage.
Second difficulty is to deal with solution-project-file concept in VS. To implement custom project like in the story board designer is not easy. Actually I just want simple File | New, Open, Save …, not to use solution and project at all.
I thought maybe I can hide all out-of-box menus and supply my own menus. Then it comes to the thrid difficulty, which is to customize menus. VSCT is much better then CTC, but it requires editing XML file and matching GUIDs, IDs in code. Compare using visual studio cutomize ribbon and task pane for Word and Excel, how hard it is.
One day, customization of visual studio will become as easy as customization of Office applications. I believe that. But it will still face the requirement of integrating DSL designer with LOB applications. DSL has possible wider usage outside of development(code generation) world. DSL designer is expected to appear in custom applications, SharePoint sites and Office applications. For example, if the DSL designer is hosted in Word, our BA can then use the story board designer while writing the documents.
So please MSFT, consider unleashing the potentials of DSL. Follow the workflow designer brother, free the DSL designer to outside of VS shell.
IMHO, DSL itself can be a great product, not just a visual studio extension.