[comp.sys.next] NeXT Limitations?

gillies@m.cs.uiuc.edu (11/24/90)

What are the main limitations of the software and hardware for NeXT
machines?  I suspect there is a serious limitation in the malleability
of the user interface and UNIX.  For instance, you can do the
following to a mac:

1.  Change the template for window creation (window looks) system-wide?
2.  Write GLOBAL patches to sense actions in the systems (like when
    a particular file is written to disk, or when a user
    makes a particular action with the mouse / keyboard, then
    pop up a special menu, etc).
3.  Add functions keys (FKEYs) to the system (special keyboard patch).
4.  Sense inactivity of keyboard/mouse and launch a screen saver
5.  Completely supercede some graphics primitives for fast animation
    in certain special cases, YET, still continue to function in
    harmony with the toolbox (for instance, MS-Word seems to
    use special screen-scroll algorithm when the text window
    is in the default screen location; bit alignment doubles scrolling 
    speed, and does not interfere with other programs).
6.  Do weird things like make the mouse wrap around on the
    screen, make eyes follow mouse on screen, muck with color table
    arbitrarily, do fast animation of up to 50 small (32*32 pixel) 
    objects, etc.
7.  Force a redraw of the screen and capture all the postscript.
8.  Put a real-time clock somewhere useful (in menu bar or in icon).
9.  Take over the hardware at lowest level (i.e. ethernet) and do
    something neat / fast / different (this is a bane of UNIX).
    I.e. make the machine transmit XNS packets, or INIT a floppy
    disk in 5 seconds (without verifying blocks are good), etc.

Can I do all these things without hacking the NeXT kernel?  That seems
to be the big disadvantage about most UNIX systems I've seen -- not
enough malleability without recompiling the kernel. Does the NeXT have
the concept of an "INIT" (user-installed boot-time patch)?  The mac
has some dumb limitations:

