Steve Teixeira, Product Manager for Visual C++, has replied
to my expansion of the API war
post with some good insights about some of the issues I raised. First, I'd like to say thanks to Steve for the thoughtful response. I enjoy reading his blog, if you haven't checked it out at least read this post
you're sure to get a good laugh from it, I certainly did.
Anyway, I'd like to respond to a few of his comments. Regarding transparency and the comparison with Google he said:
The comparison with Google is also interesting because Google customers have clearly been very happy to use services that Google has deemed beta quality (Gmail, Maps, Toolbar, etc.). Given the way folks are voting with their feet in favor of these things, a reasonable person could conclude that customers often find value in software even if it's not considered "RTM quality."
I think there is a huge difference between a service like GMail or Maps etc. and a multi-gigabyte CTP download which includes forewarnings regarding the potential nastiness non-RTM software could unleash on your machine. In the former if the software fails it means my mail didn't go through or got lost but in the latter it means I may have to reinstall my OS to regain the stability of my machine. Recently, Microsoft has been getting around that issue by leveraging Virtual PC images which is a good idea but what if I want/need several CTP's or what if my machine can't running a VM?
Nobody ever said that all things .NET were constrained. The referenced quote was making a point that it's a great deal of work to build WPF-quality user interfaces with straight Win32 because Win32's GDI is old and crufty. Of course you can build the Office ribbon and cool looking Vista apps in straight Win32, but the point is that it requires more effort than some of the alternatives.
I suppose I could understand if we were talking about a theoretical UI that didn't already exist but that's just it, Microsoft has already done the leg work on this one but can't share it because of competitive pressures (read Open Office) and perhaps more relevant to developers, the appearance that the "crufty" Win32 API hasn't actually run out of legs.
My guess is that the about face of Microsoft's C++ strategy is a mea culpa a la IE7. It seems clear that the C++/Win32 side of things were being ignored which is really the only plausible excuse for absolutely no Vista support for native development unless of course you look elsewhere.
Regarding my comment on Windows development undoubtedly meaning a move to .NET he said:
No way, Jose! In fact, the Visual C++ team's primary focus is on the native Windows platform. We have some very aggressive post-Orcas plans for advancing the state of the art of native development.
While I think there will be a Windows C++ native market for a very, very long time I also see the interop strategy as one of many steps that will be taken to move all but essential native development to .NET. Regarding the "post-Orcas" plans when exactly is that? It seems that's an awful long ways away considering Orcas is due out late this year. I imagine the field will change quite a bit by then so it will be interesting to see where this all ends up.
More seriously, my view on this is that the day has long passed where it is practical to keep up with every developer technology coming out of Microsoft. Ten years ago, it was totally doable and expected that any "real" developer was totally on top of all of the new stuff coming out of Microsoft.
While I agree with Steve truth be told the major area I'm really trying to keep pace with Microsoft's web development which to me includes:
- IIS 6/7
- C#/LINQ (and language C# enhancements in general)
- SQL 2005
- Microsoft AJAX (aka, Atlas)
- Microsoft AJAX controls
- Silverlight (both beta 1 and now an alpha)
- Microsoft Patterns & Practices
- Windows Live services
One problem I've been running into, when I'm learning one of these new technologies, is that the web is becoming littered with example code based on CTP bits that, while some still work are completely out of date. Like this ASP.NET Atlas example from ScottGu (btw, impressive guy). The example still works and much of the information is relevant but the code, while similar, is out of date with the RTM bits from January '07. I suppose it might be a good idea to clearly label CTP versions for a given blog post though that could get a little crazy.
That said, I'm not going to hand-wave away the fact that there are areas where would do have overlap or should better aligned or must be better at messaging when and where to use what technology. And we also need to better align platform and tools releases. All of these things are true. But I don't believe it should be a fundamental goal to homogenize our platforms and APIs before letting anything out the door.
I'm glad to see agreement on and acknowledgement there is too much confusion. Hopefully, there will be some brainstorming around how to deliver so much technology in a more organized fashion sort of like session tracks at a conference. Btw, I not asking for homogenization though it would be good for Microsoft to "dogfood" the external developer experience to better understand the maze of CTP software that's currently available.
I think that about wraps it up. I'd like to thank Steve for taking the time to respond and Steve, if/when you get back to the bay area I'd love to hook up and rap about this and the ole' days over a beer, my treat. If I happen to make it up you way don't be surprised to hear from me!