Microsoft Doesn't Trust .NET

Richard Grimes recently posted an Analysis of .NET Use in Longhorn and Vista, wherein he draws two conclusions:


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/03/microsoft-doesnt-trust-net.html

First, I like that .NET let’s me be much more productive than standard C++ and/or MFC.

Second, MS did not trust .NET enough to write any code that does “60 frames per second”. They left that to the Unmanaged code.

Thrid, Visual Studio 2005 has a lot of Managed code. And it shows.

Conclusion, use the best language for the problem. Many times, it will be Managed code, many times it will not.

BTW I noticed after installing the Vista Feb CTP that there is now a MS supplied codec pack that includes an MPEG2 decoder and encoder.

Part of the reason especially for the encoder portion is probably for the new Windows Movie Maker which allows you to author DVDs.

Richard Grimes is a media whore who just likes to see his name on important web pages. The sad thing is I used to like reading his stuff until he decided that being controversial was the way to go. There’s plenty of MS stuff using managed code:

http://blogs.msdn.com/danielfe/archive/2004/11/02/251254.aspx
http://blogs.msdn.com/danielfe/archive/2005/12/16/504847.aspx

Oh and whatever happened to Grimeys promise that he was done with .Net ??? http://www.ddj.com/documents/s=9211/ddj050201dnn/

I agree. At this point I’m inclined to just call Grimes an idiot and ignore his pointless rants.

Bill Wagner just posted a list of Microsoft products that contain millions of lines of managed code: http://www.srtsolutions.com/public/item/119090

Ironically, some time ago a link to a Grimes benchmark was posted on JoS that was intended to support .NET. Grimes claimed it proved that C# was just as fast as unmanaged code. Needless to say, that benchmark was bunk as well. Grimes made all the newbie errors of superficial benchmarking to get the results he wanted…

Kinda, but Thurott isn’t telling the complete story. Until MCE 2005, it was impossible to get MCE unless you had an MSDN subscription. With MCE 2005, it’s now available in the OEM channel as a SKU.

And yes, you do need third-party DVD decoding software installed. Why this remains a MCE requirement – it won’t run without it – baffles me. I asked the MCE guys point-blank at PDC during the QA period of their presentation and they hemmed and hawed. Blah blah blah YOU’RE F’ING MICROSOFT, DO SOMETHING TO MAKE YOUR CUSTOMER’S LIVES EASIER! If you don’t have the power to buy and bundle a simple MPEG-2 algorithm that’s required to use your product, who does? Bah. It’s bullshit.

You can buy tons of OEM products; I do it all the time. Video cards, mice, etc.

The way you get around the “must be a system builder” restriction (if it’s even enforced; many times it is not) is to buy something that’s “hardware” for a buck. A power cable or what have you.

Just put in a space before the parens. I do it everywhere I post, just in case.

Well, it’s effectively a superset of Pro. According to the post you linked, the MCE Extenders in the 2005 edition of MCE require the Fast User Switching stuff, and FUS isn’t compatible with domains.

But I can completely understand Microsoft not wanting XP MCE to join a domain. It’d also be pretty silly to install MCE on a bunch of your corporate desktops – surely you don’t want your employees to watch videos and television at work. :wink:

There are two ways to get an XP Pro SP2 level pre-installed on an economical OEM system. Buy a computer with Media Center Edition ( http://nfocentrale.net/orcmid/blog/2005/10/windows-media-centers-been-good-to-me.asp ) or get a Tablet PC. I’ve done both. Tying the SKUs to platform capabilities seems to have worked well.

I haven’t noticed the absence of Active Directory domain support, because my systems are on a SOHO workgroup LAN. I’m gratified that a local IIS can be installed though I haven’t tried it yet. (I do fret a little about finding Recovery Console and the fact that my Toshiba Satellite R15 Tablet doesn’t provide firmware setup access at POST time. I haven’t looked around very hard though.)

I notice in reports about Windows Vista that the MCE and Tablet PC extensions are apparently simply baked into the range of Home editions.

I also think that the distribution of WinFX down-level is certainly an endorsement of .NET, as will be all of the .NET usage and integration in the 2007 Office System.

We seem to be forgetting that the CLR is a compilation-to-platform based system and we’re always running native code that accesses libraries with native-code hooks and use of native operating-system plumbing. That gives great engineering trade-offs and a managed-code system. Who cares that it isn’t really .NET all the way down?

“Why this remains a MCE requirement – it won’t run without it – baffles me.”

I think it’s more a matter of which one to pick and piss all the others off. There may be some kind of anti-trust directive from the lawyers as well. If they bundle one, they effectively take over the MPEG-2 decoder for Windows market and shut EVERYONE else out. They don’t want Bill to go on the stand EVER again. He’s their greatest liability.

They left that to the Unmanaged code.

Actually, it’s left to the video hardware-- there is a managed interface for DirectX:

http://msdn.microsoft.com/msdnmag/issues/03/07/DirectX90/

http://support.microsoft.com/kb/841927/en-us

Which recommends not using any “high level” languages in Core operating system functions.

I’ve worked on a product that was made for the MCE. Except for the initial scrolling icons … its just a big “IE” window. Seriously, its just showing web pages. Its SDK is for javascript. You call certain functions and it tells MCE how to show your page.

-Shree

Yes, there is managed code coming out, but the question isn’t how much is there, but what is it used for?

The MCE is not a .NET OS, it is a “Media Center user interface functionality is almost entirely written in C# managed code” - ie the GUI is .NET, nothing else (which I like - back in the day, I used to write server stuff in C++, and the GUI in VB as they each had strengths that played to those areas, now I guess I’ll just have to do my UI stuff in VB.NET instead)

The link that showed millions of lines of managed code - fair enough, but look at what those apps are - I bet its mostly tools, UI stuff that is designed for you to twiddle with the actual product.

This is natural, you write a tool in the new toy and if it works well, it gets used in the rest of the application. IF it works well…

That’s just the extensibility model for MCE-- and it sucks. The Vista version of MCE adds two new extensibility models… B) Windows Presentation Foundation add-ins C) “native” MCE add-ins. That’s in addition to the existing model, A) HTML and ActiveX.

Good point. I didn’t think about that when I posted about this same topic today ( http://weblogs.asp.net/jgalloway/archive/2006/03/17/440499.aspx ).

As to MCE, though:

XP MCE isn’t really a superset of Pro, it’s a separate version ( http://blogs.msdn.com/mcreasy/archive/2004/10/13/241803.aspx ). The main difference is that MCE can’t join an Active Directory domain. I’ve heard two explanations for this:

  1. The MCE price point is lower based on what people will pay for an MCE machine, and domain joining was removed to prevent enterprise use of lower cost MCE over Pro, which is intended for enterprise use. Another way of saying this is that domain joining was removed to allow lowering the price for MCE.
  2. MCE uses Fast User Switching, which doesn’t work well on domains. There are ways to get MCE to join a domain, but they aren’t supported.

Also, as I understand it, MCE is technically only available to computer resellers ( http://www.windowsitpro.com/Article/ArticleID/44194/44194.html ). I’m not sure about how this works out.

Note to self: don’t put URL’s in perintheses when commenting on Coding Horror blog.