Why look! My Windows system has Windows running on it!
A couple of minutes ago, my copy of AOL's AIM client decided that I really wanted a full-motion sound-enhanced ad for some semi-retarded summer blockbuster movie to play in the upper right hand corner of my screen (and slow everything else I was doing down in the process), and I reached my limit with AIM's advertising. I know a lot of people who switched from AIM to one of the open source alternatives some time ago because AOL seemed to be much better at adding advertisements than features, but the ads had never bothered me enough to bother switching. However, the new Flash-enabled crap seemed completely excessive.
Now, half an hour later, I'm back to AOL's AIM client. The sad thing is that the replacement I was playing around with - WinGaim - is not a bad piece of software. It had a number of features AIM doesn't, seems to be more extensible, and doesn't come loaded with advertisements. However, it also came with a couple of other bonuses, like:
- Font handling. Gaim's default font for everything is "sans 8." Never mind that nowhere in my system could I find a font called "sans," and no other Windows applications have any knowledge of this font. As an additional bonus, while there is a way to set a default font (and, conveniently enough, it involves editing a text file somewhere), it's overridden by the "Windows impersonation" theme that makes Gaim look like a Windows application. Finally, even after carefully setting the font in everything to look like Tahoma 10pt, it turned out that it appeared more like Tahoma 14pt on other systems.
- Window controls. Most of the time, Gaim did a decent job of mimicking the normal Windows control behavior. However, it was far from perfect. Scroll bars had a tendency not to really be attached to the text boxes they scrolled, and the mouse cursor seemed to be set completely at random. In some Gaim windows, it used the Windows cursors. In others, it used some variant of the standard Linux cursors, and had an odd belief that the i-beam cursor was the correct thing to use in menus, over buttons, etc.
(Along those lines, it's worth also pointing out that the Firefox and Eclipse teams have done wonderful jobs of making their apps virtually indistinguishable from other Windows applications, while Apple still doesn't seem to get that as ugly as their chrome scheme is on the Mac, it's forty times worse on Windows. Emacs, as final note, has never been ported to Windows and I wish someone would get around to it.)

1 diversions:
You've touched upon the issue I think is most frustrating when dealing with cross-platform software, namely, poor abstraction between the UI components and the application. Making the internals of a program run on a different platform isn't usually a big deal -- data structures are pretty neutral in that respect. On the other hand, the behaviour of windows, buttons, key-bindings, fonts, mice, trackpads, joysticks, etc., are almost always completely screwed up.
Sun tried to work around this in Java by making their own UI layer, and inasmuch as Java does abstract the model from the view and the controller, I think Sun got this part right. Unfortunately, the Java UI is completely unlike anything people use on a regular basis -- it doesn't work quite like Windows, or MacOS, or Gnome -- it works like Java. If the so-called "platform look-and-feel" stuff in Java really used native UI conventions instead of just borrowing the local scrollbars, buttons, and window decorations, this problem would be solved.
But I'm not holding my breath for that to happen.
Meanwhile, there are a half dozen or so cross-platform windowing toolkits which get things right to varying degrees, but that only helps if you're making a new application. The gunk that makes the Emacs XWindows interface work is pretty horrid.
Post a Comment