Slashdot Mirror


Analysis of .NET Use in Longhorn and Vista

smallstepforman writes "In a classic example of "Do as I say, not as I do", Richard Grimes analyses the ratio of native to managed code in Microsoft's upcoming Vista Operating System. According to the analysis at Microsoft Vista and .NET, "Microsoft appears to have concentrated their development effort in Vista on native code development. Vista has no services implemented in .NET and Windows Explorer does not host the runtime, which means that the Vista desktop shell is not based on the .NET runtime. The only conclusion that can be made from these results is that between PDC 2003 and the release of Vista Beta 1 Microsoft has decided that it is better to use native code for the operating system, than to use the .NET framework.""

46 of 479 comments (clear)

  1. Well DUH by Anonymous Coward · · Score: 2, Insightful

    I mean, an operating system IS supposed to be as efficient and speedy as possible. .NET may be easy to develop, but it isn't as fast as native code. As the trolls would say, "Move along, nothing to see here".

    1. Re:Well DUH by Anonymous Coward · · Score: 1, Insightful

      Replace .Net with Java and you're little 12 year old fanboy brain can figure it out...

      VM code: Slow but speedy development
      Native code: Fast but slow development

      Sometimes you just need a solution that works, and sometimes you need the fastest and most compact execution possible.

    2. Re:Well DUH by Albinofrenchy · · Score: 3, Insightful

      Holy crap, run-on sentence!

      You worry too much. Unless you are doing something real damn special, you don't need to call WINAPI code alot, and alot of the unmanaged libraries are being/have been replaced with managed versions. Not saying it will be free of bugs, and completely secure, nothing is, but it will have fewer bugs, and fewer holes.

      --
      "A man is but the product of his thoughts what he thinks, he becomes." -Mahatma Gandhi
    3. Re:Well DUH by Jason+Earl · · Score: 2, Insightful

      I don't think that's an entirely fair assessment. I use several applications on Linux that are written in Mono on a daily basis, none of them seem remotely sluggish. f-spot, for example, performs very well. The only Java application that I use on a somewhat regular basis is Eclipse and it certainly is slow. In fact, when I played around with Monodevelop the one thing that really surprised me was how quickly it started up and how well it performed once started (especially compared to Eclipse). Now, I realize that Monodevelop isn't nearly the program that Eclipse is, but it's still a pretty useful tool and it started several orders of magnitude faster than Eclipse.

      Now, assuming that Microsoft's .NET isn't considerably worse than Mono you would think that Microsoft would have included some visible new feature written in .NET. Heck, how about replacing notepad.exe, for instance. I mean, seriously, how much would that cost?

    4. Re:Well DUH by Nataku564 · · Score: 5, Insightful

      Not much, but why rewrite something? The net result is just a notepad that runs about the same as the original, with no physical difference. Joe End User is not impressed. Rewriting things in the latest and greatest programming language of the day always sounds cool from a geek perspective, but from a business standpoint (and just plain old efficiency standpoint) its wasteful.

      Now if they wanted to write some new app in .Net that would be cool. But just as with VB, you will notice Microsoft stays away from their own tools. They know their business strategy, and they know that the current cool buzzword be obsoleted for the next flavor of the month tech that they want to sell to their users.

    5. Re:Well DUH by techno-vampire · · Score: 1, Insightful
      I'm sure attacks would still be possible, but at least we wouldn't have to worry about buffer overflows causing problems.

      Putting your applications in a sandbox to protect against buffer overflows is a bandaid approach. The way you protect against buffer overflows is by writing the code properly in the first place, instead of hard-coding the buffer sizes in so that skript kiddies can send longer and longer strings into them until they overflow.

      --
      Good, inexpensive web hosting
    6. Re:Well DUH by Anonymous Coward · · Score: 2, Insightful

      I've given up on trying to get developers to write "the code properly in the first place."

      Humans make mistakes. Don't fight it. It's not the pretty or perfect solution. But reality says that developers will screw up. Now pick the system that addresses reality and not what you wish to be true. What if thinking leads to communism and failure.

    7. Re:Well DUH by Onan · · Score: 5, Insightful
      Hm, I'm not quite sure I agree with your assessment which one of those is the "real" solution and which is the bandaid.

      If the past three decades of computer science have taught us a single thing, it's that intelligent, conscientious, meticulous coders will still write code that has simple vulnerabilities like buffer overflows. Now, I'm not suggesting that we just give up on trying to write good code. But it's hard to argue that it's anything other than a win to reduce the damage of such errors when they--inevitably--occur.

      Writing unexploitable code is great, but it needs to be executed perfectly by every single developer, writing every single line of code, forever. Every time you find and fix one bug, you've only fixed that one, but haven't done anything about future ones; that seems like the epitome of bandaidness. A single centralized sandbox api could conceivably address such bugs categorically, in a finite amount of code.

      I don't actually know anything about .net, so I can't speak to how well it accomplishes this goal. But generally approaching the problem in this way seems sound. An actually-existing approach that seems analogous is the privsep model of recent years' opensshd.

    8. Re:Well DUH by m50d · · Score: 2, Insightful

      People are only human, and they make mistakes. It's all well and good to say "don't make the mistakes", but it's better to have a setup where a typical mistake doesn't compromise the system.

      --
      I am trolling
    9. Re:Well DUH by PhrostyMcByte · · Score: 4, Insightful

      Is Microsoft supposed to completely rewrite all of their already working software? Maybe I was the only one that expects _new_ things to be in .NET.

    10. Re:Well DUH by Eivind+Eklund · · Score: 4, Insightful
      I'd say relying on each and every one of hundreds of thousands of buffer operations being right is the bandaid, and that using "least privilege" is the systematic, proper approach. Of course, pros do both. It's known under various terms, a common one being "defense in depth".

      I was sort of worried that MS was going to take over for open source, by actually taking the job of fixing their security model and creating really secure and stable system. Don't look like the chose to.

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    11. Re:Well DUH by techno-vampire · · Score: 2, Insightful
      Not all programmers are top notch, and sooner or later everybody slips up. VM's enable you to be sloppy and cleans up messes quite nicely.

      So, it's better to put everything possible in a sandbox, so that code monkeys can be lazy and sloppy? That's OK during development, because you expect problems. Properly written production code shouldn't need that. Yes, errors will slip by at times, but things like buffer overflows are so easy to prevent that there's no excuse for them.

      --
      Good, inexpensive web hosting
  2. So.... by Anonymous Coward · · Score: 2, Insightful

    So what... We donot use JVM as an OS. Every tool has a purpose. ".Net" is not created to be able to write an OS from scratch.

    1. Re:So.... by Evers · · Score: 2, Insightful

      True, you don't want the really low level stuff (e.g. kernel) to be coded in .Net but I fail to see why some of the services couldn't be coded in it if Microsfot now really wants to promote the stuff.

  3. Not a good basis for decision by Anonymous Coward · · Score: 1, Insightful

    Writing bare-metal OS software vs. application programs is not a good comparison. DotNet was never sold on its principles of performance, but instead on its simplicity of development. That simplicity does not come at zero cost, so when writing base OS function, it is paramount to focus on features and performance, not ease-of-implementation.

  4. Uh... by Anonymous Coward · · Score: 2, Insightful

    Isn't it impossible to do that anyway? .Net (or C# rather) is an interpreted language, and it needs an interpreter to be running in a host operating system. That interpreter needs to be run somewhere, but I don't think between the processor and the kernel is an especially good place for it.

  5. Not suprising. by rfernand79 · · Score: 3, Insightful

    This is not surprising. Performance-sensitive applications (just as the shell, explorer or whatever they call it) would suffer from not being built with optimised, native code. Just remember the OS X Finder (pre-10.2). It was not multi-threaded and made using the UI practically impossible.

  6. The proof is not OS services by BadAnalogyGuy · · Score: 5, Insightful

    The proof is in their application layer. Office, Visual Studio, and their other user applications.

    People like to complain about MFC, but fail to realize that Visual Studio, from its humble beginnings up through VS6, was based on MFC.

    Besides that, the value of a tool is not determined by what the toolmakers do with it, but with what you can do with it. When you see proved over and over that .Net provides many more facilities to the underlying operating system than most other runtime packages that came before it, and that it does so in a way that makes programming in that environment a pleasure, then you see the value of .Net.

    Microsoft deciding to keep OS components in native code is not indicative of anything.

    1. Re:The proof is not OS services by Anonymous Coward · · Score: 1, Insightful
      People like to complain about MFC, but fail to realize that Visual Studio, from its humble beginnings up through VS6, was based on MFC.

      That's right. And it was just about the only Microsoft product that ever used MFC. Presumably that's because the developer tools UI department was close enough to the code framework department that their common boss could force them to use MFC, no matter how badly it sucked. The rest of the company went on their merry way, at least able to produce their mediocre goods without the burden of that byzantine beast around their necks.

      The vision of MFC: Let's saddle people with the extra intellectual mass of C++, but ignore the language's most powerful features; instead we'll fill in the gaps with a bunch of C preprocessor macros. Then we'll throw in a bunch of wizards to encourage people to automatically generate spaghetti boilerplate by the megabyte.

  7. Re:Mono by djradon · · Score: 2, Insightful

    This seems like a vote of no-confidence. You'd think the marketing people, at the very least, would've told someone "We have to include at least one hosted app or service in Vista, or people are going to think the CLR and .NET APIs are second-class environments."

  8. The point here... by Anonymous Coward · · Score: 2, Insightful

    .. not that an OS could be written in .NET, but Microsoft going back on their words. Having the OS based on .NET would be a nightmare with the runtime overhead and would slow down the OS too much.Windows would certainly lose ground to other OS due to demanding hardware requirements.

  9. Should consider only new code by Anonymous Coward · · Score: 2, Insightful

    When looking at the ratio of .net vs. native, it would make more sense to consider only new code as opposed to all code. It is unrealistic to expect the existing codebase (like explorer) to be rewritten.

    1. Re:Should consider only new code by RobertLTux · · Score: 2, Insightful

      actually the reason that vista launch is what 7 quarter this year? is supposedly THE WHOLE THING WAS REWRITTEN FROM EXPLORER ON UP and one of the things that was marketed is that major chunks were rewritten to use the .Net runtime (for "safety reasons"

      --
      Any person using FTFY or editing my postings agrees to a US$50.00 charge
  10. Consider the alternative... by mattgreen · · Score: 3, Insightful

    If they had put .NET into Vista, then this article would be along the lines of "OMG MS PUTS INEFFICIENT CODE IN THEIR SHELL" and then blather endlessly on about how all real applications are written in [low-level-language]. Then we'd all sit around and wax about how wonderful it is that Gnome is pure C (and ignore the fact that Mono is associated with it because of cognitive dissonance).

    Really, nobody can win when you sit there and pick apart everything someone does out of sheer spite. But I suppose it is far too unreasonable to ask for informed discussion these days...

  11. No Duh by NullProg · · Score: 3, Insightful

    Vista has no services implemented in .NET and Windows Explorer does not host the runtime, which means that the Vista desktop shell is not based on the .NET runtime.

    Why would Microsoft want to slow Windows down any further?
    Ask Linus why he isn't using the JVM inside the kernel. Ask the KDE team why every call doesn't go through the JVM. Its a stupid assumption that any Vista program would run under the .Net runtime.

    A better question would be to ask Microsoft why they won't allow anyone to publish program benchmarks for Java vs .Net runtimes.

    Enjoy,

    --
    It's just the normal noises in here.
  12. Dogfood by Doc+Ruby · · Score: 2, Insightful

    When Microsoft took over Hotmail, it took them years and many failed efforts to switch it over from unix to Windows. I'm not actually convinced they ever fully pulled it off.

    20 years of Windows, and the more expert we are in either/both Windows and unix (or Linux), the less likely we are to use Windows technology for our most important development. Especially stuff that's less than 10 years in the field.

    --

    --
    make install -not war

  13. Re:What is it anyway? by Octorian · · Score: 2, Insightful

    You know, it's funny that you bring it up. Once upon a time, when MS was first talking about .NET, it seemed like people could sit through 2-hour MS presentations and still not know what .NET actually was. Essentially, it was some sort of all-encompassing FUD/vaporware vehicle to get everyone behind a name, without knowing what that name meant.

    Of course today people do know what it is. Essentially, it is like the intermediary java byte-code and VM, with a somewhat language-independent front-end. So you can write .NET apps in multiple languages.

  14. Reflection! by bencvt · · Score: 5, Insightful
    Other than the obvious execution speed issue, there's a second factor involved that's nearer and dearer to Microsoft's heart: protection of their IP.

    .NET has excellent reflection support. Consequently, .NET assemblies are easily decompiled. And there are numerous freely available tools to do this.

    Sure, there's obfuscation. Doubtlessly, MS already uses obfuscation extensively in every one of its published .NET assemblies.

    But obfuscation will only get you so far. Your garden-variety reverse engineer will have an easier time working with obfuscated .NET code than traditional assemblies.

  15. Re:.NET is for rapid app development by Brandybuck · · Score: 2, Insightful

    .NET is for rapid app development

    But that is NOT how Microsoft is promoting it. To read their ad copy, they make it sound like .NET should be for rapid development and long term carefully designed development, and very kind of development in between. It's for desktop applications, web applications, client/server applications, services, system software, device drivers (!), research, prototyping, production and anything else Microsoft can convince you to use .NET for. My own company is trashing a million lines of realtime embedded medical software because Microsoft has sold them on the .NET Kool-Aid.

    --
    Don't blame me, I didn't vote for either of them!
  16. Re:Irrelevant by caspper69 · · Score: 2, Insightful

    Warning - offtopic. Sorry.

    I agree with your post completely. This article is largely irrelevant. But it is interesting that you bring up the Singularity OS. It is quite a concept, having watched the Channel9 videos and read the whitepaper. Basically, the OS is written in a derivative of C# (which allows some of the things necessary for system level programming (int/trap/call gates, access to priviledged instructions like CLI/STI LGDT, LIDT, etc.)) and runs in a very lightweight .NET (if you can call it that at that point) VM. The really intriguing part of Singularity is that every process/thread/execution unit runs in kernel mode (ring0). The runtime is able to acheive security by analyzing the code prior to execution. Right now, this seems not only terribly inefficient, but brings up serious concerns about security and safety. But MS may be on to something....big. We all complain about the performance implications of managed/interpreted/byte/IL code, but what about when we suddenly have processing resources at the system level that were heretofore unimaginable in consumer level systems? I'm talking 4/8/16/32/+++ cores per die. Then where is the performance hit? Factor in that this new OS also completely eliminates context switching across protection rings. Quite frankly, with proper VM caching, code signing (at the VM layer; i.e. internal) and sound development practices, this type of operating system has the potential to be incredibly fast, and incredibly secure. Now the question is, who will release it first? (i) those trying to imitate MS with free software; (ii) a free software system who isn't hell bent on turning POSIX into a world dominating way of life; or (iii) Microsoft...

    Why yes, I have designed and written an 32/64-bit protected mode, fully preemptive operating system from scratch (in C). It was hard.

  17. Easy: you don't start over unless you have to by xiphoris · · Score: 5, Insightful

    Why not a C# notepad, mspaint, explorer.exe, taskmgr, regedit etc?

    Why waste time re-implementing something that already works fine? Also, explorer.exe doesn't really qualify as userland. Sure, it's not the kernel, but it's as close as you get in userland.

    As it looks to me, .Net is the "soup of the day" at MS. .Net will be replaced in 3-5 years with something else that will require MS customers to re-purchase their development tool chain.

    Again, it seems you're expecting Microsoft to instantly rewrite all their software from scratch. A lot of software that's going into Vista, and indeed Vista itself, have been in the work as long as .NET or longer. Consider Office. That's been around forever.

    You're saying they should just throw away everything and do it all over again in .NET? Personally, I think notepad and regedit are fine the way they are. If .NET needs to prove itself, it will not be through clones of tools as simple as those.

    1. Re:Easy: you don't start over unless you have to by bigman2003 · · Score: 4, Insightful

      So how *should* they work? I've never had Notepad crash. It has always done for me exactly what it should do.

      If I want a program to do more, I use something else. But for what it is designed to do, Notepad is great.

      --
      No reason to lie.
    2. Re:Easy: you don't start over unless you have to by jasondlee · · Score: 3, Insightful

      If I *have* to use Windows, I use gvim to edit text files. Notepad is an *extremely* basic, no frills, almost no functionality text "editor." Given its feature set, to use "good" to describe it boggles my mind.

      jason

      --
      jason
      Have a good day?! Impossible! I'm at work!
    3. Re:Easy: you don't start over unless you have to by miffo.swe · · Score: 3, Insightful

      But really, Windows is filled with pure userland tools all over. You would have thunk at leastsome of the new ones would be made in .net, like on linux perhaps?

      Funny that, that Linux use more .net than Microsoft itself.

      --
      HTTP/1.1 400
    4. Re:Easy: you don't start over unless you have to by R3d+M3rcury · · Score: 4, Insightful

      "Why waste time re-implementing something that already works fine?"

      From a coding perspective? Agreed. If it ain't broke, etc., etc. Politically, though, there is quite a bit to be gained.

      I am not a Windows Developer and I'm pretty ignorant about .Net. But, as a Mac developer, I know Apple gets a lot of credit for "eating their own dog food." When Apple announced Carbon, many Mac developers had this whole "Carbon is going away, it will never be as fully supported as Cocoa, Apple is going to screw us, etc." attitude. This is one reason the Finder is a Carbon application. Apple would have a hard time getting rid of the Carbon APIs and rewriting the Finder in Cocoa at this point.

      Another good reason to do this is to show what .Net can do. Again, I'm ignorant of it, so I don't know what it can do. But, to use Apple as the example, Apple's applications like iPhoto, iWeb, etc. are written with Cocoa. That certainly makes me feel more confident that problems with Cocoa will be found and fixed, that Apple will continue to support and improve it, etc. It's a better way to sell developers on using it than having some VP of Development stand up at a conference and say, "Hey you guys, you should really use Cocoa. It's cool."

      Third, and this is a variation of "eating your own dog food," but if Microsoft is making all these claims about how great .Net is, why aren't they using it? If it supports rapid application development, then it shouldn't be that monumental a task to rewrite Notepad, MSPaint, RegEdit, etc. with it. And if it is a monumental task to do this, maybe Microsoft needs to figure out why this is so and solve the problem. If rewriting a simple application in .Net is so difficult, why should I use .Net to write my applications?

  18. It seems to me that Java is another example. by Futurepower(R) · · Score: 3, Insightful

    Companies like Microsoft and Sun have always provided easily de-compiled languages for others to use, and not used them themselves.

    (The links provided are just the first listed for the searches ".NET De-compile" and "Java De-compile". There are many de-compilers, and the ones linked are not necessarily the best.)

    --
    Movie claims overthrow of the U.S. government: Loose Change, 2nd Edition.

  19. Power is cheap, time is expensive. by daemonenwind · · Score: 2, Insightful

    Why would someone sacrifice application performance for ease of development?

    Here's a reality check for you:
    Suppose you have a semi-large development task ahead of your team. In .net, you can create the code and have it working with 1200 developer hours, with standard C code it can be done in about 1400.

    Those extra 200 hours are charged to your department at $45/hour internally. Which means that the extra development time necessary to extend/create new libraries and start "from scratch" instead of using the .net framework is $9000. That's a pretty decent server to handle the extra load.

    Quite simply, hardware is cheaper than developer time. That's the driver - overall cost to create and maintain your application. NOT overall performance, unless the difference is so significant that the hardware cost to make up the difference would be astronomical.

    You want to understand the allure of .net? It's right there.

    One more thing...I stole the following shamelessly from MS's .net website:
    Microsoft .NET is the Microsoft strategy for connecting systems, information, and devices through Web services so people can collaborate and communicate more effectively.

    So...you want to write an OS as a web service? Here's a question for you: What are you going to run your OS service on? I guess that means you want Microsoft to have an OS for their OS!

    Duh indeed.

  20. Re:Can't blame them by GreggBz · · Score: 4, Insightful

    Uhh.. I call shenanigans.
    I write games also in, get this... VB.NET. (Which turns into the same CLR code as any other managed language)
    Fairly complex stuff, not commercial quality, but impressive none the less. Commercial quality of 4-5 years ago maybe. My current project has about 180 pages of source and that compiles in about 15 seconds on my 2.5Ghz machine. I'm using DirectX 9.0 SDK summer update 2005. You're aware that Quake II was ported to .NET and runs just fine? http://www.vertigosoftware.com/Quake2.htm Compiling that took about 90 seconds on my machine. I noticed approximately 80-90% the performance level of the original C / Assembly version. Maybe there is something wrong with your code, or design.

    My development experience in VB.NET has been a pleasure. I write bash/perl shell scrips at work all day so this is polar opposites. The brain dead IDE and syntax makes things nice and easy, and I can focus on problem solving and complex algorithms. Also the speed penalty is more than acceptable, unless you are writing some very serious games.

  21. Missing the point by nobodyman · · Score: 4, Insightful
    You're missing the point(s). Let's recap:
    The same application in C/Win32 does the same task in 8 minutes. That is 2 minutes per day times 60 people or 120 minutes/2 hours per day....[snip]

    This scenario is pure fantasy. The vast majority of apps nowadays are IO limited, and spend most of their time idling whilst they wait for on the hard drive/network for more data, or (more commonly) waiting for the user to type something or click a button. I doubt you'd realise these types speed gains you talk about - most of the time the user him/herself is the weak link in the throughput chain.

    ...Even if it took me an extra 100 hours to write the app in C/Win32 at $50/h that would only be $5,000.

    Well, you've left out those 60 people who are twiddling their thumbs for 100 hours because the "super-speedy C version" of their app doesn't exist yet. That's 60 people * 100 hours of thumb-twiddling * $8.00/h = $48,000 of money that is lost as users eagerly await the software that is going to save them $4,160 per year.

    In your world, they'll break even in around 12 years. Funny, you haven't convinced that development time isn't the leading factor in the cost equation.
  22. Re:actually, I rather like notepad by Jason+Earl · · Score: 3, Insightful

    I don't mind that notepad.exe is a pure text editor. What I mind is that it is the stupidest text editor ever. For example, at the very least it could deal with UNIX and Mac style text files intelligently. I mean seriously, how much is that to ask?

  23. Re:actually, I rather like notepad by st1d · · Score: 2, Insightful

    Quite a lot from a company that's desperate to kill off both. I think the parent was referring to the fact that notepad hasn't progressed much from the days when gui-based copy/paste was the new great idea. Other editors are nearly as small as, if not smaller than notepad, yet include editing features that make using them so much more efficient. Granted, I can't see too many MS users fondly glossing over an MS version of vi, but MS could do better, and I agree with the poster that suggested MS could probably just ask for someone to donate one, and somebody probably would happily offer it up, costing MS nothing.

    The only upside for MS for not doing so might be that leaving users with a painful editor discourages them from making changes to text/config files, saving MS from potential support problems, and more importantly, keeping Windows users clueless about how computers work. You know, like other "improvements" they've made, hiding the shell, reducing shell functionality, removing command line tools, etc.

    You could say MS likes to keep it's users uneducated, barefoot and pregnant. That way they won't stray. :)

    --
    Microsoft has just released their much anticipated hands-free cordless mouse. Warning, it may hurt a little at first.
  24. Re:actually, I rather like notepad by Jason+Earl · · Score: 2, Insightful

    That almost makes sense. Microsoft has a crappy text editor because they don't want people to actually edit text.

  25. Reasons I can think of by rikkus-x · · Score: 2, Insightful

    1. Large parts of Vista are built on existing code. If something's not broken, you don't rewrite it from scratch just so that you can say that you're using the latest and greatest technology. Not if you're smart, anyway.
    2. Windows Forms applications feel slightly sluggish and start slower than native - even for very simple applications.

  26. Re:the obsession with the V in front of the M by esme · · Score: 3, Insightful
    first, in todays day and age, what is not facing the web?

    it's not that there are a lot of apps that don't use the web, it's that they should be isolated from each other. my web browser generally only needs to write files in one or two directories (cache, downloads). ditto for my email client. my browser shouldn't be able to delete my email. my email client shouldn't be able to wipe my whole home dir. etc.

    people like to say that linux and macosx are inherently more secure than windows because of user separation. but all of the data i care about is owned by my user account and could be deleted by my browser or email client (given the right vulnerability), because they both have uneccessary access to the filesystem.

    -esme

  27. Re:the obsession with the V in front of the M by ultranova · · Score: 2, Insightful

    if the argument is that if the app crashes or malfunctions -- for whatever reason -- you don't want the V to go down with it, well, if my app crashes, i couldn't care less about the machine staying up.

    Some of us use multitasking. It would be annoying to have the whole machine crash every time Nautilus hiccups over something ;(. Besides, it is much faster to just restart the app rather than the whole machine.

    --

    Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  28. Disappointing. I think we deserve better. by appdev · · Score: 2, Insightful

    There are some very legitimate reasons for us to look to Microsoft to use .Net extensively in their own products, including parts of the OS.

    Readers here have seen the "dogfooding" idea, and have seen lots of arguments for why this makes sense in terms of getting requirements and design right. For a framework as sweeping and critical as .Net, that means real use in real apps by Microsoft. Now.

    I don't think there are too many people who would expect low-level code to be written in .Net (kernel, drivers, etc.). But lots of stuff in a modern OS distribution is really bundled applications. As "JSD" pointed out, components like Outlook Express are bundled applications, not core OS components. Survey 1000 people and ask if they'd rather have sucure, bug-free browsing and email or have Outlook Express run 2% faster. Anyone have any doubt at all about the results?

    Besides, the argument that unmanaged code is faster than managed code falls pretty flat on me. I completely agree that a good coder should be able to beat .Net with C++, but one of the reasons for a framework like .Net is that you want to make most apps perform very well, rather than just a few apps perform exceptionally well, and the rest run like crap or never get finished at all. A reasonably competent developer should be able to pick up a framework like .Net and use objects and data structures that are already developed, tested, and optimized. The reult may not be as fast as recoding the exact right algorithm in a native language, but for most developers and most development, they're going to end up with a better app than if they'd written it from scratch. That's why we use high-level languages, folks.

    I think what this really points to is a combination of two factors, both of which are a little unsettling.

    First, Microsoft is subject to the same product planning dynamics as the rest of us. For existing code and existing apps, virtually any incremental change will be more economical and less risky when built on an existing code base. Even the iffy cases will *appear* less risky when built on an existing code base. In order to undertake an architectural change, you have to have a pretty compelling reason to do so, and a good bit of courage to shelve the old stuff and move forward. This hasn't happened in a meaningful way in Vista.

    Why is this disturbing? Simple. This points to the depth of reengineering that's going into making the OS and apps more stable and more secure. Very often, the right thing to do when fixing a bug is to find the specific pinprick in the code and patch it. Sometimes, however, when you start to accumulate enough bugs in one place, you have to consider whether there's a systemic problem in that area. In those cases, the only way to stop the bugs for good is to fix them systemically -- ie, to re-engineer that part of the app. If this is happening anywhere in the Vista code base, why wouldn't it be happening on .Net?

    Which brings me to disturbing point #2. The release date for .Net 1.0 was what - 2002? And it's not like it snuck up on anyone. Let's give MS the benefit of the doubt and say that they all knew about it in 2000 / 2001, so it's been five years, easy. That's plenty of time to work out the bugs in a framework that they expect the rest of the world to build apps with. We've had the .1 releases, and we've had the hotfixes and service packs. It's got to be production-ready now, right? So why isn't it showing up in more of MS's own distributions?

    It's either because any MS OS release is really a bunch of pretty small changes scattered across a staggering number of individual files and components such that MS can't justify rewriting any of the components, or because MS has, as Grimes concludes, lost confidence in .Net.

    I'm a fan of .Net. I'd like to see it succeed. One of the critical factors for its success is for it to reach a critical mass. It's time for MS to step up and help .Net hit that critical mass.