This article originally appeared in TidBITS on 2011-08-05 at 9:37 a.m.
The permanent URL for this article is: http://tidbits.com/article/12398
Include images: Off

Lion Is a Quitter

by Matt Neuburg

Try this experiment in Mac OS X 10.7 Lion. Start up TextEdit. Close any open document windows. You’ll notice, from the name of the application appearing next to the Apple menu, that TextEdit is still running (it isn’t one of those applications, like System Preferences, that quits automatically when its last window closes). Now switch away from TextEdit and do something else for a while. Then use the Command-Tab application switcher to switch back to TextEdit. You can’t. It’s gone. You weren’t actively doing anything with TextEdit — it had no open windows and it wasn’t the frontmost application — so the system quietly told TextEdit to quit. Worse, if TextEdit appears in your Dock only when it’s running and this happens, its Dock icon mystifyingly disappears.

Unfortunately I can’t guarantee that the experiment will work the same way on your machine as it does on mine. It’s non-deterministic. I just tried it twice with TextEdit, and it worked both times; but I don’t know for a fact that Lion will cause a given application on your machine to quit while you’re not using it. (While it worked for both Adam Engst and Jeff Carlson, several commenters have been unable to reproduce it.) However, I do know that Lion can cause an application to quit while you’re not using it.

Yesterday, the same thing happened to me with Preview. I launched Preview because I wanted to open a certain PDF document. So I chose File > Open to summon the Open dialog. At that point, however, I realized that I wanted to make some changes to the folder containing the PDF document I intended to open. So I closed Preview’s Open dialog (and I may also have told Preview to hide) and switched to the Finder. When I was done messing about in the Finder, I tried to use Command-Tab to switch back to Preview to bring up the Open dialog again — but I couldn’t, because in the meantime, Preview had quietly been told to quit, by the system, behind my back, without notifying me.

As John Siracusa explains in his Ars Technica review of Lion [1], this is a Lion feature called Automatic Termination:

Lion will quit your running applications behind your back if it decides it needs the resources, and if you don’t appear to be using them. The heuristic for determining whether an application is “in use” is very conservative: it must not be the active application, it must have no visible, non-minimized windows — and, of course, it must explicitly support Automatic Termination.

As Siracusa goes on to point out, when Automatic Termination occurs, the terminated application may in fact not really be terminated. For example, right now on my machine, TextEdit is listed in Activity Monitor as one of my running processes. It’s using some memory; it has open files. Nevertheless, TextEdit doesn’t appear in the Command-Tab switcher or the Dock. Lion has faked me out twice: it has caused TextEdit to vanish from the visible display of running applications even though I didn’t quit TextEdit, and at the same time, it has kept TextEdit running in the background.

[image link] [2]

Reading Apple’s own discussion [3] of Automatic Termination, we discover that an application can be told to quit even if it has open windows — provided that those windows are not currently visible to the user (because they are all minimized, or because the application is hidden or in a different space than the one the user is looking at). This presupposes, of course, that the application, if it is document-based, supports Auto Save, so that if the system does tell the application to quit, its documents will be preserved even if the user has not explicitly saved them. And the application should also support Resume, so that if the user relaunches it, it will reappear in the same state as when it was told to quit, with all the same documents open and scrolled to the same point as before. Automatic Termination, Auto Save, and Resume are separate opt-in technologies, but a developer would surely never adopt the one without having also adopted the others (and Apple explicitly turns that “would” into a “should”).

So much for the facts. The rest of this article is sheer opinion. In particular, I propose to discuss the big question of whether Automatic Termination is a good thing.

Is Automatic Termination a technical improvement? As far as I can tell, it is not, since quitting applications doesn’t actually save all that much on resources. A Mac OS X application’s event loop is non-polling, so an idle running application uses no CPU; and one of the main technical benefits that Mac OS X has always offered is its wonderful management of virtual memory, along with swapping of resources to disk, which means that running applications can request far more RAM in total than the amount of physical RAM your Mac actually possesses. That’s why many users leave literally dozens of applications running all the time, with no significant penalty, except perhaps a slight delay if an application’s resources have to be swapped back in — and in that case, the solution isn’t so much to quit applications as to get more RAM (which you might well have to do merely to run Lion satisfactorily at all). Besides, as the screenshot above shows, Automatic Termination doesn’t really cause the application process to quit, so it doesn’t save any resources in any case!

