From: ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
Newsgroups: comp.sys.mac.programmer
Subject: MacBureaucracy
Date: 23 Nov 92 16:55:58 +1300
Organization: University of Waikato, Hamilton, New Zealand

I remember a saying from somewhere, to the effect that any piece of software
reflects the organizational structure that produced it. I guess one corollary of
this is that arbitrary, inexplicable divisions within the organization will
manifest themselves as arbitrary, inexplicable divisions between the functions
of the software.

This is starting to manifest itself in several places in the Mac system. One
of the first ones to strike me was the popup menu CDEF that comes as part of
the Comms Toolbox. Sure, a popup menu control is useful in a lot of contexts,
not necessarily communications-related, and it's good of the CTB people to
make it available in such a general form. But it remains a feature that you
only get on a CTB-enabled system, as (face it) a sort of kludge on the
existing Toolbox architecture.

QuickTime has introduced a few more examples. The Image Compression Manager
in QuickTime 1.5 adds a nice collection of window-alignment services, that
take into account all the intricacies of pixel depth and CPU type, to ensure
that screen drawing is as fast as possible. I wouldn't describe these routines
as a kludge; they are well thought out, and are of very general use.
Nevertheless, you call them through the Image Compression Manager trap, and
they are only available if you have QuickTime installed.

Another example is the Standard Compression Dialog in QuickTime 1.5. Tucked
away among the functions it provides are some general calls for positioning
dialogs on the screen. These support options for centering the dialog on the
main screen, or on the best (deepest) screen. Again, useful in lots of contexts
outside of getting compression settings from the user, but only available
by first loading the Standard Compression Dialog.

In all these cases, it seems obvious what happened: the authors of these
pieces of system software found that they needed these functions, and that
they hadn't already been implemented by the groups which should have been
responsible for them. Luckily they had the good idea of making the functions
available in a general form for others to use.

While on the subject of QuickTime, it seems to me that if you implement some
function as a "component" (i e using the Component Manager), then the idea is
that there may be other components of the same type, that might be available
to choose from or that might even replace the original component. There are
clearly a couple of collections of QuickTime services that don't fit into
this category, namely the Standard Compression Dialog and the Sequence Grabber.

We-ell, you *might* want to replace the Standard Compression Dialog with
alternatives (and perhaps delegate such utility functions as the dialog-
positioning ones back to the original). And the Sequence Grabber supports all
kinds of additional plug-in component types which handle various parts of the
details of movie grabbing. But the Sequence Grabber Component *itself* doesn't
strike me as something you might want to replace.

What happened here? Perhaps these functions appeared later, and were not part
of the original QuickTime plan. Perhaps they were seen as experimental add-ons,
that could be tried out and removed if necessary without impacting the rest of
the design. Or maybe they were being miserly with A-trap allocations that
week...

I'll freely admit it: all the specific concerns I've raised so far can be seen
as trivial, nit-picking ones. But I can't help wondering: as the OS gets even
more complex, this could very well be a foretaste of worse things to come. I
*hope* Apple will never let things get to the stage where the Mac system becomes
seriously complex and unwieldy, because of lack of coordination and duplication
of effort between different groups; I hope that, even as I speak, work is
under way to keep these sorts of occurrences to a minimum in future.

I just hope it's not too late...

Lawrence D'Oliveiro                       fone: +64-7-856-2889
Computer Services Dept                     fax: +64-7-838-4066
University of Waikato            electric mail: ldo@waikato.ac.nz
Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
It's 30 milliseconds to timeout. Do you know where your ACK packets are?
Newsgroups: comp.sys.mac.programmer