Erik Meijer, the lead architect in Microsoft’s assault on the impedance mismatch between relational databases and object-oriented programming languages, has just keynoted the JAOO conference in Copenhagen. He’s turning a lot of heads and raising a lot of eyebrows with his vision on the way forward in this and related areas.
Erik is the guy responsible for LINQ. His team has already discerned, rightly I think, that the point of commonality to work from is to have a syntax (LINQ) that can query against arbitrary data stores (databases, arrays, DataSets, collections, XML, etc). With LINQ integrated into VB.NET and C#, and ultimately into the many other .NET-hosted languages that will doubtless choose to support it, there is in theory now a single syntax to master for any kind of querying, regardless of the source of the data. This brings IntelliSense and strong typing to all those queries as well.
LINQ has generated a good deal of controversy. It overlaps with established open source projects like NHibernate and SubSonic in bringing a language-integrated query syntax to the table. Some feel this is another manifestation of Microsoft’s classic “embrace and extend” philosophy. Some have suggested that Microsoft should simply endorse and/or sponsor one of the existing open source projects rather than reinventing the wheel, and potentially not doing as good a job anyway. Others dislike the amount of under-the-hood “magic” and the quality of the generated code, or object to the fact that in its current iteration, LINQ is pretty closely tied to the entities in the data store.
All of this is to be expected … but Erik is doing something now that is either the worst kind of hubris or insanely brilliant. He wants to apply this same kind of abstraction to the Internet as a whole and to arbitrary deployment hardware. As he describes it here:
As the Dutch artist MC Escher once said “Only those who attempt the absurd will achieve the impossible”. Hence we are trying to stretch the .NET framework to cover the Cloud such that it will become possible to incrementally and seamlessly design, develop, and debug complex distributed applications using your favorite existing and unmodified .NET compiler and deploy these applications anywhere.
He calls this “Democratizing the Cloud”.
We have no way of knowing at this point if Erik is just a visionary on a long but very real leash, who may or may not ultimately be permitted to realize everything he envisions — or if he has broad backing within the company.
We have no way of knowing if he’ll even pull it off. But the sheer audacity is both breathtaking and thought-provoking.
Imagine authoring a C# or VB.NET project using a single language and having it compile and deploy into whatever aspx, html, exe, dll or other components are needed. The promise is that you don’t have to spend all sorts of time gluing together heterogenous technologies, which in turn requires that you master them all.
Ayende expressed considerable skepticism about all this that may nevertheless overlook the many billions of dollars in Microsoft’s war chest:
I came out of [Erik’s talk] with a profound sense of shock. If this is where Microsoft is headed, then they are in a real problem.
At the heart of Ayende’s bullet points of concern is that this will all tend to dumb down developers by treating SQL and JavaScript as “assembly language concepts” and hiding them behind layers of abstraction and magic. He sees it not as democratizing the Cloud, but as dumbing down the Cloud.
My take on it is that, assuming they pull it off (a huge assumption), it’s probably just going to cause the bulk of us to work at a higher level of abstraction and accomplish more ambitious things. Few of us write compilers or language parsers and even fewer of us know assembly language. Big loss! I would enjoy the mental challenge of becoming proficient at assembler, but no one has been willing to pay me to do so since the days when Z-80’s roamed the earth, when I did a couple of LS-DOS printer drivers.
In this vein, my clients would love it if I could woof out simpler code bases that did more things in the same amount of time.
I am, however, frankly skeptical that Microsoft will pull it off. WebForms was a much simpler abstraction, and I know an awful lot of people who think it’s an abortion. I am heading for the ALT.NET conference in a couple of weeks to immerse myself in that whole zeitgeist and see what merit there be in it and whether it has legs. But the very existence of a rogue movement to build on a different tool set is telling.
My guess is that Erik’s brainchild will be much like Vista: heralded as the Second Coming now, but Microsoft will gradually whittle away at the feature set until what we ultimately see in the wild will be about as revolutionary as Vista. In other words, just as Vista is Windows XP except that it’s prettier, slower and less reliable, Microsoft’s “Democratized Cloud” is apt to be WebForms and Web Services, only prettier, slower, and less reliable.
That is the appeal of ALT.NET to me — not its agile or open source orientation; that’s just religion. Not its leanings towards MVC architecture as such. But as a hedge against the likelihood (you read it here first) that Microsoft is building a baroque castle on top of the hot rod that is the CLR. I want access to a cleaner, more nimble and transparent API than what mainstream .NET may well be evolving into.