Just to be clear, and open, I have personally worked on the .net team, so naturally I like .net, but to be honest .net will never have the open platform story that java has, so if require open platforms, then your answer is pretty obvious.
That's disturbing. And it's comments like this that make many folks wonder about MS.
First, the claim is most likely wrong. .NET has a standard, and thus can be implemented by anyone on any platform. Further, there's a huge momentum right now to do just that, with no fewer than 3 initiatives in varying stages of development, but all viable.
got the momentum and push from the core developers, so it's gonna happen.
Second, the attitude won't do anyone any good. Especially considering the claim is likely to be wrong. .NET will be adopted on other platforms, and MS can't stop that. The attitude can therefore only lead to MS losing customer base and bad consequences for
everyone involved as the language and CLI are severely fractured by the very creators. Developers aren't like your typical end users. Market share means little to us. We'll choose the tools that best solve our needs, and a MS specific solution won't be
the tool. We'll still choose .NET, but we'll use APIs from other vendors to achieve the portability that gives us the most revenue.
MS has matured recently with regards to standards. I appreciate that. But in this case I see an awful lot of attitude from MS developers that they are looking for lock-in in areas they shouldn't be. The cat's out of the bag. C# and CLI are standardized, and
the IL is portable. That's a cat you can't put back in the bag, no matter how much you may want to. The best way to increase MS's revenue at this point is NOT to try and restrict usage, but to go for MORE usage. Promote heavily the cross platform nature
of your creation!
For instance, I've read rumblings on MS blogs about the issue of Mono's implementing several APIs that were not included in the standard, such as WinForms and ASP.NET. Attacking Mono on these grounds won't help MS... they'll implement competing APIs that MS
can't touch (such as the gtk# stuff that already exists and runs on all supported platforms and can be used as a replacement for WinForms). Developers that care about cross platform deployments will abandon MS for these alternative APIs. MS loses market
share this way, and in a manner that even Java could never quite accomplish for political and technical reasons. Leave them alone, or better yet, include these APIs (or alternatives... WinForms is a bit too MS specific) in new proposals to the ECMA and ISO.
Then compete on the basis of quality of your offering and you'll not only not lose that market share, you might possibly even gain some.
I fully understand MS's stance on OpenSource. It's not a bad model, but not necessarily the best for most businesses. Especially with licenses such as the GPL. But when it comes to developer tools, it's in MS best interest to get them out, make them affordable,
consider open sourcing and adhering to or proposing standards for them. Making the tools open is a good thing for MS's bottom line. Vendor lock-in is not.