« Being Negative about Windows | Main | The Video iPod Doth Rock »

June 11, 2006



strange use of the word technical.

1. It is a successful platform in use today, which is benchmarked and compared side-by-side with Windows. In server-based applications, it often comes out ahead of Windows in some performance and security benchmarks. Rather than being an "idea", it is an actual contender and is being used side-by-side with Windows in many corporate production environments.

Not sure how this is "technical". "it often comes out ahead of Windows in some performance and security benchmarks". You may want to add something like " in certain limited circumstances." ;)

As a take away, can we assume that by this, you mean Windows beats Linux in performance and security in most of Windows core areas, but there are some specialty environments where Linux out performs Windows.

2. Its security model is remarkably simple and even could be called antiquated.

I will leave this alone.

3. It has an efficient lightweight process model that is a superset of the one provided by Windows (that is, Windows process model can be built on top of the Linux process model).

My understanding is that this is just plain wrong. Not my area of expertise, but the lightweight process design is considered a flaw in Linux (I have a vague memory of Linus admitting as much in forums -- that his was a project to get the simplest implementation rather than the state of the art. I am not sure what is meant by the Windows process model can be built on top of the Linux process model -- certainly it can -- but not efficiently.

4. It has been competing vigorously with Windows, and there is already a large device driver base. In fact, vendors of hardware consider Linux to be second only to Windows in their priority for releasing device drives, and many vendors already do.

And how is this supposed to be a "technical" advantage for Linux over Windows?

5. Does not seem technical, and I am not sure you want to inherit an "entrenched" development environment.

6. It has a configurable kernel which can be used in everything from tiny embedded devices up to very large multiprocessor systems. The kernel is small, modular, and extremely robust.

This is a legit point, and this is one of the reasons that Linux does well in certain small specialty roles, but it is likely the reason that Windows is better in the vast majority of real server, real desktop cases.

7. It is much newer than Windows, and has very little legacy code by comparison.

Again questionably technical. More importantly, legacy code is nothing but positive. It is pure gravy if old code works on your new system. If Microsoft wanted to not have legacy code, they could simply abandon their declaration and work on making it worth while, and tweak their already superior kernal and OS. If you like the Directory/File Naming conventions in Unix, AND you think compatibility is a negative thing, make some rather trvial changes (in the grand scheme of things) to the security model and the File system. If you want to drop compatibility, drop compatibility. If you think having the new code loosely based on the old code creates a pyschological reason MS is unwilling to drop compatibility, then it is a pyschological reason, not a technical one.
Early in the talk of Vista, Microsoft considered making a lot of things VISTA only, but they got pressured by customers who wanted support for the new features in WinXP. A lot of these customers have a pretty good idea of what is going to be good for them.

8. An enormous amount of effort has already been done to create Win32 compatibility layers. WINE, Crossoffice, and Xen are three specific technologies designed to run MS applications under Linux. Rather than criticize these as inadequate and lame (they are), consider what would happen if Microsoft were to take over development of one of these. Progress would be rapid and the problem of compatibility would be cleanly isolated.

In number 7, legacy is bad. Number 8 is that we can run emulation. OK, fine, but how is that better than offering native support, the current status quo.

9. It has a shared library model which allows multiple concurrent and incompatible versions of software to co-exist simultaneously without the need for extensive additional technology investment or developer education.

It is unclear to me, certainly no expert on Linux, in what sense you mean this. Version compatibility is a hard problem. Shared Library compatibility is a much harder problem. This type of problem is probably also exponentially related to size of the installed user base. Again, I do not know Linux well, and I am not sure exactly what you mean by this, but my intuition tells me that if you scaled Linux installations out to match Windows installations, coupled with the same level of administration that you are actually going to get on all those desktop installations, and you will resurface the same problems (and I cannot see how open source does not make this significantly worse by giving to much control to too many developers, or by limiting innovation by creating excessively strict interfaces).

I know you think you have already made the case for dumping the Windows codebase, but I am pretty sure you have not. Most if not all of the reasons you suggest for moving to Linux, must already assume that dumping the codebase is a good idea, because most of the reasons for Linux that you suggest actually favor the existing Windows Codebase ~ I would love to hear from some of the OS Kernal guys about the comparative value of the lightweight vs. Windows process model ( definitely not my area ).

As for the business reasons, I am not sure they are actually much of a benefit. Microsoft is better of with some competitors, and open source is a great complement to Windows, it fills niches which do not have financial incentives, and a great deal of open source is writeen for Windows.

Apple has made some advances against Microsoft, epsecially in compositing (a simpler trick than for MS because they control the hardware), but are not a serious threat. With Vista, Microsoft will have surpassed Apple for good in all areas except Unix compatibility, and it is not clear that MS would even like to crush Apple any more than they already are given that monopoly status and restrictions would be sure to follow.


You can't take over the linux kernel development process and steer it into your direction. Not possible.


The problem with your argument is that you're looking at this from an engineering standpoint rather than from a user standpoint. As an engineer, you want things to be sleek, clean, and elegant. This requires redesigning things so that they don't have all that nasty backwards compatibility to deal with, and anything that does implement it is easily contained. Modularity is not a feature that users care about, it's a feature that engineers care about because of its aesthetic value.

As a user, I just want everything to work. The system must be adaptable to new uses and features, but why would I upgrade if everything I have now doesn't keep working? I don't want the programs I'm using now to not work as well just in order to get some new programs to work. What do I care if some module is optional? That just means it might not be there when I need it.

So what would happen if MS rewrote Windows so it's small and modular and drastically simplified? Well, they already did that, and it's called Windows CE. It runs on just about any processor you can find and can fit in just 350k! Of course you have to sacrifice a lot in the design of a system that can be that small, so you would probably want to use Windows XP Embedded; it can get down to as small as 5MB.

It turns out that Windows is already modular in a sense, so why can't we pare Windows down to the bare minimum ourselves? Because it wouldn't really be that useful. Disk space is cheap, and I doubt you could even find a company making drives smaller than 40GB anymore. Leaving features out just makes it harder for a software vendor to support their products and makes it harder for users to use software. I mean, you would probably say "I don't plan to run any games or office apps, so I can easily save a few megabytes by not installing OLE and DirectX". But then Java applets wouldn't work anymore because it turns out that they activate using OLE interfaces and display via DirectX. Or perhaps you would leave out ODBC because you don't plan on using any databases, but then mail merge wouldn't work. Would you want to have to support that?

Now, look at the Linux commercial desktop application market. You'll notice that there isn't much to be found. Without going into all the reasons why, one biggie is that Linux is just too expensive to support as a platform. Your user could be running any of a hundred or more distros, each with a hundred different installation options. How do you even know where to install? (/usr/bin? /usr/local/bin? /opt?) Ordinarily install locations are just compiled in, but most ISVs don't want to be distributing source code. Once you start compiling, now you're in dependency hell because any non-trivial app is going to use all kinds of libraries.

Java was supposed to solve all these problems, but you'll notice that Java apps haven't exactly taken the desktop market by storm the way people thought they would 10 years ago. Why? Well as it turns out, the object-oriented way to write a GUI app is to define GUI objects like buttons and textboxes, then telling the system "execute this function when somebody clicks on this object". Unfortunately Java didn't include any way to do that (i.e. Java has no function pointers). Microsoft saw this shortcoming and modified Java to add a feature called "delegates" that would enable simple drag-and-drop GUI creation. Sun didn't like that idea, so they sued, and now we're stuck with "inner classes" and "listener patterns". I won't even go into JNI here, but it essentially means that it's hard to interact with the system in ways Sun doesn't want you to. That's why C# is so popular now.

That's right; MS didn't just reimplement Java and call it C#. They took the basic idea (OO language, VM, C-based syntax), and designed it correcly so that it would be useful to Windows programmers (and from looking at Gnome, Unix programmers too). That means a C-based OO language that compiles to a portable VM, but it includes things like events and delegates to make it easy to write GUIs, it makes it easy to call system services (P/Invoke), it encourages interoperability with other languages (as opposed to the JVM, to which most languages cannot directly compile), and it allows for expansion (generics were easy to add to C# and VB, hard to do right for Java).

Linux would be the same way. The only way to make it run Windows apps is to build Windows on top of it. You would have to extend it so much that it would barely be recognizable as Linux. At that point, why even bother starting with Linux? Why not start fresh with something new? But then you're just reinventing NT.

And quite honestly, I don't understand what your big hangup is with lightweight processes. Who cares if it takes an extra 2.7ms to create a process? The only time you should really care about process creation overhead is when you're creating lots of them. The only reasons I can think of that would cause this would be some large shell scripts or an old daemon like inetd that spawns a process for each connection.

The old inet daemons had to fork for every connection because Unix didn't have async IO or multithreading. Since NT has had those for 13 years, there's no reason you would write a Windows service like that. That leaves only shell scripts, which are generally written differently on Windows -- I prefer Perl, myself.

I'm still waiting to be convinced.


Hi Gary, interesting article.

I would have thought the first article in the series would have given the evidence for Windows architectural complexity causing a significant number of security problems? Otherwise you are solving a problem that does not exist. Looking through all of the Windows vulnerabilities, how many can be attributed to, what I think you suggest might be, an overly complex architectural design of Windows? To me it seems most are buffer overflows, etc that are being addressed in Vista through efforts such as the SDL. *Some* of the exploits can get further because of the design of Windows, but is it truly because of a possible lack of proper separation between different layers?

Also, with any Consumer "OS" (OS/platform/applications), their will be vulernabilities. It will never be truly secure. Considering the popularity of Windows, do you really think their is any other product in this category that has less vulnerabilities? How much real benefit are you going to get out of a completely new OS when their will always be bugs? Will it cut the number of bugs down by an amount above the threshold required to make it of any significance to the end user? And, even since XP SP2, it seems that social engineering has become the main focus, and possibly will always be the weakest link that attackers will target. And what about the applications? What is the point of making an ultra-secure-perfect Windows, when their will still be applications that can be exploited? The exploits may not get far, but how far will they get with Vista anyway? Where is the evidence that architectural complexity comes into it?

Also, their are other ways to mitigate threats, such as two-factor authentication, backing up data, securing data, encryption, etc.

All these points suggest, even if Windows was not completely perfect from an architectural standpoint, making it better will not be of any significance, and just means more problems, and a new learning curve for Microsoft. Who knows how Linux will go when it stands up to the scrutiny of Windows.

Unless your proposal addressed bugs that make up a large percentage of security issues with Windows, it does not seem like there is an actual basis for this idea.

These are my initial thoughts anyway.


I would also like to add, how can you tell that the architecture of Windows is irrepairably complex? It would have to be fundamentally flawed to need changing, and I don't know if that is the case. While I know there are difficulities in rewriting something, it depends on how flawed that something is to begin with. Modulation makes changing these things a lot easier.

Either way, you could be right in regards to needing to find a different architecture. It is difficult for me to tell from an outsiders perspective.


there are more untrue statements in this blogpost and comments than true. get tha facts not FUDS.

linux kernel contain only small part of POSIX/Single UNIX Specification. linux do not need to care legacy code for compatibility with apps based on screwed API.
and it is not much newer. starting in 1991 based on POSIX stadards and 2 decades of UNIX tradition.

lightwight processes - one of the BIGGEST ADVATAGES of UNIX systems. simple, efficient. i bet you heard about fork(). that's why threads are not used as much as in windows. spawning a process is not a problem - it's really simpler to fork than to create threads and care about them.

simple security - complex enough in most cases. more advanced ACL's can be installed.

WINE, CrossOver Office, Xen - very little overhead. some people say that even some games are running better by WINE than windows (they say something about better memory management). you don't have to build windows on top of it. simple libraries and a program which executes non-native binary file.

OpenOffice - good enough for most people. OO Calc inferior to Excel, but gnumeric is close enough.

linux filesystem hierarchy standard - somthing wrong with it? more standard than My Something directories not used by all software

where to install (/usr/bin, /opt etc) - wtf? just install the package. no one's asking where it should go. instalation from package manager and even sources is trivial.

> Microsoft completely eliminates open source as a competitor.
no comment
> By embracing Linux, almost all open > source efforts suddenly lose most of their "shared mission" to
> compete with Microsoft.
the world is not about microsoft, certainly not the opensource world.


This is very interesting site


You got to be joking me, the GPL is the product of Stallman and the Free Software Foundation, and MS legal team is going to steer it in its' direction? Then OpenOffice and others are suddenly going to vaporise because we can now buy Microsoft Office? I have openoffice because it does just about everything MS office does and is free. Then the Open Source Movement magically dissolves as people can now buy Microsoft again? Microsoft just scraps all previous effort & backwards compatibility to crank out a nice-looking distro?

Your Windows TNG sounds like crackware to me, cause that is what you've been smoking friend. ;)

The comments to this entry are closed.

My Photo


  • Blue
    I am primarily a verbal person, and love abstract relationships and philosophical challenges. I'm also a visual person, but so often it's hard to get that part of me to reveal itself. Photography has been the tool to help me do so.



  • http://feeds.feedburner.com/TrialByFire
Blog powered by Typepad
Member since 07/2004

Blog Map

Email Subscription

  • Powered by FeedBlitz