While it's true that NeXTSTEP is a marvelous development environment, it's a fantasy to think that the average NeXT user is going to crank out beautiful custom apps in Objective-C. Users without programming experience must have even more accessible tools for building information-based training programs and presentations. Now, Xanthus International offers to fill that gap with its "multipurpose multimedia programming tool," CraftMan.
CraftMan is roughly comparable to HyperCard on the Macintosh, the granddaddy of personal programming tools. HyperCard, which lets end users construct easy-to-navigate "stacks" of related information, has long been mislabeled by Apple as an object-oriented development environment. With CraftMan, the NeXT community gets an authoring system combining the power of true object-oriented programming and the accessibility of HyperCard. A beta version was used for this review.
The program is aimed at users who need to create information-based applications containing animation, sound, graphics, and video. It is also useful for creating prototypes and interfaces to other programs. (As CraftMan allows access to UNIX commands, it would be a perfect tool for putting friendly interfaces on that huge library of great UNIX utilities.)
CraftMan could be described as Interface Builder for the rest of us. Like IB, it provides a palette of interface elements: menus, windows, buttons, and sliders that can be arranged any way you like. It also offers a rich scripting language, CraftScript, which permits programming of more complex functions. Once your project is done, you can use CraftMan's run-time module, which lets the prototype emulate a finished NeXT application, complete with custom icon.
Each of the CraftMan objects is preprogrammed with both a certain look and built-in functionality. The objects are divided into classes, each of which has methods and properties associated with it. Methods are the actions that an object is capable of performing. For example, a slide-show object would have a method to move to the next slide in the series and wait for the message next_slide to invoke that meth-od. The properties refer to the char- acteristics of a given object, such as its size, location, or title. CraftMan supports all the major standard interface elements used by NeXT programs.
Instead of HyperCard-style stacks, CraftMan allows you to create flexible interfaces that closely resemble other NeXT programs. You define the look of your program by dragging items from a customizable palette of tools. You then wire up the objects to perform specific actions by dragging a connection between the object and any target on the screen. After the connection is made, the target object presents a list of all the messages that your original object can send and that the target understands. It's a wonderful, clean way of understanding the relationship between objects.
One advantage of CraftMan's object orientation is that you can create your own subclasses of objects. If you decide you want the buttons in your project all to share certain additional abilities, simply define a button with those features as a new subclass to be reused whenever you need.
When a more complicated script is required, CraftScript allows messages to be sent to as many other objects as needed. For example, if you want a single button to move one slide show forward and a second slide show in the opposite direction, you might write the following CraftScript script:
{slideshow slideshowone}:next_slide
{slideshow slideshowtwo}:previous_slide
While I'm no expert in Objective-C, I found CraftScript to be approachable and easy to use. My one complaint is the constant need to refer to the names of the objects you are working with while scripting. To deal with this, you can either write down all the names of the objects before you start a particular script or quit the script in the middle, inspect the target object to find out its name, and then reopen the script you were working on, a cumbersome process likely to lead to errors in the code. The program should provide a more direct way of returning an object's name. Perhaps holding down certain keys and clicking on an object could put its name in the script or on the pasteboard.
Though impressive, CraftMan shows room for improvement in other areas as well. The program allows you to import bit-mapped graphics, but it doesn't provide any way to edit those graphics from within the program. It also doesn't provide an easy way to hook up an external program to edit the graphics. Also, the method used to bring graphics into the project seems clumsy. You must first select the graphic from a scrolling list and then drag what seems to be the preview into the main window.
Another problem is the distinction Xanthus makes between button-class objects and graphic-class objects. My experience with multimedia and computer-based training projects has taught me that randomly shaped graphics are used as buttons more frequently than actual buttons. Although it is possible for users to create a special subclass of graphics with button abilities, novices will probably feel lost.
The strengths and limitations of an authoring system usually emerge from a project of several months' duration (one that your job depends on). Despite this concern and my minor complaints, I liked Xanthus CraftMan. The product felt good and very usable.
It is not another HyperCard clone, so it lacks compatibility with projects users may have already developed on other platforms. But by starting fresh, Xanthus was able to improve on some of the faults of HyperCard, resulting in a rich program that people without experience in Objective-C can use to create programs with a full NeXT interface and a surprising amount of functionality.
Ben Calica, a contributing editor, was formerly product manager for SuperCard, a Macintosh authoring system. His current company, Tools for the Mind, provides multimedia project management.
Solid authoring system, roughly comparable to Macintosh HyperCard, that brings programming tools into the hands of mere mortals. As a mini�Interface Builder, it offers great functionality and prototyping capabilities but needs to improve on returning objects' names while scripting, object-class distinctions, and graphics handling.
$1500 single user
$195 special student offer
Xanthus International AB, Kungstensgatan 14, S-113 57 Stockholm, Sweden.
46/8/612.89.95, 46/8/612.89.96 fax.