I don’t know about you, but I can say with certainty that I am excited again about the Microsoft platform. With today’s announcement that they are going to be making jQuery a core part of the Microsoft development platform I can finally say that I think they are “getting it”. Or at least Scott Guthrie and DevDiv gets it. I think that the last time I felt this excited about working on the Microsoft platform was back when the first rumblings about .net were starting to make their rounds. And guess what, back then I wasn’t even working with Microsoft development tools. I was working with Borland tools, and made the switch over to .net as soon as I was able to get a job working with it. Back then my goals were to work with a powerful platform which allowed me to do what I wanted to do, and most importantly, allowed me to find work.
Over the years my priorities have changed a good bit. Thankfully I am no longer as concerned about finding work on a particular platform. I have been developing on the Microsoft platform for a many years now, and I honestly haven’t had too hard of a time finding gainful employment. I am very thankful for that. What has changed from many years ago is that I am no longer as enamored about what platform I am working on. I no longer care who makes my tools, I just want the best tool for the job. I don’t care what OS runs my application, as long as it is fast and stable. Just as I don’t care who writes my libraries, as long as they are robust and flexible.
And all of this was so that we could drop a bunch of controls on an html page without knowing any html. We sacrificed standards, interoperability, and control for an abstraction that actually kept us from learning the underlying platform. I’m not pointing any fingers here, I was guilty myself. I remember when I finally started getting serious about exploring other web development frameworks and I came to realize how bad I was with HTML! Here was a technology that I dealt with on a regular basis, that I could read and understand, but I had a very hard time writing by hand. How embarrassing! But we also have to realize that this is what the ASP.NET platform set out to do. It was trying to move developers from winforms to webforms and allow them to use some of their skills that they had attained. The web was so different from desktop development that Microsoft wanted to span the gap, and they actually did a damn fine job doing it.
So, in steps ASP.NET MVC. Microsoft knew that they had an excellent platform in .NET and they knew that the ASP.NET framework worked for a large number of developers, but they needed a framework that worked in concert with the web. ASP.NET MVC gave Microsoft developers an alternative framework on which to build real web applications. And it allowed you to do this by getting out of the way. It let you actually write your own html if you wanted to. This was a big step for Microsoft because they had to admit that ASP.NET was not a one-size fits all solution. It was an even bigger step because they released it open source under the Microsoft Public License. And they decided to release regular source drops throughout the development cycle in order to get the community involved in evolving the platform! This was not your grandfather’s Microsoft!
But while they were releasing the source code for the .net framework and releasing very good OSI certified open source licenses, they were pulling a Jekyll and Hyde. They were also releasing frameworks like Unity and MS-Test. Unity, which is Microsoft’s dependency injection container, and MS-Test, which is Microsoft’s NUnit clone, looked to many people as a Microsoft “me too” frameworks which added very little to the development stack and were just wasted effort because they duplicated the community efforts. Many developers were puzzled why Microsoft would go through all of the effort of creating these frameworks when they could have just supported the open source tools and even included them in their development offerings. Many people, myself included, thought that we might never see the day when Microsoft would start shipping non-Microsoft open source tools as part of their development platform.
When ASP.NET MVC was released we saw a tiny glimmer of hope in Microsoft’s unwavering effort to not ship open source tools in their development offerings, and that came in the form of the Unit Test Project creation form which supported NUnit, MbUnit, xUnit and any other unit testing framework that wanted to get in on it. This was a pretty big step, because they were actually supporting the integration of open source projects that compete with one of their own tools. This is basically the equivalent of them letting the Visual Studio built in unit test runner to run any unit testing framework. But this was still pretty small compared to what was coming next.
When Microsoft announced today that they were going to include jQuery as part of the Microsoft development platform, I was totally taken aback. At first I thought that they were saying that they were going to ship jQuery with ASP.NET MVC, but they weren’t, they are planning on shipping it with Visual Studio in the future! They are even going to provide support for jQuery. jQuery is slated to be a core part of their future web development platform. I think that this represents a colossal shift in Microsoft’s stance on open source, and I am hoping that it leads to many more open source projects being brought into the Microsoft fold in the future.
In the end I think that Microsoft still does a lot of things that makes me shake my head, but Microsoft’s announcement that they are going to include jQuery with Visual Studio, along with their impending release of ASP.NET MVC and IronRuby has me more excited about the Microsoft platform than I think I have ever been. I’m glad to see that Microsoft is making huge strides in the right direction and I think that there are countless others in the community who are excited about this as well.