Typically, I agree with Joel on most of what he writes. However, in his recent essay titled "How Microsoft Lost the API War", I think he's jumped the shark. I can't respond point by point due to time constraints, so I'll just take exception with what he says about backwards compatibility with VB. Since when is VB considered to be an application that requires backwards compatibility, and why would you judge backwards compatibility between VB 6 and the VB.NET tools? VB.NET didn't break VB 6 (they run fine side by side) and they're fundamentally different languages with different development tools. Sure, the syntax is similar, but it is not the same. Maybe it was a mistake by Microsoft to position the transition from VB 6 to VB.NET as a seamless one, but that still doesn't change the fact that VB 6 and VB.NET are not the same language nor are they based on the same underlying technology. Basically, I think that Joel was overreaching in this essay and tried to string together some different arguments that don't make a lot of sense.
UPDATE- I should put a disclaimer on this post, because people are now saying that I'm “admitting” that VB6 and VB.NET are syntactically similar but NOT the same and that one is a CLR language and the other is based on its own proprietary runtime. I thought everybody got that by now. So here goes: this post represents my personal opinion and does not necessarily represent the views of Microsoft or of any Microsoft's product teams supporting Visual Basic.