I’ve deliberated on the content of this post for a few days, mostly because it is a difficult topic to solidify my thoughts on. Last week I was an attendee at the first Microsoft Technology Summit. For those who haven’t read online about the summit, the Microsoft developer evangelists from around the country invited various technologists from other communities, including Java and Macromedia Flash, to spend a few days in Redmond discussing Microsoft technology.
The summit for all intents and purposes was a show where Microsoft displayed all their cool technology and we threw out a few comments here and there. The agenda was so packed that it was difficult to foster a conversation about Microsoft technology and I for one can’t think of questions in 10 minutes above and beyond, “hey does it do this?†Most of the time when I thought of good discussion points I’d spend 15-30 minutes discussing with the Microsoft folks and end up missing the majority of another presentation. So, Microsoft definitely needs to reconsider the format for next time.
What I took away from the summit was that if you start with their technology and compare it with what the Java world has (for example), than side-by-side Microsoft has the goods. ASP.Net is like JSF on steroids; C# and other managed code now have “real†generics unlike type erasure we are stuck with in Java 5.0; C# is getting fixes and updates to delegates, closures and much more; the CLR now runs managed C++, allowing C++ developers to work like Java and C# developers; Avalon, WinFX and XAML greatly simplify Windows GUI development and seem to beat out Swing on easy of use and integration with Windows; Indigo will seal the deal on WebServices, which aren’t simple in Java; Monad is a new Windows Shell for us command-liners; and not to mention that all of this is wrapped into Visual Studio 2005 and the .Net framework 2.0 and made simple and robust. Of course they can’t get it all perfect and in some cases there are tools out there that are superior. For example, Source-Safe/Team System is not nearly as robust as products like Accurev, BitKeeper and others. But what they have built is pretty sweet.
However, they are still missing something otherwise Mono would be a success and people would be switching more rapidly (or is this a naïve assumption?). I think one major piece that Microsoft is missing is the support and fostering of the open source community on their platform. Or perhaps it is just more than open source. Perhaps it is the enormous vendor lock-in (from the OS to the IDE) that scares business off. Or maybe it is the community around Java and other technologies, which is fragmented and disjoint, but very large. Or perhaps it is standards, which Microsoft only produces part of the time and implements only when it makes them money. Or it could be time to market and that Microsoft is just now catching up. I think it is a combination of all these things, in addition to a suite of others I haven’t thought of, that makes Microsoft a difficult choice for developers and companies. What it comes down to is that Microsoft’s public image is as vital in the discussion of their technology as the technology is itself.
More Microsoft thoughts to come! I should have a good chunk on Monad soon since I finally managed to download the beta.