About Apps With No Windows
Martin Pool gives an informative pros and cons list of Ubuntu Linux versus a number of other OSes. I’d like to jump off on a tangent. Martin gave a plus ot Ubuntu for:
+ Less Macintosh historical baggage. Mac apps can be in the wierd state of running but having no windows open: GNOME designers just know this is silly. OS X suffers some friction between the Mac and Unix parts, in e.g. case sensitivity or resource forks.
While there is definitely some historical baggage in Mac OS X (not much mind you - Apple were pretty ruthless with cutting things out), the ability for an application to be running without any windows open is actually a design feature and not historical baggage. When described as “the wierd state of running but having no windows open” it sounds downright stupid, but if you describe it as “the ability for the menubar to not disappear suddenly when closing a window” it makes a lot more sense.
The Macintosh menubar is placed at the top of the screen because it’s significantly faster to access the menus when it’s placed there (plenty of research backs this up - essentially the sides of the screen have infinite depth so they’re easy to hit). Since the menus are at the top of the screen and not in the window, it makes no sense for the menubar to change when you close a window. Thus, when closing a window in an application the application continues running allowing you to open a new document, adjust preferences etc etc. That’s not the only reason though. Think of someone using pen and paper who has two tasks to complete. They start the first task by getting out a clean sheet of paper and writing on it until they are finished. Then they file that piece of paper away. Finally they start the second task by getting out another clean sheet of paper and starting writing again.
In other words, the life cycle is:
- Create a new document.
- Work on document.
- Save and close document (filing both saves the paper and removes it from the workbench)
- Create a new document.
If you were using Gnome, Windows or pretty much any OS other than Mac OS, step 3 would suddenly cause your pen to jump back into the drawer. You’d actually have to rethink the order you do things in to open a new document before you close the previous one.
Now you might argue that people typically work on more than one thing at a time and they are likely to have both documents open anyway. They might indeed but in that case there is another subtle benefit. When they decide they’ve had enough of work and want to put it all away and play a game, they simply hit command-Q and all of the documents in that application close. It’s like having a bulldozer that can file things neatly.
The disadvantage to the Mac OS way of doing things was that on OS 9, you didn’t realize the application was still running and either ran out of RAM or got really confused when you next double clicked on the application and nothing happened (in fact the menubar changed but noone seems to notice that). OS X (and the magic of modern computing) solves both these problems. Firstly, you won’t run out of RAM anymore because OS X has virtual memory and the ability to move things around in RAM (OS 9 loaded things in order and fragmented memory effectively couldn’t be reclaimed - plus the virtual memory was really bad). You could leave every application on your system open in OS X and it just wouldn’t matter because the unused applications would be paged out to virtual memory. Note that because they are unused they wouldn’t constantly have to be paged back in either so no hard drive thrashing.
The second problem is solved in two ways. Firstly there is a reasonably obvious indicator that an application is open (the icon appears in the dock if it wasn’t already there and a black triangle appears under the icon). This helps a little, but not a lot. The biggest improvement is the Aqua Human Interface Guidelines change which now requires that when the user clicks on an application in the dock or double clicks it in the Finder (the same actions used for opening it) the application will bring it’s existing windows to the front if it has any, or create a new window if not.
If you combine the effects of these two changes, the result is that the “weird state” of an application being open but with no windows effectively ceases to exist. The user can be completely unaware that the application is running and continue to go about their work without ever noticing. When they try to open the application again it behaves exactly as it would have when first opened and displays a new window. There is no noticeable impact on resources because the RAM can be swapped out to disk and made available to other applications and modern hard drives have plenty of space to cater for this. The user is now able to operate in their logical order without menubars unexpectedly changing on them.
So as it turns out it’s the GNOME developers who got the UI design wrong predominately by putting the menubar in the window instead of at the top of the screen. Once they’d made a mess of that behavior, it wasn’t really an option to avoid the disappearing menubar problem because the menu is so inextricably linked to the window.

October 15th, 2004 at 10:53 am
Don’t ask me what I am doing back here, but i agree with most of what you have said. After just recently taking a liking to macs in general I agree that the menu at the top of the screen does make sense in most respects (you can only click on one applications menu at a time, so why clutter the screen with more). The other thing is that for apps in windows (ie, IE haha) it seems ridiculous to duplicate that menu functionality for multiple windows that are open. Tab functionality fixes this type of thing (in browsers) mostly, but can be limiting in the amount of sites you can have usable simultaneously (i like safari, but i dont like how it puts tabs you can’t fit on the screen into a drop down - i tend to forget about them).
I like the dock, but one thing (in my limited osx experience) that i have been yearning for is minimise/hide functionality that works for me. Is it just me, or is minimising a window in osx absolutely pointless, it puts the app down there in the dock ‘tray’ and just adds to the clutter more. Worse than that, when i minimise-maximise-minimise, with several apps in the ‘tray’, it will cycle them (ie first one becomes the last one when minimised again) forcing me to ’search’ for the window i want in the tray, rather than ‘just know’ that the one i want was where it was originally in the same order.
It would be better if I could press the ‘minus’ button and the window was ‘hidden’ instead (ala right clicking on the dock icon and selecting hide).
Maybe this all seems better when running in some crazy resolution on a 20inch monitor, but on my 12inch ibook at 1024, it gets frustrating.
Anyway, sorry if I got off-topic as far as the whole windowing thing is concerned, I originally came here to ask you what java ide you use, cause xcode seems to blow goats as far as java programming is concerned. It just seems that if i want to create a simple java app, it tries to ‘appleise’ it and import all this apple shit (i know it isn’t that bad, but it just pisses me off).
I would prefer something that allows me to treat the java app as a ‘java app’ ie running on a java operating system and using the java look and feel etc. i know this is all possible quite simply, but i don’t want an ide that tries to force this stuff down my throat, if i want to streamline it to run pretty on osx, then that is my choice.
I seem to recall you using eclipse, but is that pure eclipse, or some third party stuff built on top of eclipse by another company that you have paid for, and how good is it? i really like jcreator on windows, very visual studio, and yes ms are gay, but visual studio is still pretty handy.
gilbs.
ps - xcode seems pretty good for c++ development. i have started some cross platform opengl, sdl, c++ game project and it seems pretty handy. it has some limitations, but is pretty good all round.
i enjoy my mac. it being my main computer and all now.