Solaris 10

I've been using Solaris 10 for a while now, and feel in a better position to comment on it than I was when I wrote my earlier post about my Ultra 20.

Home-Use Installation Weaknesses
As I mentioned in my Ultra 20 post, I wasn't asked for a machine name during installation. I assumed that hostname(1) was what I'd use to permanently set the hostname, but it isn't. As explained here, I needed to echo the name to /etc/nodename to change my machine's name from "unknown". I guess they don't expect many home users. Or they expect home users with a DNS server. Apple do this right for the stand-alone user. (My Solaris admin friend points out that Apple don't necessarily do what you want if you've got a laptop that sometimes joins a DHCP network and you end up editing /etc/hostconfig to ignore any DHCP-provided name.)

A few days later, I noticed that the machine's time was about six minutes out. I can't remember the last time I saw a computer give such bad time, and it turned out to be because NTP isn't enabled by default. Crazy. I copied the configuration from http://ntp.isc.org/bin/view/Servers/NTPPoolServers and ran "svcadm enable network/ntp" as root and the clock was fixed. This is stupid, though. Sun should have public NTP servers, and Solaris should default to using them. Apple do this right.

Command-line Utilities
Solaris still has a bunch of weird versions of familiar utilities, such as its odd version of ping(1). Even its netstat(1) looks different. Root's shell isn't bash(1), which has been the least worst choice since rc(1) faded away. Many utilities only support POSIX options, so if your scripts are using GNU long options, you might have to change them. Worse, you'll find you've gotten used to a lot of GNU extensions to various commands. GNU tar(1)'s ability to handle .tgz files being an obvious example. Things like sudo(1) and top(1) that you take for granted on other systems just aren't there on Solaris, even in idiosyncratic form. Things like firefox(1) and g++(1) are installed but hidden away in a directory that isn't on the default path. And while g++(1) is present, gdb(1) isn't.

Blastwave will help with this kind of thing, but it's still more conservative than I'd be: you'll end up with "gtar" and the like in /usr/csw/bin for those commands that aren't actually missing in Solaris.

Blastwave's Ruby doesn't work (a shared library problem I mailed the package maintainer about, but received no reply about). Also, there's no locate(1) package. This is ironic because, as my Solaris sys admin friend says, it's hard to think of an operating system that needs locate(1) more.

Apple mostly do this right, though there's still a lot of non-GNU cruft, and a lot of GNU stuff can get quite out of date with Apple's slow release cycles.

Sun has a weird directory structure under /usr/java/ that isn't entirely obvious, and doesn't seem to be documented. This is silly when Sun makes it so easy to have parallel versions of Java and just choose your preferred one with $PATH. Apple do this right, even if they do lag far behind, and still haven't made 1.5.0 the default.

Java Desktop System (a.k.a. GNOME)
I complained in the Ultra 20 post about the stupid "[ English/European ]" windows attached to all the Java windows on my display. Presumably because I chose a UTF-8 locale. I don't understand why I can turn this off for non-Java applications, and still don't have a work-around. I have submitted a bug report, though. (And it made it to being Sun 6336941 which was closed as a duplicate of an earlier bug with a terrible title that I defy anyone to have found. If you care about UTF-8 and a decent desktop experience, reading the Sun engineer's evaluation of that bug will make you angry, so either don't, or go vote for it to be fixed rather than ignored.) Apple do this right.

Evolution is better than last time I used it, but still pretty unusable if you're talking to a high-latency remote IMAP server. This particular version seems to have a bug that causes it to crash if you double-click to select text in the preview pane. I gave up on Evolution after a week, in part because it's excruciatingly painful to use over a high-latency link because of the apparent absence of local message caching, and in part because its behavior with modern RFC-compliant mail is nothing short of idiotic. It's all very well not breaking lines when quoting text, but you can't present them to the user unwrapped. That's just unusable. Not supporting CSS makes much of the mail I receive unreadable too. Thunderbird does a much better job of all of these things, and in general. Since the much newer version of Evolution I can get on Linux from Debian unstable also sucks badly, I'm not holding my breath for a usable Evolution any time soon. The main problem I have with Thunderbird (other than it not looking like a GNOME application, which seems a churlish complaint given that Ethereal, which looks like it fell from a dog's arse and as if about as much effort went into its design as you'd expect a dog to put into its pavement art, is the only GNOME application worth running) is that it doesn't cope well with problems talking to the server. Mac OS 10.3's Mail (but not earlier or later versions) is the only mailer I've had that seemed to cope seamlessly with with retrying connections; 10.4's Mail is the second best.

