Windows vs Everything Else - TechCentral

Windows vs Everything Else

Matthew French

[By Matthew French] Ever since the first vi user met the first emacs user, the IT industry has been plagued with intense debates about very little. No fact or rational argument will convince either side they might be wrong. As the discussion depends on what the participants believe, these are often described as religious debates.

Now real religions are important and often define our lives. Religious debates in the IT industry, on the other hand, are usually about the most obscure and arcane issues that one could ever hope to consider. It is no surprise that a party I recently attended was for IT people only. Probably best not to let ordinary mortals mingle with people who can take text editors so seriously.

If you have been involved in IT for more than a few years, you have probably experienced these debates. Long, seemingly unproductive arguments where the opposing sides obsess over every detail. All you want to do is finish the work, not nitpick about the perfect way to complete it.

Of course if you enjoy what you do a little too much, you might have started a few of these arguments. I know I have. There is no shortage of topics to choose from: the best programming language, operating system, text editor, pattern, paradigm, open-source licence, architecture, hardware, software… The list is almost as long as the number of people willing to devote hours to scoring points for their chosen favourite.

Sometimes these debates are just a way to pass the time while waiting for a back-up to finish. Normal people might argue about the merits of football teams. However, in IT, there is a good chance that some of the participants have a hate-hate relationship with physical exercise. So they have to find something else to argue about.

At times the debates can be more serious. The outcome of the argument might determine which technology or idea will be used, and they are mutually exclusive. Operating systems, databases and programming languages all fall into this category. Once a winner has been chosen, it is very hard to switch to something else. These debates can be intense and, if not properly managed, the resultant fall-out can last for months. In the worst-case scenario the losers who stay will feel compelled to point out how every small problem would not have happened if you had gone with their choice. Not a great way to build a productive work environment.

Sometimes, the debates don’t happen at all. Or they get written off as the argument of someone with an axe to grind, or of someone who doesn’t understand the practical implications. Or of someone who just wants to be different.

Recently, I was reminded of this last scenario when I had to do some administration on a server running Windows. Over the years I have developed a strong bias towards using Unix for everything. This includes the desktop, where I haven’t used Windows for anything personal in almost a decade. Well, except for the lonely copy of Windows XP Home which is used for playing games.

While I don’t like Windows as a desktop operating system, I see this as a personal choice. Everyone else can continue to use Windows so long as I have the freedom to use what I want.

I therefore recognise that I have this bias against Windows, which is why I only put up a half-hearted fight recently when a customer told me they were installing Windows servers throughout Africa. I lost and it didn’t take long for me to regret the decision.

I have to make my position clear. Others can use Windows on the desktop, but I have issues with using Windows as a server, particularly an application server buried deep in the bowels of a data centre without a screen or keyboard. My objection stems from the fact that the original Windows was designed for a single user, and for graphical applications running on a desktop. Many of those design decisions are still evident in the operating system today.

The first problem is ease of remote access. As a greying Unix administrator I far prefer a quick SSH connection to the tedium of setting up a remote desktop or VNC connection. It is bad enough when the servers are in the same building on a high-speed network, but when the connection goes through erratic, high-latency satellite connections it can literally take half an hour to log on to an application.  Two users trying to log on to the same account on the same server can provide hours of fun, and waiting for 20 minutes just for the Windows login sound to play falls outside the bounds of what most managers would consider productive work.

The next issue is the difficulty of running background applications — services in the Windows world. These require one to write custom code to start and stop applications, and can behave unpredictably depending on how the application is started. Network drives can be a nightmare as drives mapped by the logged-in user can conflict with drives mapped by the system account. File-locking constantly causes issues, making upgrades hard to manage and sometimes making it impossible to read log files while the application is running. The registry might have seemed like a good idea at the time, but in reality has made it hard to manage configuration.

The permissions system in Windows is convoluted, and giving applications the ability to accomplish certain tasks can be a tedious and highly experimental affair. There are a number of different security subsystems that in theory should give finer control but realistically result in administrators enabling everything just to get an application to work. The fact that the security model changes from one version of Windows to the next, sometimes between different service packs, only makes the problem worse.

