Leopard Upgrade Report: Mo’ Features, Mo’ Problems

(Apologies to The Notorious B.I.G. for the title.)

I upgraded to Mac OS X 10.5 “Leopard” recently. In short, it’s not ready for mainstream use. There are a few nice improvements, but these are balanced by numerous problems that make me wish I had waited until, say, June 2008 or so. If you haven’t upgraded and aren’t sure that you need to, I suggest that you wait a few months, until some of the bugs have been worked out.

The Good Stuff:

Terminal.app now allows tabbed terminals in one window. Terminal also allows window background transparency, which wouldn’t normally be a feature I would care about, except that it makes it quite easy to set transparency at about 85-90% and put a DVD window behind it. This setup is more readable than the arrangement that Trans Lucy provides (it overlays a transparent movie window instead). If you’re like me, sometimes you work better with something busy going on in the background, and this does a good job of leaving text legible while making the movie kinda visible in the background.

Terminal and Safari now allow tabs to be dragged downward off of the tab bar to create a new window for that tab. It looks pretty cool and can be useful at times, mostly in Safari when you’re browsing a bunch of sites and want to pick one and background-load a bunch of links off of that page.

The new Finder fixes some of the old Finder bugs, though it brings new ones. (More about that below.) Basic problems like window resizing not shrinking to fit only the icons that were there, scroll bars displaying even when they are not needed, etc. are now gone. Desktop icons for volumes remember where you left them instead of being automatically placed every time they are mounted. They also position themselves so as to avoid being under the Dock if hiding is off (they don’t reposition themselves automatically as soon as the Dock position changes, but they are aware of where the Dock overhangs when they are choosing where to align).

Similarly, the window manager is smarter about being aware of where the Dock is, and will try to avoid resizing or zooming windows in ways that put part of them under the Dock.

Preview.app is a bit nicer: you can open a bunch of windows at once, even in one-window-per-file mode, and it stacks the windows in sorted order based on filename. The previous version (bundled with Mac OS X 10.4) opened them in essentially random order and would only open a maximum of 20 windows at once, forcing photos 20 and up into a single window with an image list in the sidebar. I don’t know about you but I take a lot more than 20 photos at any given event and it’s annoying to have to keep track of how many Preview windows I have open in order to keep it from merging the excess ones together into a single window. The new Preview fixes that.

My complex development environment worked fine, with one exception (details below). Ruby on Rails, Mongrel, PostreSQL via MacPorts, and autotest all worked fine. That was a big relief.

The Bad Stuff:

There are some incompatibilities that caused me problems early on. Most notably, Application Enhancer (used by the handy Instant Hijack feature of the excellent Audio Hijack Pro) causes a blue screen on boot! Here are the removal instructions. Fortunately I did a backup before installing (really it was just my nightly full backup) or I would have been a lot more freaked out about this.

I experienced seriously poor wireless networking performance. By that I mean very erratic ping times and latency even when sitting right next to the base station. Here are the details and fix; basically it’s a preferences file problem, which can be fixed by deleting the old 10.4-era preferences file. I’m not sure how Apple QA missed this one; I’d think that 100% of Tiger-to-Leopard upgrade cases would experience this problem.

GNU Screen, which I use like crazy, changed somehow, and I can’t figure out what they changed from the documentation. My super slick Screen running shell script, which sets up my whole development environment like a character mode IDE, broke. PATH somehow gets stomped and reset to the standard login-shell PATH, but no other environment variables get touched. I was not able to figure out why Screen was doing this in Leopard but not in Tiger, and eventually punted and put a hack in my .screenrc to re-set the PATH the way I wanted it in each screen. (Previously I had set it before creating any screens and it was inherited by each of them.)

There are UI issues that make existing applications not work right. OmniGraffle, which is a truly fabulous drawing program, had some strange input problems with mouse clicks that made it display error messages. A small point release fixed the problem, and the new OmniGraffle 5.0 beta releases have no issues. Unfortunately, OmniGraffle 5 is Leopard-only, and has a new file format that causes version 4 to warn you about possible unknown incompatibility upon opening the file. Given my current attitude of “don’t upgrade until later” about Leopard for other people, I don’t want to trap my drawings in a new Leopard-only format. So I’m still using 4.2.2 and it’s fine.

Other applications are not so fine. Microsoft Excel has some input issues that cause the keyboard input to suddenly go into limbo for no apparent reason. Clicking onto another application’s window and then back onto Excel fixes it; there is no current fix from Microsoft for this. You just have to accept that sometimes your keyboard input goes away and you have to fiddle for a minute to get it back. I think I’ve figured out that it has something to do with AutoFill and the popup menu of possible completions, so it may be possible to train oneself to not ever do whatever it is that causes the keyboard input to go nuts. But I’d rather just upgrade to Office 2008 whenever it comes out.

