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 ------------------------------------------------------------------------------