There are many other little features that can make managing a Windows server a painful experience.  If you click in a command window, the process running in that window will pause indefinitely.  Many applications like to pop up dialogue boxes on the active desktop and don’t provide any way to write the errors out to a log file. I have lost count of the number of times I have seen a late night batch process fail because an application was waiting for a user to click the OK button.

They say a bad artisan blames his tools, but there are limits. Sometimes it feels as if using Windows as a server is like giving a hammer and some nails to a master carpenter, or running a moving company using mini vans. They do the job, but there are much better options. I was reminded of this when I was writing this article: we had a critical Windows server become unusable for three days. Turns out it was infected with a virus.

If you are going to use Windows, then viruses are just part of the territory. They are a known risk, with no shortage of vendors pushing solutions to the problem. So I cannot really blame the platform for something that was an operational error.  Instead, my issue was with how long it took to find the source of the problem — the application involved didn’t have any useful logging, the config was littered all over the registry and the actual issue was eventually identified by having someone go to the physical machine. Which in this case was 7 000km away.

One could argue that this was the fault of one application. Unfortunately, this application was not alone. It was following the same conventions used by too many other Windows application —  conventions encouraged by the environment on which they run.

Yes, there are easy-to -manage Windows applications, though these usually require significant dedication from the developer and many dialogues to keep them manageable. With some effort it is also possible to customise a Windows server to have many of the features of a Unix box, including an SSH login, though my elitist side still wants to say that it is a poor imitation of the original.

There are times when using Windows as a server is unavoidable. When one wants to run Microsoft Active Directory, for example. Or Microsoft SQL Server, Microsoft Exchange or Microsoft file sharing. Any alternative operating system will obviously be a poor choice for running applications written in .Net — except for those rare examples that have been written from the beginning to work with Mono, the open-source, cross-platform alternative.

There are a number of arguments for using Windows: a common one is that the application in question only runs on Windows. This is understandable at first glance, but often one of the first requirements is that the application must run on Windows and nobody ever looks at the alternatives.

Then there’s these gems: other operating systems suffer from a skills shortage, they only run on expensive hardware and the local vendor doesn’t provide adequate support or charges too much. I cannot help observing that these aren’t really arguments for Windows. They also carry the implication that proponents are willing to settle for second best.