Adobe Photoshop CS3 has input problems as well. Most notably, the little numeric text input boxes for various tools work once and then go dead. For example, try transforming a selection and specifying, say, 66% width. Then do the same thing again – can’t do it; the typing goes into nowhere and the resizing never happens. The text is even drawn incorrectly in the little text box. This is a well known problem and according to this guy quoting an Adobe spokesperson, it will be fixed soon. As far as I can tell there is no workaround for this.

Carbon Copy Cloner 3.0.1, which I use for backups, doesn’t work properly on Leopard. Its only function in my world is to sync my whole hard disk every night to an external hard disk. It doesn’t do this correctly, unless you run the program and uncheck/recheck the checkbox next to the scheduled task every time you reboot. Supposedly the 3.0.2 update will fix this, so that the scheduled task properly installs itself without user intervention. For now I have a text file that reminds me to do this in my home directory, and I dragged that icon into my account’s Login Items list in System Preferences so I don’t forget to do it.

There are some race conditions apparent with opening items from Samba valumes. I have a home server with lots of files on it, and some aliases to folders on that server are on my laptop. So, when I log in, I can just open the folder and it mounts the server volume and goes right there. In Leopard, if I open more than one such folder alias, all of them fail, the volume fails to mount, and a stack of error dialog boxes piles up in the middle of my screen. Upon dismissing the last such error dialog box, the Finder crashes. The workaround is to mount the server volume first, or to open only one server-based folder alias first, and then open the rest.

Worse, if you have aliases to .dmg (disk images) on the server, and you try to mount more than one .dmg from a server at the same time (select more than one and open them simultaneously), all of them will fail and the diskimages-helper processes will all get stuck. At that point you must reboot in order to un-wedge the situation; kill -9 kills the processes but any future disk images will get stuck trying to mount in the same fashion. The workaround is to never try and open more than one alias to a disk image from a server at once. You can keep a bunch mounted, but you have to open and mount each one separately.

There are also a lot of cosmetic problems, mostly with the new Finder. The translucent menu bar makes it hard to read things on the menu bar, and just plain looks sloppy with any background other than a white one. I didn’t like the stripes in list view in the finder and using this hint turned that display option off with defaults write com.apple.finder FXListViewStripes -bool FALSE at a command line.

The Finder seems to have completely lost its ability to remember what view type (list, icons, or columns) you wanted for each window; I have frequently found that I’ll set a window to list view and navigate around and when I re-open that folder it’s in icon view, or vice versa. I’m pretty good at detecting patterns of UI behavior so I think I would have grasped any new system Apple has devised for deciding what view a window should have. Whatever the new one is, it sucks.

The Finder still has problems displaying image previews in icon mode. That’s one of my favorite OS X features: the ability to just open a folder full of photos and see previews of all of them at 128×128 pixel size, without using iPhoto or some other photo gallery app. Sadly, the Finder sometimes just stops building previews of the currently displayed set of icons, and you have to scroll around or “select all” and then “select none” to kick it so it notices that it still has some preview-building work to do. I do wish it would cache previews on disk, too; it’s silly that almost every time I visit a folder full of photos, it has to rebuild the previews from scratch. It does cache the previews in memory, but I have digital camera photos from ten years ago, and I don’t understand why the Finder needs to keep rebuilding the previews over and over.

The Finder still resizes the window so that it is partially offscreen when displaying the Toolbar. If you want to search within the current folder, you need to show the Toolbar and enter text in the search box. Okay, but that means that the Sidebar (with all the volumes, on the left side of the window) appears, and for some reason the whole window resizes to preserve the size of the content area, which means that the window grows, substantially. It also preserves the position of the content area, so the window grows on all three sides except the top. If your Finder window was close to being as big as the screen, the new size will be off screen in every direction. You can’t zoom the window without moving it first so that the zoom button is on screen, because the zoom button is now off the left side of the screen. It’s really not very slick, and becomes annoying if you use the Finder very much.

Also, when searching in the Finder using the in-window search function, the scope is always reset to “This Mac” instead of the current folder. Given that there’s a separate Find function, that doesn’t make a lot of sense. Since the search scope controls don’t appear until after you’ve started typing a search string, your only option is to start searching the whole computer and then click the scope button you wanted, which responds slowly since the Finder is busily carrying out the global search you didn’t want. Eventually it throws away the first partially-completed result set and starts over from the current window. Again, it’s frustrating if you search the current folder and its contents very often.

To be honest, though, a lot of these Finder gripes are new UI annoyances exchanged for old Finder UI annoyances. The new Finder is marginally better, except for all that mounting-multiple-disk-image or opening-multiple-folder stuff.

Conclusion:

Wait before upgrading, to give Adobe and Microsoft and Apple time to release some updates. I would say maybe March or June would be a good time to check on these things and see if it’s safe to upgrade. Until then, keep using Tiger; it’s really quite good and doesn’t have these issues.

