The Foundation Kit
The core of OpenStep is the Foundation Kit. The GNUstep implementation of this is GNUstep Base. It’s used by all OpenStep programs, with or without GUIs.
At the simplest level are classes like NSString for representing simple data types. These are used everywhere in the OpenStep specification, and are often quite powerful. The NSString class, for example, contains a printf-analogue with some extensions for supporting object types.
Beyond this, the Foundation Kit is also responsible for a number of classes supporting distributed objects. These classes allow a program to be distributed among different processes, including ones on different machines. Java provides a similar facility in the form of RMI, but requires more glue code.
No toolkit would be complete without a way of storing user information. OpenStep provides the user defaults system for this purpose. This system is what the Windows registry would have been, if it had been designed with the UNIX philosophy. There is a standard way of storing properties, which are serialized forms of the standard OpenStep container classes (dictionaries, arrays, etc.). Unlike the registry, each application’s properties are stored in a standard property list file, and can easily be edited with a text editor (or the command-line defaults program).