[comp.sys.next] BaNG #5 Meeting Summary

declan@portia.Stanford.EDU (Declan McCullagh) (08/21/90)

SUMMARY OF BaNG MEETING #5 / August 15, 1990

Written by Declan McCullagh (declan@portia.stanford.edu)


PHILOSOPHY AND DESIGN OF NeXT'S APPLICATION KIT
William Parkhurst, Original Project Manager for the AppKit, NeXT Inc.

In this talk, Parkhurst gave the audience an intriguing overview of
the general principles used in the design of NeXT's Application Kit.
Parkhurst, an ex-Macintosh software developer, has been extensively
involved in the creation and design of NeXT's object oriented
programming environment since his arrival at NeXT.

The Application Kit, often abbreviated as the AppKit, is a collection
of small programs or "objects" that programmers can access in the
course of writing a NextStep program.  These objects, many
representing user interface features such as windows or buttons, are
instrumental in presenting a consistent graphical interface to the
user.  Besides the coherency of the completed interface, there are
many benefits of adopting this approach to a programming environment,
including the unprecedented ease with which NeXT software can be
developed.

In recognition of this programming technology, NextStep, composed of
the AppKit, the Window Server, Workspace Manager, and Interface
Builder, recently won the prestigious Andrew Fluegelman Award for
innovative software design.

Since the NeXT is the first computer to come standard with this 
kind of programming environment, the team that developed this 
programming medium had to delve into many unexplored regions of 
user interface design and object-oriented programming.  They 
started with these few fundamental rules that their programming 
tools would follow:

[1] Try to do as much as possible for the developer

	This would eliminate a good deal of duplicated effort.  For 
	instance, every application needs an event loop (a sequence of 
	conditional instructions that allow it to respond to what the
	user does with the mouse or keyboard).  Instead of making each
	programmer write one, why not internalize it instead and
	relieve the programmer of the chore of writing code?

[2] If the behavior of a user interface object is variable, let the
    developer decide what it should be.

	By adopting this method of approach, it is easy to give objects 
	(such as buttons, for instance) "default" behaviors, which are
	easy to change to suit the exact needs of the interface.

[3] If the application developer wants to do something unique, the
    programming environment should let him.

	A corollary to this is that it should be very easy to do simple 
	things and possible to do more complex ones.  NeXT's Interface 
	Builder application evidences this philosophy: it is
	simplicity itself to drag buttons from the palette and connect
	them to other objects, and it is also possible to write your
	own custom objects and incorporate them into your application.

[4] The interface should be extensible under Objective-C.

	Fortunately, NeXT's adopted object-oriented programming
	environment was able to meet this goal, too.  If an
	application developer doesn't like the behavior of
	an object, he can subclass it and modify particular parts of
	it to his liking.

At the conceptual beginning of the AppKit, there were a few choices
the designers had to make.  One of the most basic of these was to
decide what language to code the project in.  C, a standard in the
UNIX community, was chosen as a natural place to start.  C++, a
superset of the C language produced by AT&T Bell Labs, was rejected
due to the lack of dynamic binding, a feature that Interface Builder
required, and the lack of standardization as of three or four years
ago when NeXT was considering its use.

Eventually, Objective-C was chosen as the primary language for the
AppKit and licensed from the Stepstone Corporation.  The reasons for
this choice are clear now; in addition to the lack of dynamic binding,
Objective-C code is also syntactically much cleaner than C++ code,
leading to reduced confusion as to what a particular part of a program
actually does.  Also, Objective-C's messaging scheme is much more
straightforward than its counterpart in C++.

The highlight of the evening, though, was when Parkhurst described
certain AppKit features which will be present in the upcoming release
of NextStep v2.0.  A few of them are:

- Delegation will be incorporated into the Objective-C language.

- The compiler can compile C++ and Objective-C code in same file.

	This will be quite well-received in the academic community, 
	for even though Objective-C is arguably cleaner and more
	understandable, C++ seems to be emerging as a standard of
	sorts.

- Much improved linker.

- Performance tuning.

- Better online and printed documentation.

	Instead of the set of three rather large tomes that NeXT ships
	out to developers as part of the preliminary NextStep v1.0
	documentation, the information will now be divided into smaller
	manuals.  Also, almost all blank or missing areas of the
	documentation will be filled.

