I think that is the only appropriate way to start this post. Maybe it would have been better if I used the Picard image. Oh well, opportunity missed. But let's get down to business. I hate Ubuntu.
I'm not sure why people like this distro. I don't even know where it came from. Everyone was happy, people were using Linux, then all of a sudden **BOOM**! There's this new distro that appears to "be in first place". Out of nowhere this distro has a fan-base that rivals the cult of Apple. Speaking of Apple, we've only seen this out-of-nowhere rule-the-world move once before and that was with the iPhone. Difference is, the iPhone was actually the better product.
Back to Linux... I'm not a newbie. I started with Mandrake (cringe) while in high school, but was quickly moved into the direction of FreeBSD by my Jedi teacher. From there I was FreeBSD all the way until, for work purposes, I was forced to switch to a Linux variant because that was what we administered. So I migrated to Fedora around the Core 2 days because it was the free version of what we had to administer, RedHat and RHEL. Since then I've used Slackware, CentOS, and other *nixes such as Solaris (SPARC and non-SPARC), AIX, IRIX, and even a little SystemV. We'll forget about all of those non-Linux OSs because they're way different than what I'm talking about here.
So it's not like I've only ever used one flavor of *nix and am a fanboy, I've had to use many. But the one thing that I've found with every version of Linux that I've used is that they're pretty much the same. There are slight differences on each (package managers, syslog, etc.) but for the most part if you can use one you can use them all. To take it further, if you can administer one you can administer them all. No difference was more than a quick Google search away.
Enter Ubuntu... or as I call it, Kindergarten Linux. As I've said before, I don't know how this thing came out of nowhere and immediately got the support it did, but I digress. Remember how I just said that if you know one you know them all. Forget that. Ubuntu breaks that rule. In the past year administering Ubuntu hosts I have had more trouble and wasted more time Googling things than I ever have for anything ever.
Files are in different locations, directories don't exist and/or are named something else... it's like they decided to buck every *nix convention and just do their own thing. Maybe that's fine if you're a Joe User. Maybe that's fine if you're using your Ubuntu machine as a "desktop" to browse the Internet and do simple, everyday things. It's not fine if you're trying to use Ubuntu as a production server. There are a million things wrong with it.
I'm not going to list everything I hate about Ubuntu. I'm only going to list three things that recently have irritated me.
- Insecure by design: sudo comes fully configured for your regular user by default. I'm sure newbies find this awesome, but people who actually care about security don't and they hate that you have to disable something that should be disabled by default. Ubuntu completely broke the traditional root/plain-user model that has worked for decades. I've even seen some systems that don't have root configured, the only way to get there is to `sudo su`. WTF?!
- MySQL connections: Again, something I've only seen happen on Ubuntu hosts. You have a fully configured web server (httpd/php/mysql), you connect to the MySQL command line, run a `show status`, and see HOW MANY CONNECTIONS? 57. Yup, not 8 like every other Linux distro (1 for each httpd thread)... 57. I've seen this number get up into the hundreds of thousands when people start using the web app on that server. By people I mean no more than 4 users at a time and the app is properly configured to close database connections after every call. No amount of configuring fixes this. It's a waste of resources. HUNDREDS OF THOUSANDS! WTF?!
- PHP garbage collection: This one threw me for weeks. The users of the web app wanted to be able to have it logged in during business hours without timing out their session. Simple, right? Set the session time to some large number, in my case 16 hours, and voila! Well, that would have worked on normal distros... but not Ubuntu. Of course not, why would Ubuntu do anything like anyone else? Ubuntu has a cron job that runs every 30 minutes for PHP garbage collection and kills sessions that have been inactive for... not the time you set in your code, it ignores that... the time set in the php.ini file. Yup, anything you code will be ignored. By default on this host, the global time was set to 24 minutes. Awesome. It would have been nice if this was documented in some normal place. WTF?!
I guess I really shouldn't complain though. This is all part of being a Linux admin... being able to narrow down the problem and figure it out. I like challenges, but I like real challenges, not stupid ones. These were more of wild goose chases than challenges.
I'm sure in the future I'll have much more to complain about with Ubuntu. In the meantime, just be happy that I haven't jumped off a bridge (or stood on the Napoleon St. bridge while they're demo'ing it).