Of course, I could just be an IT zealot with a heavily biased opinion. Sometimes I think I’m being too harsh. But it’s never long before I’m presented with yet another example of why using Windows for a server is a bad idea, and my attitude inevitably hardens again.

  • French is an independent consultant with more than 20 years of experience in the IT industry


  1. To summarise: “I don’t use windows much, I don’t like it, from this article’s contents, I obviously don’t understand much about it, but here’s why I think it sucks anyway.”

    ” I could just be an IT zealot with a heavily biased opinion” … pretty much!

  2. Matthew French on


    Thank you for so eloquently proving my point. Unlike other debates, this one is usually written off before it starts.

    As you must be aware, it is pretty difficult to avoid Windows in the IT industry, and as a result it is necessary to use it and understand it, regardless of what I might think about it.

    I am aware there are a number of issues in my article that only apply to specific versions or configurations, but dealing with the permutations would have lengthened the article and not really made the point any more compelling. Still, if you believe any of my observations were in error, please feel free to correct them.

    Alternately you are welcome to say why you think Windows is the right platform for an application server, and what advantages it has over the alternatives.

  3. This article states it right… everybody has their own opinion and will use what they are familiar with. However, I have been in environments that use 50/50 Windows/Linux mix. I don’t even have to think twice, I would choose Linux over Windows any day. Why? Because it just works, and it works very well. I have seen countless Linux systems run that have only been rebooted due to power failures. Whereas Windows requires a lot more attention and maintenance, frequent rebooting due to patches every month, not to mention the licensing and many other problems and disadvantages of proprietary software. Your mileage may vary, but Linux has matured a lot in the past few years, and its supporting software is vast and stable.

  4. Proving what point? I was just summarising what you yourself pretty much said, and then confirmed later in the article.

    The most striking issue is your apparent inability to conquer the concepts around windows permissions. The bit I found particularly funny was “but realistically result in administrators enabling everything just to get an application to work” because that’s EXACTLY what inexperienced *nix users do. I’ve seen it countless times over the decades on most OSes. This is not an issue of the OS, though, it’s user error plain and simple. Any OS won’t get the job done if you don’t know how to use it properly.

    Waiting for 20 mins for an RDP connection to play – come on, really… I’ve adminned many boxes over many stinker connections, and that’s just silly. And if it were true, maybe a cause of the problem was enabling things like sounds and multimedia experiences over a crappy connection. They’re all just tickboxes – hard to miss! This is either blatant trolling or blissful ignorance.

    Just for the record *nix paid for my house and car, and I’ve consulted on it on a pretty hardcore level for Motorola and Ford amongst other large companies – but as a developer, I still prefer Windows as a platform to get stuff done – it’s head and shoulders above everyone else for the developer experience.

    File locking and not being able to read logfiles? Another common thing – users use editors like wordpad to try view things, which opens it in read/write mode – use notepad or any number of free text viewers, it falls back to shared read-only mode like most *nix editors – this is an annoyance, I have to agree. But just about any sysadmin with a few weeks experience will have worked out how to view live logfiles.

    I don’t get your gripe about services? It’s a few extra lines of code in Windows to handle the service/daemon-related messages, kinda exactly what you’d have to do in *nix to achieve the same result.

    Background applications? Hit a command prompt and type “start /?”

    Apps waiting for user input and allowing no switches to disable them? A badly written app is a badly written app regardless of OS. The fact you personally have more issues with them on an OS you don’t know as well isn’t massively surprising.

    I’m by no means a fanboy, but I have 20+ years of application development experience over many platforms. This kind of ill-informed one-sided article is very commonplace. Seen it a hundred times over the years, and I’m sure this won’t be the last.

    >Alternately you are welcome to say why you think Windows is the right platform for an application server, and what advantages it has over the alternatives.

    There’s no “right platform for an application server” and anyone who makes a blanket statement like that is showing their ignorance. Both *nix and Windows can do just about any job, and whichever one you have the most skills for is probably the best platform for you. You’ll notice I haven’t detracted from *nix, just corrected some misconceptions about Windows. If you were talking actual applications then it’d be easy to point of a TON of specific cases where Windows is better, but condeming it as a platform? On the internet, we call that trolling for hits, and I feel dirty having being sucked into the discussion 🙂

  5. Matthew French on

    Thanks Greg for the detailed response. I can now address the specific issues.

    On the matter of permissions, I agree about inexperienced unix administrators preferring to grant all permissions. However I wasn’t talking about file permissions but system permissions such as the local policy user rights assignments. Inexperienced Windows administrators don’t even know these exist.

    For the sound issue: yes, you can turn it off but it is on by default, and the source of the slow network response is not always obvious. I used that to illustrate how the platform is geared towards local users with remote administration as an afterthought. Just one of the many frustrations one must deal with.

    Opening text files in notepad is not realistic if they don’t have line feeds. But the locking issue goes beyond text files.

    Writing a service is not just a few lines of code but also a number of registry entries as well. This can be added to the code but then it is no longer a few lines.

    Unfortunately writing a service also assumes you have the code, a compiler and the necessary knowledge. If an application wasn’t written to run as a service you need to find a workaround. They exist, but often not in a form one would like to use in a production environment.

    The START command isn’t much help without a logged in user, and doesn’t really run a process in the background. All it does is detach the process from the current script.

    We will have to disagree that development on Windows is easier. Developer Studio is awesome, but in my experience that is about where it ends.

    Since we are swapping resumes I guess I should mention I have logged more hours developing Windows applications than on any other platform. So I can appreciate how it feels easier. However when I look back I feel I have accomplished far more with far less effort in *nix. Unfortunately that is another debate I am sure I will suck you into. 🙂

    But enough nitpicking.

    Normally I would agree that there is no single right platform and usually find such fundamentalism distasteful. As I mentioned there are situations where Windows is the better choice. And if one makes the decision by weighing up all the factors honestly then I have no issue. Although that is much harder than it sounds, as this debate shows.

    However my experience is that Windows is usually chosen for the wrong reasons. More importantly I have experienced a number of production issues where critical systems became unavailable for days – despite SANs, clustering and rigorous change processes. And inevitably the root cause and consequent inability to solve the problem was a feature of the Windows architecture.

    I should add that these were systems run by Windows specialists. Of course I have also seen spectacular *nix and mainframe failures, but these were usually solved relatively quickly – except for those bizarre situations where a critical hardware component was not available and there was no backup.

    As for the charge of trolling: the original article was much longer but I deleted much of the polemic because that would have been trolling – with a net. However I genuinely believe that Windows is a poor platform on which to run server applications and I don’t believe this is a “religious” issue.

  6. >>However I genuinely believe that Windows is a poor platform on which to run server applications

    Because of this statement I won’t respond any further. It’s just so obviously wrong and there are so many real-world examples that prove it’s great as a server platform in skilled hands. If you genuinly believe this then we’ll rather just agree to disagree.

  7. Saying windows is poor platform for server applications is like saying screwdrivers are poor tools because you can’t open a flat head with a star screwdriver.

    I’ve been around *NIX’s so long it’s just the colour of the box for me, I look after a large Linux infrastructure and I like it that way.

    I would never for a second even realistically consider using linux for:

    a) A mail server
    b) A file server for desktops
    c) A desktop

    And before the comments about sendmail, exim, postfix, qmail etc, I’ve worked with all of them, they’re MTA’s, just that. Exchange is the whole deal. Fileserver? Samba? Right. Nice toy, when it works.

    Seriously Matthew, we would have expected more from you. If greg is who I think he is, we’ve both been around the block and both can authoritatively say your article is utterly biased and without fact.

  8. Matthew French on


    I absolutely agree with your points on the desktop, mail servers and file servers. I believe my article says as much.

    As for my article being without fact… well it is an opinion piece, but I have declared my bias and put forward my reasoning. As much as was possible in this format.

    I don’t mind being wrong about this. Actually I would like to be wrong as this would restore my view of a harmonious Universe. But no matter how I examine it, I keep coming back to the same conclusion.

  9. This article and the user comments surprisingly forget one major downfall of Windows: zero access to the source. How can everyone be forgetting the most important thing of all? The open source unixes work so well because they stem from open collaboration, free access to information, and technical understanding. Windows breeds contempt for the science behind computing and networking simply because it tries its utmost to hide information from the operators and restrict one’s freedom. How many exclusively Windows admins know how interface MTU, TCP MSS, and ICMP interact with each other? How many of them even know about RFCs and its implications on the software they manage? How many know the difference between a 400 and a 500 SMTP error code, and how to trace the source of either? How many know how memory is managed, or how the PC bootstrap process works?

    While Windows may have technical merits in some things it does, it crushes the spirit of science to get there. I don’t care how much money you can make off either platform. The only things that matter are freedom, art, science, and the deeper understanding one can gain from others and elevate for others. So please, take your selfish, fascist, capitalistic software and burn it – it is a disease on humanity regardless of how well or badly it might get certain jobs done.

  10. I’m a strong Unix user of various flavours, but I am not really a fan of it on the desktop, apart from OS X.

    I can agree that Windows is the most suitable for offering Microsoft file and print services to a network of Windows desktop users. When it comes to Outlook style integration and collaboration for an office of desktop users, Exchange is a strong choice, but when it comes to mail transfer, filtering and delivery, Exchange is a very poor choice. Most of the time Windows is simply the most suitable thing to work with for an environment that’s already Microsoft dominated, which is usually office IT. For internet facing infrastructure, especially on the higher end, various Unix flavours make better sense.

    However, most of the time, the main problem seems to be the people. You can easily find a Unix administrator with 15 years experience, who has had access to documentation, source code and a feeling for best practices built up and refined over the years. On the Microsoft side it’s impossible to find a Windows 7 expert with 3 years of experience, and it’s going to take quite some time for that person to learn a lot of the quirks the hard way and from reverse engineering this closed source system. There are people who are very good with Microsoft products, and I have come across a few of them, but they usually spent some years working for Microsoft in the US. I don’t have that much trouble finding Unix experts that can build and maintain implementations of a similar calibre, though to find them cheaply is hard.

  11. Wish Mac OS X had Jails. Maybe its needs to have a 100% FreeBSD core, other then that its a great platform!

  12. Aragon, access to the source code is meaningless, it implies you can read the language it’s done in, you didn’t make a comment about having access to the source implies better security, which shows you’ve clearly read ‘Reflections on Trusting Trust’, a paper that Linux folk like to ignore.

    You’re mistaken about how much MCSE’s actually do know about the network layers and as for SMTP, not a hell of a lot of UNIX staff know the different error levels.

    Kriek, you really can’t compare Windows and UNIX staff, they’re different mindsets, it’s like comparing my section to the AS/400 and Z people. Same industry different way of thinking.

  13. My first comments are directed at Brett, who seems to present a flawed argument.

    “I would never […] even realistically consider using linux for:

    a) A mail server
    b) A file server for desktops
    c) A desktop”

    I’ll half-grant you (c). Windows on the desktop is often a better fit for users than Linux would be, although lately this does seem to become less of an issue than it used to be. But now next we have to look at (a) and (b). Your definition of file server being constricted to only SMB, aka Windows Sharing, feels somewhat..selective. What about the alternatives? WebDAV? NFS (which is now even supported by default on Windows 7, to my knowledge)? Then we’ll move on to your definition of a “mail server” as “a mail, calendaring, appointment and all-the-rest-in-the-groupware-class server”. This is either blatantly ignorant of what encompasses the functionality of “mail server”, or is a mindset so deeply engraved due to the package offering in which way you get Windows-based mail servers and as a result is just “the answer”. And with “the answer”, I mean it in the same as you’d reply “Ag, okay” when someone asks how you are doing while the two of you are greeting.

    Next, Greg’s statement. “It’s so *obviously* wrong […]”. I almost want to comment “cute” in response to this, but that might be too patronizing. Using the word “obviously” falls within the domain of implicit knowledge, and is not a strong basis to use for an argument. You have to state your reasons and, as far as necessary, show their merit and how this trumps the opposing argument(s).

    Regarding the (working) knowledge of network protocols and error codes, I do want to posit a question, or rather a consideration, for this point: how many *nix admins are trained by way of apprenticeship (in which case their mentor and “syllabus” may be of varying quality), autodidactism or alternatively undergo formal training, versus the trained Windows administrators who have a minimum basis of documentation or coursework which to go through and show sufficient knowledge of before they can use the title MCSE? The reason for this question is plain: the one would most definitely be exposed to the meaning, the other not so surely.

  14. @JP, Windows boxes talk SMB as the default option, making users fiddle with different protocols is just going to alienate you.

    As for the mail server story, what do you think a mail server is? It’s a multifaceted collection of services. Simply living in the MTA world is keeping your head in the sand.

    Getting down to the skills of MCSE’s vs UNIX staff, UNIX staff generally tend to work on high end kit and usually are a little more careful around it, however you simply cannot compare the amount of material / training required for a MCSE as opposed to say a RHCE. Have you seen what the networking component looks like? Clearly not.

    To be fair though, I was brought up under the often not so gentle hand of administrators and sysop’s over the years, I’ve worked on a great deal of platforms in my time, not just UNIX and Windows. I have the greatest respect for admins who know what they’re doing and follow sound practices, Windows/UNIX/Other

  15. Ah, thank you, Brett. I hoped someone would bring out such a remarkably uninformed opinion. I expect that, when you’re hiring MCSEs, you’re doing so because you need someone who can skillfully handle a network of the size and/or importance you reached. That goes to argue then that you don’t *want* your users fiddling with settings. You don’t want your user to even know anything about it. You want to deploy their workstations based on policies, like any smart sysadmin would. Doing otherwise is merely a highly effective way to waste your sysadmin’s time, and ensuring that they can’t be put to much better use in whatever other way.

    And to follow up your other remark..I guess a web server should also store and perform some other assimilated services? Or would I be having my head in the sand to say that? You’re thinking of a package deal, Brett. You’re going into this to buy the 2-year contract from Vodacom that gives you the 3G dongle and 2-year walk-in service. I’m going into this buying the cellphone and a prepaid SIM card.

  16. @JP >>You have to state your reasons and, as far as necessary, show their merit and how this trumps the opposing argument(s).

    I stated my reasons, and it’s a proof by example, the merit is all over the world for all to see. Please re-read my previous comment again. I’m fairly sure you’re at a skill/experience level enough to realise that a lot of pretty cool things are done on windows servers without me having to spit out examples. I think it’s pretty obvious. If I were having this discussion with britney spears I might have to justify my remark with examples, but this is a tech site. I’m sure you haven’t just started using computers and stumbled on this comment section randomly.

    >> That goes to argue then that you don’t *want* your users fiddling with settings. You don’t want your user to even know anything about it.

    Well, again, obviously 🙂 – the sysadmin’s job is to provide a stable, consistent working environment for the employees that they can’t break by fiddling. If they need to know any more about it or need more access to do their job (ie developers and such), then it’s the sysadmin’s job to give them the appropriate info/access. If a user wants to fiddle with stuff, do it at home or in a VM.

  17. @JP, letting users fiddle with their machines simply leads to an increased cost of maintaining them, reduces the host security and exposes the organisation to all sorts of evils.

    I agree with Greg, if you want to play with the tools I provide you, do it on your own kit, in your own time. I give you access to only what you need. I don’t have time to fight with technology.

    Getting back to my MCSE’s tirade though, no, I don’t employ them, I’m a green/black screen admin, I do work with them though and my infrastructure is probably a little bigger than a SME who hires multiskilled staff. And in my time I’ve met some very smart windows folk and some very dumb *NIX staff.

  18. Leslie Viljoen on

    Matthew, I really have to agree with you, but then you are preaching to the converted in my case.

    I recently sat for days trying to fix a Windows server that simply stopped starting up – no messages except for an eternal “Applying Settings”. Nothing in the logs under safe mode.

    After much messing around with so-called “recovery”, I reloaded the box and had to do some funky command-line “seizing of roles” because the other servers couldn’t understand that their fallen brother wasn’t coming back. Next, many obscure and ungoogleable errors as I tried to “recover” Exchange. In the same week two other servers died completely because of network worms – one of them 1600km away!

    In the end I replaced the basic mail server function with Postfix/Dovecot on a Linux box (in 30 minutes) and later outsourced our mail entirely to Google.

    I sometimes wonder if I see all these defects in Windows because I look especially hard for them – or if others can’t see them because they are just not experienced in any alternative. I must say its easy for me to forgive Linux problems, even though I do complain about them.

    Ultimately I think Windows is apt punishment for those who choose it, I just wish I did not have to be punished along with them.

  19. I prefer Linux over Windows anytime, I used Windows for many years on my Desktop computer and it did the Job, now I use Ubuntu and I love the operating system and will never use windows again, no more constant reboots if an application freezes. End Task in task manager windows just sucks against the Linux kill command together with the pgrep command. But it’s a choice of preference. If you’re a .net developer go for Windows. PHP developer go for Linux.

    When it comes to servers, throw Windows into the dustbin. SSH to a Linux box is so much quicker than trying to RDP to the Windows box and click on start.

    My conclusion is that every operating system has it’s own pro’s and con’s and at the end it’s the end users choice.

  20. Try RDP vs X, X is an absolute dog over slow wan links, even with compression enabled on a ssh tunnel, RDP works quite happily over just about nothing.

    Not everything runs at commandline

  21. @Brett
    I assume you’re referring to the use of “ssh -X”? Or are you actually spawning multiple X sessions on your WAN?
    Using VNC with highest compression and lowest colour depth would be better but it’s not great either. Luckily there’s NX and FreeNX.