There's some clunky old version of Mozilla installed, but Blastwave has a reasonably up-to-date Firefox. Annoyingly, if you install both Blastwave Firefox and Thunderbird, hyperlinks in the latter don't open in the former. Worse, they don't open at all, and you're left using copy & paste, and starting a copy of Firefox from the shell. I'll point no finger here, though, because this could be just about anybody's fault. But half a finger gets pointed in Sun's direction for shipping a web browser and mailer so bad that you're forced to install third-party alternatives to get any work done.

Leaving "GNOME Performance Meter" running for a few days seemed to do very bad things to Xorg, causing it to use 100% CPU. At least, that's what I assumed when killing Performance Meter returned performance to normal. Having had Xorg behave badly a couple of other times (though I've not run Performance Meter since, because it wasn't exactly impressive anyway), I'm not so sure. It's surprisingly easy to make the X server appear responsible for soaking up CPU time by having a Java application cause unnecessary redraws. This is also true on Linux. I should get round to learning dtrace(1), which ought to help distinguish real Xorg problems from fake ones. Apple's "Activity Monitor" is light years ahead of anything else; the next nearest is, believe it or not, Sysinternals' ProcessExplorer for Win32 (the main thing lacking is the one-click profiling which is Activity Monitor's best feature).

"Software Update"
I was initially disappointed that there didn't seem to be anything akin to Mac OS' Software Update. My friend the Solaris sys admin told me to run "smpatch analyze" and "smpatch update" from single-user mode. When I finally got round to that, it turned out to install Software Update's ugly sister, Sun(TM) Update Manager. It works, but it looks like My First Swing Application. It makes no attempt to fit in with the GNOME desktop (doesn't even use Java 5's rather weak GTK+ look and feel), is rather insanely garish, and displays plenty of bad habits such as blocking the event dispatch thread. My personal favorite is the way that the JTextArea in the about box isn't in a JScrollPane, but the text contains too many lines to fit. But who cares? No-one reads French anyway, and the English fits just fine.

The date is shown in ISO order, but not ISO format (so "2005/10/19" rather than "2005-10-19"), and references to Sun bug ids aren't linked to the bug database. (I assume the Solaris bug database is available on-line like the Java one, though I've never seen it.)

I wish the Blastwave packages were incorporated with Sun Update Manager. Given how important Blastwave seems to be to getting a useful Solaris system, it's a pity Sun don't let them share this.

One interesting difference between Mac OS and Solaris here is that Sun trickles out tiny updates on an almost daily basis. Rather than wait months for Mac OS 10.4.4, which breaks as much stuff as it fixes, you get, say, a patch to sort(1) available one day and a patch to Xsun(1) the next, and a DHCP daemon patch the day after that. I rather like this.

Sun's system, though, is broken. How the hell do I restart Solaris 10 in a way that will cause it to finish installing updates it's got marked for installation next restart? When I ran the smanalyze/smpatch commands the first time, I guessed reboot. That installed a GUI tool that -- the first time i used it -- explained that "reboot" wasn't sufficient to install updates and would I like it to restart the system. Yes, I would, but I'd also like you to (a) tell me how you're going to do it in case I ever need to do it manually and (b) fix reboot(1). I've given up on the GUI which continues to list various updates as requiring a reboot and have fallen back to the command-line, which thinks otherwise. Nice.

Apple does this right. I'd not been impressed with Software Update.app (the GUI) or softwareupdate(1) before, because I'd not been exposed to a broken equivalent. Solaris, though, has shown me that there are any number of ways Apple could have fucked things up, but didn't.

