Make or Buy?

Lighthouse Design's Diagram! 2, Concurrence, and TaskMaster are among the best NEXT-STEP applications on the market. Each shares a core set of object classes, which the company has now bundled in a commercial package called the Foundation Classes. We found them to be solid and bug free, though unspectacular in implementation.

The idea is that corporate sites can use the Foundation Classes to shave precious weeks off hectic development schedules. NEXT-STEP consultants can cost upwards of $1000 a day, making these classes which could probably be implemented by a competent programmer in just under a month, but without necessary real-world testing a real bargain. But many sites with in-house development staffs, and many third-party developers, may find it difficult to justify Lighthouse's pricing structure.

Foundation Classes consist of 15 different classes: a string class, an error-reporting class, and a set of collection classes. It's a total of roughly 27,000 lines of source code that is surprisingly well commented, considering that these classes were originally developed for internal use. They're also extremely well tested by more than 10,000 users owing to their use in the company's flagship products.

FCString is a general-purpose string-manipulation class that automatically handles issues such as memory allocation for the programmer. This can be a real time saver, since tracking string overruns is the bane of many C programmers. Unfortunately, Lighthouse didn't implement many of the string routines with particularly efficient algorithms. For example, rather than using the Boyer-Moore string-search algorithm, Lighthouse's indexOfString: method merely steps through the string being searched character by character.

FCError is a class for registering and reporting error conditions. Errors can be signaled by raised conditions, sending messages to delegates, displaying panels for the user, or writing messages into a log file. Unfortunately, each instance of the FCError class can only an-nounce itself with a single action there is no way, for example, to log errors that display user-alert panels.

The remaining classes implement a variety of Objective-C containers for holding sets, lists, queues, and stacks of objects. These classes are remarkably similar to NEXT-STEP's List and HashTable classes in fact, Lighthouse uses List and HashTable as the basis for the FC-Collection hierarchy. Unlike NeXT's classes, the Lighthouse versions maintain certain relationships be-tween the different classes: An FCSortedCollection allows the programmer to put only one copy of each object into the collection, and they are always kept in sorted order. As with FCString, few of the algorithms are implemented with an eye towards efficiency.

That's as far as the Foundation Classes go, leaving the entire collection somewhat limited. There are no powerful tools here for helping programmers solve old problems in new ways, no artful implementations of complicated algorithms that are easy to get wrong, and no general framework to speed application development.

Still, using Foundation Classes could save a company a modest bundle in development time and a bigger bundle in quality assurance. The pricing is unusually high for NEXTSTEP objects. This is either the first example of a new pricing paradigm for objects or an experiment that the market will reject.

by Simson L. Garfinkel

Foundation Classes 1.0

3 Cubes

A limited collection of 15 objects that might be helpful for large corporate developers. It lacks technical finesse but makes up for it in bug-free implementation and extensive real-world testing.

$4995 object code for five developers; $9995 source code

Lighthouse Design, 2929 Campus Dr. #250, San Mateo, CA 94403.

415/570-7736; 800-366-2279.