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.""
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".
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.
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.
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.
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.
The proof is in their application layer. Office, Visual Studio, and their other user applications.
.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.
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
Microsoft deciding to keep OS components in native code is not indicative of anything.
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."
.. 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.
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.
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...
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.
.Net runtime.
.Net runtimes.
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
A better question would be to ask Microsoft why they won't allow anyone to publish program benchmarks for Java vs
Enjoy,
It's just the normal noises in here.
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
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.
.NET apps in multiple languages.
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
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.
.NET is for rapid app development
.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.
But that is NOT how Microsoft is promoting it. To read their ad copy, they make it sound like
Don't blame me, I didn't vote for either of them!
Warning - offtopic. Sorry.
.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...
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
Why yes, I have designed and written an 32/64-bit protected mode, fully preemptive operating system from scratch (in C). It was hard.
Why not a C# notepad, mspaint, explorer.exe, taskmgr, regedit etc?
.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.
.NET or longer. Consider Office. That's been around forever.
.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.
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,
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
You're saying they should just throw away everything and do it all over again in
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.
Why would someone sacrifice application performance for ease of development?
.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.
.net framework is $9000. That's a pretty decent server to handle the extra load.
.net? It's right there.
.net website: .NET is the Microsoft strategy for connecting systems, information, and devices through Web services so people can collaborate and communicate more effectively.
Here's a reality check for you:
Suppose you have a semi-large development task ahead of your team. In
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
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
One more thing...I stole the following shamelessly from MS's
Microsoft
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.
Uhh.. I call shenanigans. .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.
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
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.
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.
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.
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?
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.
That almost makes sense. Microsoft has a crappy text editor because they don't want people to actually edit text.
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.
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
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.
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.
.Net, that means real use in real apps by Microsoft. Now.
.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?
.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.
.Net?
.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?
.Net.
.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.
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
I don't think there are too many people who would expect low-level code to be written in
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
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
Which brings me to disturbing point #2. The release date for
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
I'm a fan of