So the benefits of Automatic Termination must lie instead in the user experience. Now, on the one hand, I can imagine Apple’s own argument in favor of Automatic Termination. The ultimate goal here is to annihilate the distinction between running and non-running applications. Consider how, on iOS 4, with multitasking, you don’t know what applications are running, because you usually don’t quit an application yourself (you switch away from it and allow the system to tell it to quit if needed), and you don’t care what applications are running, because both running and non-running applications are listed in the Fast App Switcher, and because apps are supposed to save and restore their state — so that switching to a running app and relaunching a terminated app amount to the same thing. (See my “What is Fast App Switching? [4],” 23 June 2010.) Well, that’s how Lion would be if all applications supported Automatic Termination, Auto Save, and Resume. That’s why there’s an option, in the Dock system preference pane, to stop showing indicator lights for open applications in the Dock: In an ideal Lion world, the distinction between an open and a non-open application would be unimportant.

On the other hand, the fact is that when Lion caused Preview to quit automatically yesterday on my machine, I was using Preview. I wasn’t using it actively at that moment in a way that Lion knew about — there were no open Preview windows, and Preview wasn’t frontmost — but I was engaged in some activity involving Preview. I had switched away from Preview only in order to prepare things in the Finder so that the document I intended to open in Preview would be ready. But when I switched back to Preview with Command-Tab, Preview was gone. That’s not helpful or useful; it’s annoying, confusing, and a hindrance. I had to launch Preview explicitly again in order to continue with my task.

In my view, therefore, the attempt to copy the iOS experience to the Mac is inappropriate. Apple’s entire agenda here is misguided. On iOS, you can use only one application at a time, so it makes sense that the system can quit an application you’re not using; to help you, a recently used application is listed in the Fast App Switcher even if it is no longer running. But on the Mac, you can effectively use multiple applications at once — that’s what I was doing in this instance — and neither the Command-Tab switcher nor the Dock shows an application that has been automatically terminated. In this particular case, having studied Lion beforehand, I understood what had happened when Preview seemed unaccountably to have disappeared, and knew how to relaunch it; but Lion had effectively pulled the rug out from under me, slowing me down in the middle of a complex operation, and one can well imagine a beginner being not helped but bewildered by Lion’s behavior here.

Moreover, there’s a larger question at stake: Who, precisely, is in charge? I think it should be me, but Lion disagrees — and not in this respect alone. Automatic Termination is merely one aspect of an overall “nanny state” philosophy characteristic of Lion, and one which I find objectionable. When I tell an application to run, I mean it to run, until I tell it to quit; Lion thinks it knows better, and terminates the application for me. Conversely, when I tell an application to quit, I mean it to quit; but again, Lion thinks it knows better, restoring the application’s windows when the application launches again, and relaunching the application if I restart the computer. By the same token, when I tell an application to save, I expect it to save, and when I don’t tell an application to save, I expect it not to save; again, Lion wants to abolish a distinction and a choice that I think should be up to me.

On the iPhone and iPad, the interface is by necessity simplified, and the degree of control exercised by the system is not only appropriate but helpful. But on the Mac, things are otherwise. In iOS, the system is helping me; in Mac OS X, it’s fighting me. Whereas I think my computer is mine to command, Lion has other ideas.

(The result doesn’t remind me of iOS, actually, so much as of Microsoft. What most people object to in Microsoft applications is that those applications think they’re smart, whereas in fact they’re just being smart-asses. “It looks like you’re trying to make a list; would you like to use the List Manager?” Might a talking paper clip appear suddenly in Lion and take over my life?)

Granted, I’m not a typical user. For users who are coming fresh to the Mac, perhaps an iOS-like Mac OS X is appropriate. Perhaps they find the Mac interface awkward much as I find iOS awkward, and they appreciate what Lion is doing behind the scenes in the same way I appreciate what iOS does behind the scenes. Some people think of their computer as a Prius hybrid; it’s complicated under the hood, but in actual usage it “just works.” I think of my computer more like an 1960s manual-shift VW Beetle: it does what I tell it, and I can often repair it if things go wrong. Lion makes me feel I’m being chucked out of the driver’s seat.

[1]: http://arstechnica.com/apple/reviews/2011/07/mac-os-x-10-7.ars/8#process-model
[2]: http://tidbits.com/resources/2011-08/isTextEditRunning.png
[3]: http://developer.apple.com/library/mac/#documentation/General/Conceptual/MOSXAppProgrammingGuide/CoreAppDesign/CoreAppDesign.html
[4]: http://tidbits.com/article/11378