I'm going to go over Linux in general. This is an honest, unbiased look at the Linux core. This covers all distributions and current releases.
Love:
Stability
Resource usage
Can be run CLI
Hate:
Security issues (Explained later)
Lack of hardware support
Lacks major software applications
Patching can be difficult (Depends on distro)
WAY too buggy and unfinished.
Lacks scalability
Lacks conformity across distros
I have several major issues with the basic design of Linux and all other UNIX like operating systems. They are all monolithic kernels and lack true reference monitors (AppArmor and SELinux are NOT reference monitors). They have very poor file systems in terms of security. There is no way to restrict the superuser accounts. There is no effective way to administer system policies. Difficult to completely integrate into Active Directory. Most of these are not anything that the average user would notice, nor would they care. Even some of the die-hard Linux fans don't know what a reference monitor is. I still run Linux on numerous production systems (Slackware) and I have almost twenty computers running some form of Linux, BSD, or UNIX in my test environment, which is about to get even bigger thanks to a new office.
Linux works great for high volume servers. It doesn't scale very well, but it handles loads well. To explain that a bit further... My Linux servers can handle thousands of users without a problem, but Linux provides no effective way to assign granular rights to the users the way Windows does. That's the scalability that Linux lacks. Actually, not just Linux; this is an issue with just about every operating system other than Windows. Of course, let's be honest... When is the last time you had to have that granular of control over thousands of users? Probably never, even for most IT professionals. Now, if you have to host twenty websites with a full database for each... Apache and Oracle/MySQL is not a bad choice. If you have to host a website that uses Integrated Windows Authentication and SharePoint sites, you're better off with Windows. That situation is far more common than most people realize.
As I mentioned, Linux lacks conformity across distributions. This is a double edged sword... You get to customize things easier, but it makes running multiple platforms a pain.
If I wasn't an IT professional... I'd probably use Linux for just about everything. Unfortunately, my job requires far more than Linux can easily do. I really do love Linux... Even with desktop environments that aren't quite finished, kernel modules that are labeled "Dangerous," and all the other quirks that non-enterprise releases of Linux come with. You know what I'm talking about... You install Kubuntu, Debian, etc... And the fancy set of crystal icons doesn't quite render properly... your webcam won't work... Flash doesn't always work properly... But it's still fun to use, and it gets the job done.
Distros used currently:
CentOS 5
Slackware 12.2
Gentoo
RHEL 5
OpenSuSE 11.1
EDIT: Obviously hardware support is not Linux's fault, but it is still an issue with Linux and useability for desktop systems.
- Patching can be difficult - As I said, this is a distro issue that does not affect all releases. If I download OpenSuSE and Slackware, OpenSuSE will be up and running fully patched (including all packages available in repositories), long before I have even assessed what needs to be patched on Slackware.
- Lacks scalability - The scalability issues are still present. I have yet to see a standard distro that did not support LDAP, even the miniature Linux on my Lexmark printers interfaces with Active Directory. The problem is, that even with Samba4, we'll pretend it's not just an alpha, and all of the authentication you want to install, be it full PKI with biometric token, or simply NTLM/kerberos, it still cannot fully integrate into an Active Directory environment. Linux lacks the filesystem support, and the core Windows functionality (reference monitor, group policy, secure auditing, etc).