8 thoughts on “Leopard Upgrade Report: Mo’ Features, Mo’ Problems”

  1. One of the biggest complaints about the old Finder was that every time you went into a new folder it would appear the default view mode (usually icon mode).

    So for those of use who liked to browse using list mode, navigation was a pain in the rear as each time you changed folders the Finder would change views. You’d change it back, then open a subfolder and the process would begin anew. Hilarious.

    Now, you could try to change the view mode for a certain folder, but if you didn’t have the right privileges to do so the Finder would just forget them, and the next time you returned to that folder you’d be right back where you started.

    And you could try setting you own default, but again that wouldn’t work for some folders, or for others that had already been set to a different mode.

    In Leopard, Apple reversed this behavior. The Finder will stay in the selected view mode when browsing, unless explicitly told otherwise. So if you always want a certain folder to display thumbnails, just hit the Icon View button, then do a command-J and check the “Always open in icon view” box.

    Now the Finder will remember those settings for that folder. This way you can stay in your preferred browsing mode, but still have “special” folders that always display thumbnails or start in Cover Flow.

  2. a comment about screen:

    it appears that in leopard, Terminal runs screen as a login shell. that is, it prefixes a “-” to the command when it invokes it. run “ps” to see your running processes to see this.

    this seems to change screen’s behavior.

  3. >it appears that in leopard, Terminal runs screen as a login shell. that is,
    >it prefixes a “-” to the command when it invokes it. run “ps” to see your running processes to see this.

    Not on my system it doesn’t. I had a shell script that set a bunch of environment variables, then ran screen, which then made a bunch of screens with shells in them. Now that doesn’t work (on Leopard). So it’s not about how screen is getting invoked, as far as I can tell; screen is just resetting the value of PATH before invoking the shell in each screen. Lame.

  4. I had the same problem. The quickest fix for me was to use the gnu screen from fink. This solved all my lost environment issues (make sure that /sw/bin is earlier in your PATH than /usr/bin or you’ll still be using the Leopard-supplied screen

  5. It seems like Neal was close to the right answer. The version of screen that comes with Leopard apparently doesn’t inherit environment variables from the parent process (such as bash running in a Terminal.app window), but it also invokes shells in each screen as non-login shells by default (‘login -pflq myusername /bin/bash’ in `ps aux`).

    So, ~/.bash_profile is not executed, but ~/.bashrc is.

    That means there are three ways to fix this that I can think of:

    1) Tell GNU Screen that you do want it to invoke Bash as a login shell in each screen. This is not done with the -l argument to screen, though it seems like that might work. It is done by specifying the -s option, with a value of -/bin/bash (the leading – tells Bash to act as a login shell). I found this solution here:

    http://forum.osnn.net/showthread.php?p=825125#8

    2) Move everything that you want loaded in a shell running within GNU Screen into your .bashrc instead of .bash_profile.

    3) Do as I originally did, and put a ‘setenv’ command in your .screenrc file that re-establishes the settings from your ~/.bash_profile.

    In my case, I’m using a custom environment-setting shell script for each project I’m working on, instead of having per-user global settings. So #1 and #2 won’t work. I may decide to give up on this approach and just stuff everything into .bashrc and lose the separation of environments between projects, for simplicity’s sake.

    Anyway it’s good to know what the heck is going on.

  6. thanks for figuring out how to fix screen. that was driving me crazy! I could tell right away that not all my shell’s . files were being run, but I didn’t know how to fix it. I just set the shells inside screen to be login shells, that was good enough for me. it would be nice if screen would inherit the environment though.

  7. actually, the shells run inside of screen do inherit from the environment.

    I did this:

    export FOO=bar
    screen
    echo $FOO

    and it printed out bar.

    but the shells weren’t login shells until I tweaked the settings. and yes, $PATH did get squashed.

  8. We’re also having a weird problem with Leopard aliases…to each other. My office has a mix of OS9 & Tiger Macs and we just received new iMacs. We started with just two of the new iMacs with no problem; they could communicate with each other, the older Macs and the file server with no problem. Then we added a third new iMac and now the aliases to each other don’t work. If Mac A connects to Mac B with an alias you get B, but if Mac A then tries to connect to Mac C it gets Mac B again. The same happens if you hook to Mac C first and try to get to B. This odd behavior happens on all three of the iMacs, and all our devices have manually set IP addresses.

    Worse yet, Leopard’s network performance is absolutely horrible compared to Tiger & OS9. The wait for files to index is substantially longer. While file transfer time is faster, waiting for Leopard to get around to initiating the transfer (3 to 45 seconds) is absolutely ridiculous. I do not get any of this bad behavior with OS9 & Tiger. Something is definitely wrong with Leopard.

Leave a Reply

Your email address will not be published. Required fields are marked *