- Automatic wait cursor.

	NeXT has filed a patent application on this particularly 
	interesting feature.  Now, without the programmer's
	intervention, the system will automatically change the
	normal cursor to a wait cursor whenever it is necessary.

- NXBrowser, NXBrowserCell, and a Digital Librarian-style split view
  class are now public classes.

- Color support as defined by the PostScript imaging model.

- Printing and TIFF enhancements.

	In NextStep v2.0, printing will be more tolerable.  The new
	printer drivers will operate at a lower priority priority,
	reducing the woeful lack of response during the imaging of a 400
	dpi PostScript document.  Also, "TIFF enhancements" means
	that NextStep v2.0 will read more foreign TIFF file formats,
	a very welcome feature for most users.

- A much enhanced Text Object.

	A new version of this object will include rulers, spell checking, 
	much better RTF support, and true accents.  Now it's _really_
	possible to write your own word processor without leaving
	Interface Builder.  Hopefully, the inclusion of accents will spur
	development of foreign language software.

- Dynamically loaded objects in Interface Builder.

- Pop-up Lists in Interface Builder.

Finally, these tantalizing features were left out for possible 
inclusion in a future NeXT system software release:

- Uniform document architecture.

- Shell object.

- Hypertext (hot/cold links).

- Multi-threaded AppKit.


THE DESIGN OF NeXTWORLD
Gordon Haight, Publisher and Jeannine Barnard, Associate Publisher

The next presentation was given by Gordon Haight, industry veteran,
and Jeannine Barnard, who together described the content and style of
the forthcoming magazine NeXTWORLD.  This will be a publication of
IDG, a large international publishing firm which also publishes
magazines such as ComputerWorld, InfoWorld, PC World, and MacWorld.

Although NeXT will be one of NeXTWORLD's largest advertisers, NeXT
will have no financial or editorial control over the magazine.  Most
of the advertising in the first issues of the magazine will be NeXT-
specific.

The first issue, January 1991, should hit the streets in early
December, and a twelve-page marketing piece will be available in late
September.  The first issue is expected to be about 95 pages, with 55
pages of editorial and article text, entirely created on a NeXT.

The "look and feel" of the magazine will be upscale - similar to
Premiere magazine - and make liberal use of black and white
photographs in a very artistic, professional manner.  In contrast to
the black and white design of the rest of the magazine, the
preliminary format for hardware and software reviews could best be
described as looking suspiciously similar to a color version of NeXT's
graphical interface, but eminently readable nevertheless.

Interestingly enough, NeXTWORLD estimates that only 1/4 to 1/3 of its
readers will have NeXT computers.  The magazine calculates that the
rest of its readers will be owners of other popular computer brands
who are interested in NeXT from both a technological and practical
standpoint and may even be interested in eventually purchasing a NeXT
system.

Initially, NeXTWORLD will start out bimonthly, and progress to a
monthly format as demand warrants it.  The list price for a
subscription is $39/year, with an expected discount to approximately
$23/year.

At this point, NeXTWORLD is actively soliciting recommendations for
writers, editorial direction, and content from the NeXT community.
Eventually, the magazine will have an electronic mail address, but at
the moment, they can be reached at the address and phone number listed
at the end of this article.


OVERVIEW

The meeting had a dozen NeXT employees in attendance (out of an
audience of about one hundred), including Jayson Adams and Bryan
Yamamoto, author of Edit.  The detail of William Parkhurst's
description of changes in the AppKit in NextStep v2.0 was quite well
received; it makes the new version of the system software all the more
anticipated.


ANNOUNCEMENTS

The next BaNG meeting will be Wednesday, September 19, at 6 PM.
Additional information will be distributed as it becomes available.

On October 4, there will be a special BaNG meeting, entitled "The NeXT
Wave of Publishing", presented by Bud Tribble, Vice President of
Software Engineering at NeXT, Inc.  The meeting will be held in
Annenberg Auditorium on the Stanford campus.

NeXTWORLD
501 Second Street
San Francisco, CA  94107
(415) 978-3182

BaNG
P.O. Box 8858
Stanford, CA  94309
(415) 780-2877 (Voicemail)
BaNG-request@meta-x.stanford.edu

----

I hope everyone likes the NextStep v2.0 information; according to most
sources, the new release of NeXT's system software should be
excellent by any standards...

-Declan

------------------------------------------------------------------------------
Olympic Technologies / Registered NeXT Developers \ declan@portia.stanford.edu
------------------------------------------------------------------------------