Linux vs Windows
Windows has a much larger user base. It is so popular, and has been for so many years, because of Microsoft's business practicies, which required PC vendors to ship the Windows operating system with every PC they sold. That practice was later found to be illegal, but the resultant user base remains. But this is changing--some vendors offer systems pre-loaded with GNU/Linux. Dell--the world's largest PC vendor--is now shipping some of its products with Ubuntu GNU/Linux. There are many small vendors who offer systems pre-loaded GNU/Linux. And many of the new subnotebook machines offer GNU/Linux; the ASUS Eee PC, the first of this new breed, was initially only available with a modified Xandros GNU/Linux.
Until recently, GNU/Linux-based operating systems were seen as much less "user-friendly" than Windows. Distributions such as Ubuntu have made a serious effort to increase GNU/Linux's user-friendliness, in part by using graphical desktop styles that emulate Microsoft Windows and Apple MacOS X, attempting to create a familiar operating environment to ease the process of migrating to a new OS.
Another factor in Windows' popularity is software availability. Many software vendors choose to create software solely for Windows because they believe it's their biggest market. Also, many GNU/Linux users prefer libre software to proprietary software, so software vendors whose business models are not compatible with libre development have less incentive to create and sell GNU/Linux software. In past years many proprietary software applications were viewed as superior to their libre alternatives. Now, strong libre alternatives exist for almost every proprietary application.
There are mounds of libre software available for GNU/Linux. There is not as much libre software available for Windows, although it has a lot more proprietary software. Some proprietary software, such as Google Earth, Skype, and Opera, as well as libre software, such as Firefox, OpenOffice, and Apache, run on both Windows and GNU/Linux.
On many GNU/Linux distributions, software installation is integrated into the system. You do not have to search the net to find it, you only need to search a local database and then install it.
On Windows, you must manually acquire your software by searching the Internet or purchasing it at a brick-and-mortar store.
AlternativeTo can make it easy to find an alternative to a favorite Windows program which is available for GNU/Linux, or vice versa.
Freedom to Customize
Windows is designed to prevent the user from customizing their operating system by changing the code it is made from. Microsoft attempts to provide configurations that work for everyone using or creating software, so in many cases the ability to customize the operating system is not strictly necessary.
A strong segment of the GNU/Linux user community is focused on customizing their operating system. While at times this can be frustrating (changing the system configuration may be required to get a particular program to work at all, and it may be difficult to figure out how) there are instances where the customize-able nature of the software opens up new ways of accomplishing your work — ways that would simply not be feasible without the ability to modify the software.
In general, the best platform for development is the same as the platform on which you plan to deploy the software. There are cases where the target platform cannot reasonably be the same as the development platform, however, such as when the target platform is a Web browser (as in the case of Web applications), or when the target platform is an embedded system. There are also cases where the choice of target platform may follow the choice of development platform, rather than the other way around — as in situations where one may consider development environments when deciding what OS platform should be used for a particular project.
Unix-like systems provide a plethora of free, standards-compliant tools like the GNU Compiler Collection, as well as feature-rich commercial development environments like Synergy/DE.
Windows system development is largely dominated by Microsoft development tools that do not usually play well with other commercial development environments, but Visual Studio and certain other, third-party, commercial development environments are very well regarded by many programmers.
Some of these toolsets and development environments are available on both GNU/Linux and Windows systems, such as Eclipse and the GNU C programming tools, with varying degrees of suitability to different platforms.
High quality tools to aid in developing for a web browser are available on both platforms, and the resulting applications usually are suitable for use on any major operating system.
The Windows operating system family holds a majority market share, which contributes to easy access to drivers for hardware because PC hardware vendors typically provide Windows drivers free of charge.
The Linux family of operating systems has caught up with Windows, and even surpassed it, in some areas. The benefits for Linux-based systems tend to be in out-of-the-box support, though support gaps still exist in cases of hardware that has not received as much attention from open source software users in general.
Most GPU drivers are proprietary. Linux has both libre and proprietary drivers for most graphic cards. Libre drivers are often slower for recent hardware. Proprietary drivers for Linux may be as fast as, or even more so then, as drivers for Windows in some cases.
More than 11,000 pieces of malware that affect Microsoft Windows systems were discovered in the second half of 2005 alone. According to Kaspersky Lab, more than 800 total pieces of malware have been discovered that affect GNU/Linux systems, over the entire course of its existence since the early 1990s. Most, if not all, of these 800 pieces of malware will not execute on the typical GNU/Linux-based system because the privilege separation designed into the OS requires user intervention to get the malware to execute, while most malware on MS Windows systems will utilize the OS' own auto-execution facility to operate without the user's knowledge. Whereas malware vulnerabilities are typically patched in the Linux kernel and libre software affected by the malware, dealing with malware that affects MS Windows is usually left up to third party malware scanning and removal software.
Microsoft Windows has a long history of providing poor privilege separation, while the Unix-like design of GNU/Linux provides strong privilege separation. NT-based MS Windows versions have improved on privilege separation to some degree, and Vista offers a sudo-like graphical privilege escalation tool known as User Account Control. There is strong evidence suggesting that even Vista's privilege separation is deeply flawed, however, such as the fact that UAC requires escalation to perform tasks considered unprivileged in other OSes and the ability of DRM systems to turn off UAC behind the scenes so that the OS can send protected data to Microsoft without requiring administrative user intervention.
The quickest response from Microsoft, from public announcement of a security issue to distribution of a patch, was around ten days. Most patches take longer, often months or even years, and in fact Microsoft only offers patches on a once per month schedule in the majority of cases. GNU/Linux security patches have been developed, tested, and issued in a matter of hours, and the average response time for patch deployment is less than a week. Availability of a GNU/Linux patch may be delayed in many cases by the process of incorporating patches into various distributions, however — see your individual distribution's security response time record for details.