This has been by far the biggest annoyance, because I was expecting to have to keep the Mac as my desktop machine anyway. What I wasn't expecting was for basic system administration to be so unnecessarily difficult. See also NTP. That's a checkbox (to enable or disable) and a combo box (to choose a local server) on Mac OS. Since I registered my machine, Sun keep mailing me "opportunities" to "take advantage of Sun's special Solaris 10 training offer [sic] and support options". But really I just want them to fuck off and fix it. I'll pay them USD120/year, as I do Apple, but I want to see that they understand that for those of us not running centers, clusters, or farms, we want less administration, less need for training, and less need for support. I have better things to do with my time than maintain computers, even if that only translates to posting more crap to my blog.

(As an aside, I was amused that the penultimate mail I received on this subject was entitled "Last chance: Solaris 10 training and support offers", and other than a specific offer to trade in my Dell servers, is identical to the one I received two days later, which in turn is identical to the one I received 18 days previously. Presumably they have a cron job entitled "see if they've noticed that Solaris is a big fat pain in the ass yet" sending these things out.)

Put a DVD (I chose "The Big Lebowski") in the Ultra 20, and you'll see it auto-mounted and an icon appear on the desktop. But there's no obvious way to play the DVD. There's a "Movie Player" application, but that claims not to be able to find any DVD. Apple does this right.

I thought I'd try ripping the DVD and playing the mp4, and I'd heard of ffmpeg, and saw that although it's not part of Solaris, it's available from Blastwave. But I checked out the documentation while it was downloading and realized it's far more complicated than I can be bothered with. HandBrake on Mac OS does this right.

Ejecting a DVD when the device is in use is as feedback-free a frustration as on most operating systems. Only not only does Solaris/GNOME not tell you which application is the problem, it doesn't tell you there's a problem. It just doesn't eject the DVD, no matter how many times you choose "Eject" from the menu.

Digital Cameras
Digital camera next. I plugged it in to one of the USB slots in the Apple keyboard I have connected to the Sun. An icon appears that looks like some kind of removable media (which is actually one up on Mac OS, which just uses its generic pessary-like "storage" icon with the slightly obscene slot in the front, as it does for my iPod and for the .dmg of anything I install). Double-clicking the icon lets me see the pictures. There's no obvious way to get to anything like iPhoto, though. Back on the "Launch" menu there's an application called "Digital Camera Browser", but that fails to recognize that there's a camera attached. Apple does this right.

Plugging my iPod into one of the USB slots in the keyboard has no effect. Apple does this right.

Instant Messaging
GAIM is no Adium, but it's okay. If I hadn't known that Adium was built on libgaim, though, I don't think I'd have persevered enough to work out that I can use GAIM for non-AIM accounts. The GAIM people should think seriously about just ripping off Adium's interface wholesale. (Apart from the ridiculously over-complicated preferences, which no sane person would ever need.) I've never used Apple's iChat because it doesn't support MSN.

Solaris blows. It really does. If all you want is a fast build machine to run Java on, it's fine. The Ultra 20 is a nice piece of hardware, and Solaris doesn't seem to get in its way much. CPU-intensive and I/O-intensive stuff is way quicker than on my dual G5 2.5GHz. But don't expect to want to use Solaris as your desktop. It's barely functional even for the stuff a developer does, let alone the kind of stuff real people would want to do.

You want your mail, your music, your photos, or your DVDs? Hard luck.

You want decent integrated address books, calendars, or RSS readers? Hard luck.

You want a great web browser? Install one yourself and forget about anything that requires plug-ins (there's unsurprisingly little available for Solaris/x86_64), or hard luck.

You want something that comes set up with sensible defaults and requires hardly any administration, most of which consists of no more than clicking "Install" or "Restart"? Hard luck.

Where by "hard luck" I mean "buy a Mac". I know I've been down on Apple lately because 10.4 was a bigger disappointment than I was expecting (the only "feature" that interested me was support for Java 1.5.0, and I've barely got that), but this shouldn't be allowed to obscure the fact that it's still light years (and years) ahead of all the competition.

If it were no more complicated than inserting a DVD and power-cycling, I'd be installing Linux on my Ultra 20 right about now.