- Better GUI integration
- Standardized and complete API going beyond simple libc and POSIX (which are quite long in the tooth now)
- Access control lists
- Nicer driver system and better driver support
Exactly which things have better GUI integration on Windows, which are not related to application support? In fact, what does "GUI integration" even mean?
The Windows API is standardized? I suppose, but only because Microsoft is the only one who ships anything even close to a complete implementation of it. So it's standard on the one thing that ships it.
I won't speak to if libc or POSIX is better or worse, but if they're going to be called "simple", the argument can be made that that's the UNIX philosophy, and a more valid critique would be if they were not simple and didn't adhere to the UNIX philosophy. Both Windows and Linux's libc/POSIX are solid APIs and are standardized, and the latter is largely documented where they diverge.
Linux supports POSIX access control lists. I actually find the Windows ACL support to be extremely subpar: the command line utilities are tough to use from cmd.exe, and the GUI for handling ACLs is brutal, albeit functional. The getfacl and setfacl Linux utilities are not super fantastic either, but they are there.
What's the qualification for a "nicer" driver system, that isn't better driver support?
> What's the qualification for a "nicer" driver system, that isn't better driver support?
Windows effectively has user-installable drivers and Linux, for intents and purposes, does not. In fact, Windows has the equivalent of apt-get for drivers -- a central auto-updating repository. Comparably, Linux is a backwards wasteland when it comes to drivers and driver management.
I can't remember the last time I had to install a driver using anything other than apt-get or yum on my Linux desktop or laptop -- although I do have a hand configured xorg.conf that I've been using for years. The majority of drivers are available with the kernel, and those that are not and are popular are packaged up by the distribution maintainers.
Windows only has "user-installable drivers" if you don't pay attention to the fact that you're effectively sudo-ing when installing them. Driver installation is an Administrator level task, as it should be. On a Linux system, when you're in Gnome and use a GUI package manager to install a driver or any other package, you will be asked for a password to either su to root (on Fedora/RHEL/CentOS) or sudo (Ubuntu). This is the same as being asked to confirm on Windows when running as a user with administrative privileges.
And, I'm not sure I buy that Linux is a backwards wasteland on this front. It has more drivers than current Windows versions, and more of my hardware, particularly stuff that's more than two or three years old, Just Works in Linux. I usually have to go digging on the web to find drivers for at least a few devices on any particularly laptop or desktop machine when I install Windows. That's usually only the case for more advanced 3D drivers on Linux.
Windows does have a more stable ABI (the last change, I think was from XP to Vista), while Linux does not. This could be argued to be a point in Windows favor. When the ABI changes, a driver on Linux has to be recompiled. This was historically defended by Linus based on the fact that the majority of Windows crashes are caused by 3rd party drivers...and Linus wanted Linux to be as immune to those poorly made 3rd party drivers as possible by making it hard for them to exist. Drivers in Linux, generally speaking, would go across Linus' screen (or at least one of his lieutenants) at some point, making it possible to insure a high level of quality and consistency in anything that ended up in a position of being able to bring a Linux system down. Linux historically has extremely admirable reliability because of this (and other factors).
The trade-off is that 3rd parties, like hardware companies, cannot release a driver and forget about it. A driver for Linux released in binary-only form today will not be useful in a year or sometimes even a few months. But, that's also proven to be true for Windows now that Microsoft has changed the driver ABI and raised the barriers to building drivers for Windows. A Windows XP driver is useless on Windows 7, so vast swaths of previously Windows-compatible hardware is no longer usable with Windows.
Linux also has apt-get (or yum) for drivers. When you update your kernel, you update all of your drivers to the latest version. Since drivers are tiny and disks are big, there's little reason to have them all packaged up separately. And, Debian/Ubuntu and RHEL have methods of distributing drivers separately from the kernel in package form. It's just rarely used, since so many drivers are included in the kernel.
So, I have historically found Windows to have better driver support, and it is occasionally more convenient to get hardware running under Windows than Linux. But, the gap has shrunk remarkably in recent years (nVidia and ATI both provide pretty good drivers for Linux now, and Intel has for a very long time), and lately I'm more often frustrated by Windows than Linux, since I have some older hardware that was quite expensive that I'd rather not replace (multi-channel 24 bit Firewire audio interface, for instance) that no longer gets driver updates from the vendor. It goes both ways, and I don't believe it is as cut and dried as it was even a few years ago.
I don't know what this means. GUI integration with what?
"- Standardized and complete API going beyond simple libc and POSIX (which are quite long in the tooth now)"
Gnome provides a quite impressive and modern GUI API, and so does KDE. SQLite has a great database API. MySQL has a great database API. OpenGL is a great 3D API (admittedly lagging behind DirectX, since few games target OpenGL to push it forward). SDL is a solid media API. There are great APIs for big math, low-level system constructs (Boost, for instance), disk and data, media of many types, etc. There's a library for everything in a Linux system, probably three or four of them. Just because they are not from one vendor does not mean they don't exist, or that they aren't good.
To insist that Linux and Open Source operating systems play by the same rules as Microsoft is to stack the deck in favor of Microsoft and Windows. Luckily, Open Source can opt out of that system, and build awesome things without needing a central commander to determine what is and isn't available. Saying that libc and POSIX are the only standardized APIs on Linux is like limiting yourself to only using applications from Microsoft; thus removing nearly all of the reasons to choose Windows. I have conceded that Windows has vastly superior application support...unless you're willing to say that Windows only has a couple dozen applications, because no others come from Microsoft, you can't ask me to give Windows the nod on libraries because they don't all have a POSIX or standards body approval on them (Microsoft doesn't get outside standards approval for most of their APIs either, while we're on the subject). A modern Linux system has vastly broader and deeper API and library support in almost every area. You may prefer Windows APIs, which is fine, but a lot of folks prefer the Linux options, and there's definitely a lot more variety in the Linux world.
Linux also has way more awesome and plentiful mobile APIs than Windows. Windows isn't even a contender in this space.
"- Access control lists"
Nope.
"- Nicer driver system and better driver support"
I disagree with the "nicer driver system" assertion, but even when we just take it to mean "better support for the most modern hardware", ReactOS doesn't replicate it, anyway. Driver support in ReactOS is vastly worse than driver support in any modern Linux distribution, which is mentioned in the article, where it discusses running ReactOS on virtual hardware, and the problems that come when running it on real hardware. ReactOS is also currently trying to replicate Windows XP. Drivers are no longer coming out for XP for the most modern gear, and new drivers don't work with XP, so even when they reach perfection in ReactOS and it can load all XP drivers flawlessly, they will still have much worse driver support than Linux.
I'll also mention that I lately have more problems with drivers on Windows than I do on Linux. I have a handful of older USB and Firewire devices that simply won't work with the latest version of Windows because the manufacturer isn't making new drivers, but continue to work fine on modern Linux versions. From my current perspective, Linux has much better hardware driver support...though if I were buying new hardware, I might have to check the web to be sure there's a decent driver for the hardware I want to buy.
But, this is all just a bunch of random Windows/Linux fanboy ranting about random ancillary stuff.
UNIX is a superior design at its core. The simple beauty of it is a thing of wonder. Windows, and its creaking DOS underpinnings (C:\, really? we still have C:\?), is a horrorshow by contrast. I made my assertion above based on the belief that anyone who understands both systems couldn't possibly come to the conclusion that Windows is the better OS. It may have more and better applications (it definitely does). It may have more and better drivers (debatable at this point). It may even have a few features that are better than the Linux equivalent (definitely, and the reverse is also true).
But, the Windows OS...the soul of the thing, particularly from the perspective of a software developer, is so obviously inferior to Linux or UNIX that I have a hard time even comprehending an argument to the contrary. This is a limitation on my part, I guess. I just can't comprehend a mind that thinks so differently from my own.
To name a few.