| Reasons:
-------- 1. Windows was never originally designed to work as a Server side operating system at the first place. They started to drive it on the server side when they first discovered the Internet had a huge commercial potential to sell machines on the backend. There fore all means of getting things done on a windows machine for a developer have to go somehow through a set GUI's to get work done programatically. This sucks from a programmers perspective, programming is all about level of customizability. 2. Command line on windows sucks, apart from just removing, adding files/directories and running commands anything else is just a pain. The UNIX command line is a complete interpreter in itself(bash). 3. The UNIX operating system is more than an OS, its a complete programming ecosystem in itself. The whole concept of everything being a file or a process is just so elegant. You can endlessly leverage native tools like sed/bash/awk/cut/tr/perl and other text processing utilities to solve any problem with a combination of text files and processes. Which is not easily possible with windows, heck using those tools on windows is big pain. They are often ported with limitations. 4. Debugging, is a breeze. Checking logs is a breeze. Text processing utilities and endlessly configurable tools make it very easy for system administration with the help of pipes. This is very crucial for system administrators. They often want to do stuff without the help of programmers to get quick solutions when they get paged at 2 in the night. 5. Many other development features like Inter process communication with tools like DBus. Sockets et al are vastly superior in UNIX than windows. 6. Many programming languages were developed(Perl/Ruby/C) with entire context of UNIX in mind. Therefore they natively work very well with UNIX. 7. Vast resources of knowledge of troubleshooting and maintenance available for UNIX. Which makes things newbies easier to deal with it. 8. Unix is open source, its freely available. And will be there for a long time. People who supply it do it on passion and pure volunteer effort and will do it for fun and because they like. Windows can be killed by anytime for profit. 9. Vendor lock in problems. I don't understand why I should use all MS specific software all over. I can't scale horizontally due to cost issues. Also apart from .NET developing for any other technology sucks on windows. 10. Lack of multiuser login, Servers need many people to login and work at the same time. For testing and for development reasons.Servers are just so much more than deployment only boxes. 11. GUI overhead, Why should I spend my computing resources on OS and GUI when I should I actually be spending them on my applications? 12. Registry is a pain on Windows, I don't have to worry about those hassles on UNIX. The list goes on and on... |
"There fore all means of getting things done on a windows machine for a developer have to go somehow through a set GUI's to get work done programatically."
This alone is enough to discard anything you say about this topic. You obviously have no idea what you're talking about. Everything in Windows is programmable, through a standard object model, and the facilities to put them into any program are standardized, too.
"Which is not easily possible with windows, heck using those tools on windows is big pain."
Windows != Unix. If you are a bricklayer and you get into gardening, would you complain that your concrete mixer doesn't work well for shoveling a garden? Unix tools on Windows is a crutch for people who refuse to adjust to the environment they're in (or as a band aid for a quick and dirty port of Unix functionality).
"tools like DBus. Sockets et al are vastly superior in UNIX than windows."
Windows != Unix. The concurrent tasks model in Windows is based on threads, not process spawning. Don't take your Unix prejudices to Windows when you write software for Windows. Are you seriously suggesting there are no working ipc mechanisms in Windows? There are vast amounts of functionality to do so, and on a much deeper level than just 'pipe text from one process to the next' (i.e., a proper object model that can be used to share code written in several languages and with which you can pass objects and not just text).
"Lack of multiuser login,"
WTF are you talking about? Have you ever seen a Windows box since Windows 95?
"Registry is a pain on Windows, I don't have to worry about those hassles on UNIX."
What? Are you saying you prefer 25 different file formats, spread out in non-standard ways, without a standardized layout? Or are you saying that editing Apache config files with sed and awk is a good idea? If so, you're clearly off your rockers. Of course you can hack together something that 'mostly works', but at least with the registry you have a standard format, standardized and cross-language APIs and a (more or less) standard organization of data.
Now I'm not defending the implementation of the registry; it has outlived its design. But being against the idea is lunacy - why do you think the Gnome guys realized in the early 2000's that they needed something similar?