Cocoa and Objective-C: Up and Running (by me) is now available from O'Reilly.

BitRot on Mac OS X

This page was just pointed out to me by Matt on macosx-talk. In theory, it discusses Mac OS X from the perspective of a Linux user. It may be well-intentioned, but there some major gaps and errors in the explanations.

When switching operating systems, there is a strong tendency to whine about all the things missing in the new OS, or that are done differently and require a change of habits. The advantages become obvious only after some time. I'll do my best to take that into account and present a balanced review.


Keep this in mind as you read the following. It's a noble goal that I think wasn't followed through on.

MacOS demands that you click a window to work with it. [...] I can offer no suggestion when a click on a button in an unselected window will work, and when it will be ignored.


You can interact with background window by holding down command. As far as buttons activating in the background, it is a bit unpredictable. I think the original idea was to only allow buttons linked to non-destructive actions to activate without focus, but I'm not sure how well this principal has held up. In any case, I think you can force background activation in many cases by holding down the Command key.

From the right side of the Finder to another Finder on the same disk: move. On a different disk: copy.


This is and always has been by design. It's the least destructive default behavior. You can override it with the option key.

From the right side of a Finder on the system disk to the desktop, or vice versa: move. Otherwise, copy. [...] Vice versa: destroy the icon. From the title bar of a Finder: copy. I could go on. Are you confused? No wonder, this is a total mess.


Fair enough.

Moving a window can be done only from the title bar. A window can be moved partially off-screen to the left, right, or bottom, but not the top; it sticks to the desktop title bar. Modern amenities like edge snapping are missing.


Windows which have the metal look can be moved via any open space, not just the title bar. There is a bit of debate about the inconsistency of this, though I think it's moving closer to the metal behavior.

Keeping windows below the menu bar is certainly the correct behavior. I suppose edge snapping would be nice for every window, but I'm not sure I see the immediate value unless you have a palette of some sort.

The Mac trusts the filename extension instead. If your JPEG file is named "file.png", you cannot double-click it, the preview app will refuse to load it or crash.


This makes no sense at all. Preview opens jpeg files just fine, regardless of the extension. In addition, file extensions are not the only factor. Both file extensions and the creator code are taken into consideration, providing for better-than-Window functionality while still being compatible with the real world.

You cannot edit a file named "account statements" because there is no extension so MacOS is helpless. f your movie file is named file.mpeg instead of file.mpg, you cannot view it.


Completely false in every respect.

Basically, you have multiple virtual desktops, perhaps one for browsing, another for mail, another for editing; all filled with windows, and you can switch between them at the touch of a button. MacOS lacks this.


I'd like to see this as well.

The Quicktime player ships as a giant billboard full of features that are disabled until you pay another 30 Euros for the Pro update.


iMovie is probably more capable in most respects, and is included.

KDE is not as pretty, not as consistent, probably not designed by HI professionals, but it is a lot more modern than the Mac GUI


Huh?

No discussion about the Mac GUI can avoid the isue of the Mac mouse. It looks cool, but it had only has a single button


Wrong, obviously.

With my Mac, I learned about shareware. That's software designed to work poorly or not at all, or just for a short time, until you pay money. No thanks, especially since most of the stuff ought to have been part of the system in the first place.


This is balanced? Perhaps there's a bit of a cultural divide here. My experience is that the Linux community would rather have something slightly broken and free. For the most part, Mac users will pay for something if it works correctly. This is why they use a Mac in the first place.

In particular, they tore out some of the lower layers and replaced them with a Mach-like microkernel. Microkernels were all the rage fifteen years ago, but the idea totally crashed and burned because performance and resource usage was pitiful.


These are just buzzwords. I really don't think he understands kernel environment at all.

And that's not the only error they repeated: much of the MacOS APIs are in a language called Objective C, a forerunner of C++. In many ways it's cleaner than C++, even though it's just some object-oriented features grafted on C with very peculiar syntax, but it's now a failed language that nobody uses. [...]The upshot is that Apple is now stuck with a defacto proprietary language, [...]The fact that Objective C is GPLed and there are alternate C++ bindings don't change the fact that Apple is making it as difficult as possible to write MacOS software.


A horribly distorted characterization. To see how effective Objective-C is at rapid development, just look at the rate at which Apple churns out top-quality software. They were initially concerned about how well the language would be received, which why Cocoa was offered via Java as well. It turns out Objective-C became wildly popular in the Mac community, to the point that Apple is no longer going to maintain Java support for Cocoa.

If Objective-C truly made it difficult to write Mac OS X software, we'd see a landscape where it takes more Mac developers per-project to achieve equal quality to Windows and Linux apps. Instead, it's quite normal to see 1-3 person teams of Cocoa programmers put out software that blows away products written by 12-20 person teams on Windows or Linux.

Speaking of wedging the Finder: the worst thing you can do to it is accessing a network (NFS) server that doesn't respond. The Finder will freeze for very long periods of time. [...] Version 10.4.2 is no less broken than any previous 10.4, it seems they are incapable of fixing this.


