I am a huge fan of the Mac. I have been using them since the Mac Plus running – oh, I dunno, it was before system 6 and MultiFinder and all that. I’ve dabbled in PC’s, and am pretty good with them, but I love Macs. And I like Unix machines a lot too. I learned Linux In the days before the kernel was 1.0 – it was in the 0.9’s or something, I don’t remember. I ran Slackware in those days. Ah, the good ole days.
So I try to consider myself platform-agnostic. I can tell you now some things I really like about Windows boxes. Among which was the generally snappiness of them. I was running a Win2k box for a while (to help force me to test one of our application’s bugginess and behavior under the Dreaded Internet Explorer). It made me really envious. And, so long as I didn’t mess around with it too much, it performed well – especially so for a box with such low specs (as it was, I think I blogged about it before).
As such, it pains me terribly to say I fucking despise Mac OS X Server. I’m sorry, but Apple has completely blown it with this product. I don’t doubt that they are fine if you just do file and print, but this isn’t a Windows server, it’s a Mac server – it’s got Unix stuff in it – why can’t I make it do a whole bunch of things? And the answer is, because it is shit.
The number of individual problems I’ve had on OS X Server is too numerous to count. The stupid management applications crashing on me, or their effects not ‘kicking in’, or the fact that you can’t migrate NetInfo accounts to LDAP accounts, any number of things. The GUI ends up being obtuse and incomprehensible, and the command line is even more painful than that. I’ve always theorized that when you try and put a nice shiny GUI on top of an ugly (but efficient, and flexible) command line, the end result is always a terrible mishmash. I was hoping to be proved wrong with OS X server. And I have not been. The file system is shit. The Mail server is garbage. The web server – oh! the web server! – I have never seen Apache be so terribly crippled. I had to crawl around in config files and XML files for hours to repair our server, once. Awful. And we’ve taken explicit, careful pains to never mess with the command line or any binaries or anything – after all, it’s an OS X server, and we’re trying to do things the OS X way. What a disappointment.
Today, for example, I’m trying to set up a co-workers account so he can do SSH authentication to the server to run some simple SSH commands (having to do with Subversion, a version control system I’d like to switch us over to from CVS). I go into the management app, I go to my coworkers account, I see he has no ‘home’ set. That’s fine, he is not an SSH man, himself. So I try and set him one. Crash. I try and read mine so I can compare. Crash. I try and look at it again, it’s not one box for ‘what is your home’ it’s three boxes, and I can’t figure out what is what. And I’m not stupid. And any time I try and do anything to it, crash. What a fucking mess.
Now, don’t think this means I have any like for Windows servers. Because they’re just as bad – though possibly a bit less so, since they don’t have to do the “Shiny GUI to shitty command line translation” that OS X has to. To enable RIP routing on a FreeBSD box? (Mind you, I don’t know FreeBSD that well). set it to ‘yes’ in the conf file, and then launch it. Boom. New routes in routing table. Try to enable RIP on Win2k3 server? You have to enable routing and remote access (Telephony! What the fuck!), then add RIP for an interface, then all kinds of stuff – then all my route metrics are all freaky and inexplicably huge, until I find out that Windows is randomly mangling my route metrics based on interface speed (NB – win2k did not do that). What kind of lame-ass bullshit IS this? IIS also enjoys baffling and frustrating me and anyone else who is cursed with it.
Unix boxes, however, are mean. They just aren’t nice or friendly at all. Totally unapproachable. Compare an airplane cockpit with the driver’s seat in a car. The car you might be able to work out yourself, by playing with it. The airplane, you will not. There are 50,000 gajillion little controls for things. The car emphasizes just a few, and will let you get around. So the end result is it takes FOREVER to figure out what you’re doing on a Unix box, until you start getting the Zen of how it works and what its design are. You can do a hell of a lot on a Windows server or a Mac server without knowing what the hell you’re doing. And that has its advantages. And its disadvantages, when you mess with something you don’t understand and unleash unholy hell upon yourself. And Unix boxes will not only let you shoot yourself in the foot, they will load the gun and point it right at your foot, and take the safety off, and not say a word about it. Like I said, mean.
I do know this – any time I get to spec out or make any new server or computer for anyone that I have control over, it won’t be a Windows or Mac server. Maybe if it was something for simple file-and-print, and some email, I might. But not for anything nontrivial.
I should mention – it could be an issue with my own personal comfort level with these machines. I mean, I know Unix boxen pretty well, maybe not as well as I know the Windows and Mac boxen. But every time someone needs to refer to someone who knows more about these things, they always get referred to me. So it’s sad, but maybe I *do* know as much about these things as I do about the other. Because I assume there’s some bias in my knowledge here. But the scary thing is, there might not be.