1.  Limit on fonts in menu (8) (this may be fixed, I don't know)
2.  Painful way of installing fonts, DA's, FKeys
3.  Zillions of special-cases must be made to get software to work
    (does this machine have color quickdraw?  Are we running
     multifinder?  Are their multiple monitors?  How much memory
     can we work with?  etc. etc. etc.)
4.  Some pieces of hardware have almost zero system support software
    (i.e. no language and little standardization for sounds)
5.  Jumpy mouse (interrupts off) when floppy disk is active.
6.  Broken printing architecture
7.  Broken on purpose in many areas, so that 3rd-party software
    writers can make money "fixing" it.  I.e. no backup software, no
    screen saver, no text editor, (almost) no disk scavenger / repair /
    recovery utility, no way to partition a disk, crippled "find" program,
    crippled scripting program, no supplied way to invert screen video.

What is the mechanism for customizing the NeXT?  I've used one other
workstation (Xerox XDE/Viewpoint) and the method for customization was
pretty awful (in former, build one huge file with magic words, in
latter, no customization was possible).  The Mac's control panel is a
great step forward.

reb@cs.brown.edu (Robert E. Brown) (11/24/90)

Wow, where should I begin . . .  There are Next / Unix-ish ways to do most
of the things on gillies@m.cs.uiuc.edu's list of Macintosh features.  Some,
however, are completely unnecessary on real computers.

Can the Next . . .

        1.  Change the template for window creation (window looks)
            system-wide?

The visual look of a windowing system should be designed by skilled graphic
artists and industrial designers.  Most users of computers are completely
lacking in the skills and artistic ability necessary to create a new window
look that is superior to one properly designed.  Still, a skilled programmer
could undoubtedly hack the Next software and change the look of buttons and
icons.  Software is inifinitely malleable.

        2.  Write GLOBAL patches to sense actions in the systems (like when
            a particular file is written to disk, or . . .

Since Unix machines support multiprogramming, it is easy to set up background
processes that hang around looking for things like files to appear.  Since
each process runs in its own address space, however, it is hard for one
process to detect a particular key press or menu action by another.  If this
sort of thing is deemed useful, the application kit that Next provides could
be extended to provide this sort of feature in a well-defined way.

        3.  Add functions keys (FKEYs) to the system (special keyboard patch).
        4.  Sense inactivity of keyboard/mouse and launch a screen saver

Yes.

        5.  Completely supercede some graphics primitives for fast animation
            in certain special cases, YET, still continue to function in
            harmony with the toolbox (for instance, MS-Word seems to
            use special screen-scroll algorithm when the text window . . .

This is just the sort of crap that breaks Microsoft applications every time
Apple announces a new version of the Macintosh OS.  Applications should use
clear interfaces to interact with the operating system and windowing
environment.  The Next is not a game machine and its hardware is sufficiently
powerful to scroll windows without bypassing the windowing system.

        6.  Do weird things like make the mouse wrap around on the
            screen, make eyes follow mouse on screen, muck with color table
            arbitrarily, do fast animation of up to 50 small (32*32 pixel)
            objects, etc.

Same answer here.  Eyecon is a program that draws eyes that follow the mouse.
The mouse should not wrap around.  Animation with color table rotation is a
cheap hack that has no place on the Next.  The Next CPU/dma hardware is
sufficiently powerful to animate small objects via the toolbox interface.

        7.  Force a redraw of the screen and capture all the postscript.
        8.  Put a real-time clock somewhere useful (in menu bar or in icon).

Yes.

        9.  Take over the hardware at lowest level (i.e. ethernet) and do
            something neat / fast / different (this is a bane of UNIX).
            I.e. make the machine transmit XNS packets, or INIT a floppy
            disk in 5 seconds (without verifying blocks are good), etc.

Take over the hardware at the lowest level?  No!  Operating systems were
invented to keep user programs from screwing up the hardware and each other.
This is something Apple still does not understand.  Initilizing a
floppy can be done with a user program by performing I/O and I/O
control operations to a SCSI device.  Capturing XNS packets can in
principle be done with an installable device driver or a user-level
program that is fed ethernet packets by the kernel.

        Does the NeXT have the concept of an "INIT" (user-installed
        boot-time patch)?

One can load drivers into the kernel at run-time on demand.  Using a music
program can result in a Midi driver being loaded into the kernel . . .

        The Mac's control panel is a great step forward.

The Macintosh control panel and its INIT system is a huge hack.

gillies@m.cs.uiuc.edu (11/24/90)

A good example of customizability of the mac is the "Blast" INIT.
When you hit command-shift-8, the mouse turns into cross hairs.  Then
you can click on a window, and blow a hole in the window data
structure.  This allows you to dig down through windows to get at the
desktop.  It's not the most useful tool, but it is an impressive
demonstration.  When you close & reopen the window, the hole goes away.

gillies@m.cs.uiuc.edu (11/25/90)

My point is this.  It's not a personal computer if you cannot
personalize it.  It's not useful if some things are cast in stone.  I
don't care if NeXT breaks my custom code from release to release, what
I DO CARE is if NeXT software and system design limit me in what can
be done with my personal computer.

I want to be able to do research with my computer.  What if I want to
benchmark a new LISP program that mucks with virtual memory to do
garbage collection?  I know Mach (thank heavens) gives the user access
to virtual memory primitives, and this is good.  But what does the mach
and NeXTstep software limit the user from doing unnecessarily?  You
can say, "The User Should Not Do That To His System for Reason Blah
Blah Blah", but there are always users with the sophistication and the
canny to do clever things with their machine and get away with them, as
long as the system software is not overly limited.


A good paper to read on this subject is "End to End Arguments in
System Design" by Jerome Saltzer in ACM Transactions on Computer
Systems, 1982.  

curt@cynic.wimsey.bc.ca (Curt Sampson) (11/25/90)

gillies@m.cs.uiuc.edu writes:

> What are the main limitations of the software and hardware for NeXT
> machines?  I suspect there is a serious limitation in the malleability
> of the user interface and UNIX.  For instance, you can do the
> following to a mac:
> [large list of items deleted]
>
> Can I do all these things without hacking the NeXT kernel?  That seems
> to be the big disadvantage about most UNIX systems I've seen -- not
> enough malleability without recompiling the kernel. Does the NeXT have
> the concept of an "INIT" (user-installed boot-time patch)?  The mac
> has some dumb limitations:
> 
> 3.  Zillions of special-cases must be made to get software to work
>     (does this machine have color quickdraw?  Are we running
>      multifinder?  Are their multiple monitors?  How much memory
>      can we work with?  etc. etc. etc.)
> 6.  Broken printing architecture

I think you've just listed some of the reasons why you would *not*
want to do some of those things you described in your first list on
the NeXT.  Keep in mind that the NeXT is a multitasking system.  If
you use a device driver, you're safe.  What if you just skip right by
it and some other program tries to do the same?  What if someone
replaces their 2 MB floppy drive with a 12 MB floppy drive?  What if
I'm using an important floppy and some idiot on another login decides to
run that floppy format that goes right by the device driver, thus
killing my disk?

The Mac, as nice as some of its features are, seems to be one big hack
in the systems software department.  I still wish that my fax software
could run reliably in the background without crashing occasionally.

cjs

curt@cynic.UUCP                  | "The unconscious self is the real genius.
curt@cynic.wimsey.bc.ca          |  Your breathing goes wrong the minute your
{uunet|ubc-cs}!van-bc!cynic!curt |  conscious self meddles with it."  --GBS

eps@toaster.SFSU.EDU (Eric P. Scott) (11/25/90)

In article <61300051@m.cs.uiuc.edu> gillies@m.cs.uiuc.edu writes:
>My point is this.  It's not a personal computer if you cannot
>personalize it.

No, it's a "personal computer" if only one person can use it.
It's this LIMITATION that makes PCs so unsuitable for places
like public computing laboratories.

>                 It's not useful if some things are cast in stone.  I
>don't care if NeXT breaks my custom code from release to release, what
>I DO CARE is if NeXT software and system design limit me in what can
>be done with my personal computer.

EVERY system has limitations--you have to draw the line
somewhere.  You could argue that the NeXT will never be as
flexible as a VAX from ten years ago, because the VAX gave you a
writeable control store that let you insert custom microcode to
extend the architecture.

How much rope do you need?  If the NeXT software doesn't do what
you want, I'm sure someone (maybe you) will come up with
something that does.  There are a *lot* of ways to tweak the NeXT
software, but I think you really don't understand what you're
dealing with.

If you're asking "why can't the NeXT be more like a Mac?"
THEN JUST GET A MAC ALREADY!!!

					-=EPS=-

bb@reef.cis.ufl.edu (Brian Bartholomew) (11/25/90)

In article <61300047@m.cs.uiuc.edu> gillies@m.cs.uiuc.edu writes:

> A good example of customizability of the mac is the "Blast" INIT.  When
> you hit command-shift-8, the mouse turns into cross hairs.  Then you
> can click on a window, and blow a hole in the window data structure.
> This allows you to dig down through windows to get at the desktop.
> It's not the most useful tool, but it is an impressive demonstration.
> When you close & reopen the window, the hole goes away.

Arrrrgh.  Yet another example of a nasty hack to get around a
fundamentally deficient window manager.  Reasonable implementations of
this functionality that I have seen are all contained within a modular
program entity called the "window manager".  This "window manager"
controls such things as window placements, front/back arrangements,
and window frames.  New functionality is added to this one program in
a clean way, such that applications are not even aware of it, and such
that it works equally well with all applications.  This particular
operation could be generically called "window to back".  I have seen
it made available via a menu pulled down from the window frame, via a
special function key hit while the cursor is within the window, or
even via a single click on the window frame (when the window in
question is already on top of all that might cover it).

Again, I must complain about gross, hacky implementations of stupid
PC-style tricks.  Remember that something as large as a multitasking
windowed workstation should be built from seperate layers of software,
not strung together with spagetti-style, OS-version-specific hacks.

I suppose that "command-shift-8" is one of those immediately-apparent-
to-a-4-year-old key sequences, one that is just "obvious" from the
program design and screen layout, that Mac people are always raving
about.  (no smilie, this is pathetic, not funny)


--
"Any sufficiently advanced technology is indistinguishable from a rigged demo."
-------------------------------------------------------------------------------
Brian Bartholomew	UUCP:       ...gatech!uflorida!mathlab.math.ufl.edu!bb
University of Florida	Internet:   bb@math.ufl.edu

mikel@Apple.COM (Mikel Evins) (11/27/90)

In article <25570@uflorida.cis.ufl.EDU> bb@reef.cis.ufl.edu (Brian Bartholomew) writes:
[ description of "Blast" INIT on the Mac]
>Again, I must complain about gross, hacky implementations of stupid
>PC-style tricks.  Remember that something as large as a multitasking
>windowed workstation should be built from seperate layers of software,
>not strung together with spagetti-style, OS-version-specific hacks.

The point of "Blast" is fun, not utility. It bothers me when people
cop an Attitude about what users Should Do with their machines. It
reminds me of a guy I met who resented the Mandelbrot set because
of all the CPU cycles that have been wasted computing it. I use and
program computers because it's fun! I bought my NeXT because I
intended to have fun with it. I write useful software for a living
because it's a fun way to make my living. Arguments about what
users Should Do carry absolutely no weight with me; users Should
Do what they want to do, and any restrictions on what they can do
just impoverish them. If people really want to create butt-ugly
windows for use in all applications, let them! Hey, it's their 
machine, right? 
  All this said, NeXT provides a smoother means for programmers to
customize interface elements for an application than does Apple. Now,
as for system-wide patches to, for example, change the appearance of all
windows, I don't yet know whether that is possible. I would like to
know, though.