This is a long-standing an well-documented problem -- perhaps one of the few true major issues with Mac OS X. Apple is completely capable of fixing this, it's just that it requires a more serious look at the architectural issues of the Carbon-based Finder. I'm completely with him on this one.

And it doesn't stop there. FreeBSD comes with a perfectly functional set of configuration files in /etc that anyone who knows Unix or Linux is instantly familiar with. They all exist on MacOS X too. And they are all ignored![...]a weird and proprietary configuration system called Netinfo[...]It's less powerful than the system it replaces because everything got forced into a key=value system.


Not all of these files are ignored, but a very small minority of the world's computer users understand or want to deal with unix/linux at this level. In any case, the storage format is somewhat irrelevant. All that really matters is how you configure things.

Apparently Apple saw Microsoft's idiotic Registry blunder and felt that they must make a similar and equivalent idiotic blunder. You guessed it, Netinfo originated at NeXT[...]Completely undocumented of course, the simplest jobs take forever to figure out.


Oh, the irony. NetInfo, of course, predates Windows 95. It's not used in nearly the same capacity as the Windows registry, though. It would be really helpful to know what he was trying to use NetInfo for. I think I've had to dig into it maybe twice in four years.

Linux is open in all directions, everything is possible, you'll find recipes for just about anything on the web, including some to shoot yourself in the foot. MacOS X, on the other hand, has all the maintenance access panels nailed shut. If Apple made a mistake or doesn't feel like letting you look under the hood, tough luck.


This seems like hyperbole to me. There's no question Mac OS X is a commercial, store-bought product which is not completely open source. In Mac culture, the idea is that the software should basically work intuitively and take care of itself. In the Linux world, you get the software free so the business model is based on post-purchase support contracts and hiring experts to run the thing.

Given the Mac model, you can't just blindly give away the product. There would be no money to invest in development and we wouldn't have a Mac OS X.

I also have serious problems with Apple's proprietary graphics engine. They should have used X11. [...]I am talking about interoperability on a network, based on open standards. The system should not care on which computer a program runs and on which display the windows show


Apple Remote Desktop? To throw away all of Quartz just for this seems crazy to me.

They think that each workstation is an island, connected by tenuous bridges intended for the sole purpose of pushing data around. You are supposed to start all your programs on the workstation in front of you.


This is just the X11 model, and there's more than one that works. I'd be interested in seeing the practical problems that he's trying to solve, rather than trying to wedge everything into an X11 mindset.

Bottom Line

While there are some legitimate issues raised here in terms of consistency, the author made some egregious technical errors in a number of different places. There are also some opinions which I find incredibly misleading, particularly in terms of the kernel and core API. These would have benefited from real, hand-on research instead of first impressions.

Finally, there's an issue of culture. The Linux community prizes the ideal of free and open above all else -- even if the end product itself isn't very good. The idea is that any usability or functionality issues can eventually be fixed. This may be true, but Mac users would rather pay for something that works today.

The Mac community doesn't get militant over for-pay software because there's an understanding that even developers have to eat. More importantly, there's an expectation that you pay for the software itself and it should work as advertised without having to bring in costly consultants or spend hours searching the web for solutions. I think this is where the industry as a whole is ultimately heading.
Design Element
BitRot on Mac OS X
Posted Nov 28, 2005 — 17 comments below




 

Mark Davis — Nov 28, 05 571

Thanks for covering this article Scott. I found a link to that page on del.icio.us and felt that this Linux "extremist" had not used Mac OS X long enough or did not write the article with an open mind.

Stephen C. Johnson — Nov 28, 05 572

Incredibly well thought out and balanced analysis. Thank you.

Fro — Nov 28, 05 573

>I'd like to see this as well.

google "Desktop Manager virtual desktop"?

Tony Arnold — Nov 29, 05 574

Or try out the latest builds of my updated version of Virtue: http://www.tonyarnold.com/articles/2005/11/24/virtue-0-5-1b2. Virtual desktops ahoy!

Olivier — Nov 29, 05 575

Modern amenities like edge snapping are missing.


Edge snapping is hideous. I don't know about other people, but I know how to use a mouse and am perfectly capable of moving a window to the edge of the screen without the OS or application 'helping' me. If I don't move it completely to the edge, it means I intend to leave some room there.

Adium is a perfect example of what not to do in this respect. Windows snap to screen edges and there is no way of disabling it, neither from the preferences, nor by holding a modifier key. Acceptable behaviour would be to have a default preference and being able to inverse the effect with a modifier.

Sam — Nov 29, 05 576

Well, some time ago I've heard a Linux user complain about Apple not sticking to the File System Hierarchy Standard (www.pathname.com/fhs/). Similarly some Ruby users complain that Ruby is not getting installed in the usual location (which sometimes seems to be responsible for some pathname & file location issues - though there is a Ruby package called pathname2 that could facilitate a compliance with the FHS). Are there any specific reasons why Apple opted for this file location strategy?

Anyway. Mac OS X is a great OS that combines may things many many users have longed for for a very long time (state-of-the-art GUI and graphics/video capabilities, to name but a few, combined with a flexible, user-controllable Unix underpinning).

