This post was migrated from Justin’s personal blog, 'Codethinked.com.' Views, opinions, and colorful expressions should be taken in context, and do not necessarily represent those of Simple Thread (and were written under the influence of dangerous levels of caffeination).

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.

This is why it has been hard for many Microsoft web developers over the last few years. Those of us who really cared about writing good, standard, and usable web sites were mostly left out in the cold by Microsoft. The ASP.NET framework, while powerful, abstracted away web development to the point where it was extremely hard to work with other tools that our JSP, Python, PHP, and Ruby brethren were foaming at the mouth over. We couldn’t use Prototype, Scriptaculous, and worst of all jQuery. I mean honestly, we could barely use CSS. Now, to say that we “couldn’t” use these tools is a bit of a misnomer, so let me say that we could use the tools as long as we smacked them around for a few hours, put a bunch of javascript into strings, did a rain dance, and then spit it all out into our pages with injected control names.

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.

But then something happened. Suddenly many of these developers that had switched over to ASP.NET started becoming real web developers. They started *gasp* writing their own javascript and trying to write xhtml compliant pages. And they found that it was a royal pain in the ass. Many Microsoft developers shunned these things as fluff, saying that there was no reason to write compliant html or roll your own javascript, it was just too hard. But Microsoft saw many good developers getting fed up with the platform and moving on to things like Ruby on Rails or Django. On the CSS front Microsoft started making things much better in ASP.NET 2.0, allowing us much more control over css class names on many controls. Things were better, but the framework still spit out tons of ugly html and inline css, which was really hard to style and work with. Many web developers were left writing their own custom controls or simply spitting out strings of html into pages.

Microsoft also started up the ASP.NET AJAX project which would allow Microsoft developers to work more easily with Ajax, and even had some decent javascript libraries for html manipulation. But many developers still felt like this wasn’t enough, there were other libraries out there that they liked better, and they just wanted to be able to use them with ASP.NET. Sadly, the reality was that ASP.NET just wasn’t designed with these other frameworks in mind, and therefore it would likely always be hard to use them.

Microsoft found itself in an interesting situation. On one hand, they had a framework (ASP.NET) which was being heavily adopted by many enterprises and was pretty darn easy to use for your standard CRUD web applications. But they had a smaller portion of web developers who wanted to write fast, lightweight, javascript heavy, web applications and didn’t want to be bogged down by the heavy ASP.NET framework (and that freakin’ page lifecycle). Even though these were a smaller portion of developers, these people were also the thought leaders and Microsoft knew that if they drove them away, then the rest of the market would be only a few years behind.

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.

3 Comments

Bart Czernicki

ASP.NET, MVC, jQuery is all HTML, CSS, JavaScript world which in 2-3 years after Silverlight 4.0 is out and the Web 3.0 semantic web takes off will finally die a horrible death.

I don’t care how much faster Chrome/Firefox make JavaScript…you can’t rely on that as a solid foundation for future web apps.

Silverlight RIA is the technology to be excited about, which will bring immersive experiences from the web.

Reply
Peter Seale

Bart, you have a good argument, except for one thing: Silverlight 4.0 doesn’t exist. Feel free to let me know when it a) sprouts from the ethers, and b) destroys HTML/CSS/JavaScript.

Meanwhile, jQuery is an excellent JavaScript framework that has reached critical mass, and it exists today, now, this very moment.

So, uh, unless you’ve traveled back in time from 2018 to leave your comment, you’re going to have to wait a LONG time for our (the caveman web developers of 2008) comeuppance.

Reply
Justin Etheredge

Yeah, I refuse to get excited about Silverlight. Until I see a good open standard that everyone supports, it just doesn’t fly with me. I refuse to believe the the next generation of the web is going to be built on proprietary platforms. It just won’t happen.

Now there will still be a place for Silverlight, but it will be inside of corporate firewalls to reduce the need to distribute desktop applications. It will also find a good niche in the same places that flash has found its own place. i.e. Video, Games, etc…

Reply

Leave a Reply

Your email address will not be published. Required fields are marked *