So you have heard of Domain Specific Languages, maybe even wrote your own. Maybe even rolled it out to the public. Maybe you don't believe you have used a DSL? What about Cascading Style Sheets? Ever used CSS?
Very soon we have to answer a very important set of questions.
How do we use the language? Text Editor? Smarter tools such as Eclipse or Visual Studio? How does it integrate with other languages?
The Common Language Runtime (CLR) puts Microsoft at the front of all this? or does Eclipse have what it takes to adapt?
We have seen it all before
Now I don't particularly like web development, mainly because of the frustrating times I have had in the past, trying to get JavaScript, CSS, HTML and all that jazz communicating well together. I know its not a 'hard thing', but its clumsy. I don't fair well with clumsy.
But its a good example of how different languages communicate and interoperate.
Speaking from a Visual Studio point of view, style sheet support has never truly been Visual Studio's strong point. In fact a lot of designers laugh at the funny way its done. Support of javascript has been limited too, with debugging hard and painful throughout the various versions of VS, as well as lack of true intelisense or understanding of the javascript.
With javascript gettting a second wind under the marketing hype of 'Ajax', which is welcomed, we now finally are beginning to see some sort of decent support for it within Visual Studio. Have a look at Scott's post VS 2008 JavaScript Intellisense. I think you would agree that if this had been there in VS.NET 2003, our websites would be looking better by a small percentage point, as more developers would have felt it was less of a dark hole, and would have learnt more about the language. Now in 2009, perhaps many of them would be sitting with 5 more years of experience in it, rather than just guessing their way through it, because they had to, on prior projects. (Maybe this is the MS camp only?)
8 year cycle
The point is, we need the tools to come along with the technology. However, based on history and experience, we wont really have a decent VS.NET DSL Experience until 8 years after the capabilities of building your own is in place. This means we are around 8 years away from it today. Yes folks, Visual Studio 2018 will be the version you will become productive with domain specific languages.
The cycle tends to be 3 years to get the initial platform up and running suitably. Then parallel 2 years of improvements, with 3 years of further development taking us to the nice version, but only 2 years of polish thereafter brings in the standard expectation of the inside VS.NET seamless experience.
2nd Class Citizens
One of the things we have come accustomed to, is the error squiggles, when something is wrong in our editor. VS.NET is smart enough about our primary language, to tell us potential errors, typos and all sorts of things. This is a great time saver. However, its not as good for the 2nd class languages. For example, a style used in html as class="mystyle", will now inform you that the name does not exist in the stylesheet. We now also have intelisense on the styles within the stylesheet and we can at a click jump from html file to css file directly to the style definition. This took a long time. In fact, a little under 8 years.
Now if all Domain Specific Languages end up being 2nd class citizens, for a long time, we probably will only see 1 or maybe 2 take off into the developer community.
No? But what about VS.NET 2010?
So Stuart Kent's blog on DSL Tools in Visual Studio 2010, declares that it has support for DSL. But how far is it, and what will it actually provide?
Installing the SDK, and attempting to work with anything DSL wise, is complicated to get going. You have to be seriously committed to get anything running whatsoever. Missing guids from the registry, "Template cannot be found", this is all from a clean install.
I am pretty sure, the Extensibility, and Visual Studio support will be limited. It is such a vast, complicated area, I wonder sometimes how fitting it all into Visual Studio is even possible. Reducing the foot print and making it 'easy' in the Visual Studio way is going to take a lot of time, imho.
I think the most likely, optimistic situation is a pre vs.net 2003-ish experience for 2010. Then after a patch, and possibly a few more features and wrapping things up in Visual Studio 2012, it will be the 2005 equivalent for (css,javascript). Then sometime after 2015 we will begin to see the actual user experience needed to make these DSL's live. So we are in for a wait. But it is exciting knowing its coming closer!
This is not an official Microsoft timeline or roadmap, so please don't confuse my opinion with the actual route it will take.