Another interesting window manager btw is Witch (www.petermauerer.de).

Uli Kusterer — Nov 29, 05 577

My thoughts:

Virtual desktops are available via at least three open-source applications. The Mighty Mouse might not have been available back then, but OS X supported *any* USB mouse with two buttons right from the start. For opening files without an extension, all he'd have to do is use the "Open with..." option (right-click or "Get Info..." panel).

From what I heard, NetInfo is actually more modern and safer than /etc/passwd & Co. Similarly, Linux' monolithic Kernel is *one* of the reasons people keep having to recompile their Kernel on Linux just to install a driver. In addition, NetInfo is very easy if, instead of using the command line, he'd just use the NetInfo Manager GUI app, or the "Accounts" panel of System Preferences.

The argument *against* the Microkernel could also be raised against his request for X11. On X11 systems, every application has to use a very complicated, high-overhead protocol just to talk to the X11 server *on the same computer* (the protocol ensures certain non-native byte ordering and number size conventions). That's a huge bottleneck when trying to do any graphics-intensive stuff, and one of the reasons why most Linuxes have problems supporting OpenGL-acceleration on graphics cards.

The problem he has with no remote login is simply due to different usage patterns. If the computer in front of you really is used as a "work station", you want it to be one of a dozen terminals hooked up to the same central server. But the Mac is *a PC*. As such, most people only have one, so that remote-login stuff is pretty useless for them and the overhead involved undesired.

If he's in a local network, he can use Fast User Switching and a recent version of OSXVNC to run all his stuff on a 'server' while another user can still be logged in there.

He's completely right about the drag/copy/alias inconsistency and the activation click trggers/is ignored stuff, though. That's actually gotten worse in OS X than it even was on OS 9 (e.g. copying a disk makes an alias, not a folder with a copy...)

Uli Kusterer — Nov 29, 05 578

Oh forgot this one: The forcing windows below the menu bar is good for windows that can only be dragged by the title bar. Don't know why they still enforce that for metal windows. As long as any draggable edge is still reachable, it's okay.

Jo — Nov 29, 05 579

Sam, for the Mac OS X & FHS issue see hivelogic.com/articles/2005/11/29/using_usr_local!

Uli Kusterer — Nov 29, 05 580

The FHS is basically the old Unix-style hierarchy. It's completely impenetrable to most people (especially due to its 70s-style abbreviated names -- many people think "/usr" stands for "user", while it's actually "Unix System Resources" etc.).

So, in this case, Apple used that for the non-user-serviceable parts, but kept the NeXT-added folders that users and their applications are to use (i.e. /System, /Library, ~/Library and /Network). Since in Linux and typical Unixes there's not much difference made between user and admin and developer (as far as the file system is concerned -- there's pretty much only the security distinction between stuff at / and stuff in ~/...), I think this is actually a good decision.

Eaten Alive — Nov 29, 05 581

Random rant:

WTF is up with Apple not following the standards they set?

~/Library/Safari? ~/Library/Mail?? ~/Library/Mail Downloads? ~/Library/iTunes? These all seem like good candidates for ~/Library/Application Support.

Dan Price — Nov 30, 05 582

Myself, I use the Mac as a GUI, and Linux for everything else. I am writing this with a Linux vim editor, in a MacOS terminal window, and I'll use Linux script to secure-copy the file over to my provider's Linux web server.

I will never understand Linux-users.

Sam — Dec 01, 05 583

Yet another /Library fan: www.rubygarden.org/ruby?InstallingElsewhere.

Roland Torres — Dec 01, 05 584

I use OSX, RH Linux and Solaris here at work, and the only X11 functionality that I wish Quartz had was XHOST. Apple Remote Desktop is nice, but it hogs the host machine, whereas an *app-specific* XHOST-type of GUI forwarding would be an awesome addition to Quartz. Dunno if that's practical, though.

But to say that KDE is "more modern" than Quartz? What's the guy smoking?

Roland

Lon Varscsak — Dec 01, 05 585

I totally agree Roland. Anyone remember -NXHost?

John — Dec 02, 05 586

One thing I point out to people every time they ask why you can't drag a window from any edge in OS X is the simple fact that there is no edge to grab other than the top. The other edges are only shadows, its not like the OS 9 days where windows had actual borders several pixels wide on every side.

OTOH I usually follow that by saying I'd like an option- or control-click to give me the "Grabber Hand" pointer and let me grab a window from any point to drag it.

yaz — Jan 18, 06 675

Edge snapping MUST be there. It requires 40 strings of code and one checking point in UI.

Shadow doesn't allow open window wide out. Why?

Window must have resizing from all size. Another 40 strings of code and one checking point.
How do you get miserable Windows switchers, as me?

KDE has global system shortcuts. Hey Apple guys, did you hear about mouse gestures there?




 

Comments Temporarily Disabled

I had to temporarily disable comments due to spam. I'll re-enable them soon.




Technorati Profile
Copyright © Scott Stevenson 2004-2008