[LWN Logo]
[LWN Feature]
Weekly Edition
Daily updates
Events Calendar
Book reviews
Penguin Gallery

About LWN.net

GNUStep: Application Development The NeXT Way

June 13, 2001
Michael J. Hammel
GNUStep, the alternative desktop environment to the more widely known GNOME and KDE environments, is a project born out of the desire by various developers to continue what they felt was the best application development environment around: NeXTStep, which many developers still feel provides a better user interface design model than the Windows or Motif environments. GNUStep was started in 1990 when Steve Jobs NeXT Computer was still developing hardware and software platforms. When that company began to drop the hardware side of the business, NeXT came out with an open standard which they called OpenStep based on their NeXTStep API. Along with the new Mac OS X, the GNUStep environment is based on that open standard.

Currently GNUStep is mostly a development environment with little in the way of graphical applications. It consists of a set of tools and libraries for creating applications, both command line and graphically oriented. In a recent interview with LWN.net, Adam Fedor, Chief Maintainer for GNUStep for the past 4 or 5 years, said that GNUStep isn't really all that different from GNOME or KDE.

The design isn't fundamentally different from GNOME or KDE. What is fundamentally different was that it was thought out ahead of time and used, especially commercially by Apple, as a robust environment. There is a lot of anecdotal evidence that this framework allows development of applications much faster than any other development environment.

By day Adam works as optical engineer who designs holograms. While in college he started writing software to develop holograms and decided to use a sort of Next/OpenStep model for graphics design, and that lead to his work on GNUStep. But graphics aren't what people use GNUStep for, at least at the present time. The current GNUStep tools are more command line oriented currently. Companies are actually using the GNUStep libraries as application servers for databases. The reason is simple: the most stable and polished aspect of GNUStep is Launchpad, a set of tools for building non-graphical, network and command line oriented applications. Launchpad includes a set of tools for building applications for the GNUStep/OpenStep environment. These include the GNUStep Make package for helping design the build environment, GNUStep Base which provides the basic Objective-C classes necessary for cross platform deployment, GNUStep Guile for adding Guile scripting to GNUStep objects and GNUStep JIGS which allows sharing objects between Java and GNUStep applications. Adam describes the Make and Base packages in more detail.

GNUStep Make is a system of scripts that allows you to create a simple Makefile which in turn allows you to compile, install and even distribute in RPM format the package you're building. This package hasn't changed much since it has been very stable for some time. It's not based on autoconf but rather on a system that predates autoconf.

GNUStep Base contains the basic classes and tools you would need for any application: Unicode strings, dictionaries, thread support, localization and so forth. All the basic non-GUI type of features.

Two other packages, which Adam refers to as the front and back end packages, work together to provide a GUI system.

The front end package is display system independent, meaning it doesn't care if you use X or the Mac to display things, and it provides all the basic GUI elements an application might need: scroll bars, buttons, and so forth. The front end package uses the backend package - currently one based on X and one based on display Postscript - to actually get these items on the displayed on the screen.

Yet while Launchpad is stable, it isn't feature rich. For example, print services are not well supported at this time. Fortunately, GNUStep is maturing fast enough that graphical applications have started to show up. These include a Mail tool, a project manager, and a dictionary program, as well as various smaller applications such as the calculator, finger and tic-tac-toe applications.

As Fedor puts it, GNUStep is mostly a labor of love, by people who wanted to use an OpenStep environment (along with a little help from a number of companies, including Brainstorm, which employs two of the lead developers of the GNUStep project). However, the GNUStep team does try to advertise to Mac OS X developers as a way of getting their applications onto other platforms. In fact, GNUStep is actually the same API as Mac's OS X. A program written for OS X would require only a few changes to run with GNUStep. While no OS X applications have been ported that he knows of, older NeXT applications have. One example is the MusicKit/SoundKit for building music, sound, signal processing, and MIDI applications.

Mac OS X interoperability is a given, but what about with GNOME/KDE? Fedor says that CORBA support is on their list but there just isn't anyone available to work on it. Most interoperability right now is based on standard X components for drag and drop and cut and paste. In the long term they hope to be able to interoperate better with both GNOME and KDE.

GNUStep Leadership is ad-hoc, with Adam and a few other developers deciding what needs to be done and when it should be worked on. They have a loose schedule to make major releases every 6 months, with plans in place for the next 2 or 3 releases out. Adam says that the core team consists of about 4 or 5 major developers plus a set of regular patch providers. But to him, the best thing these days are the applications.

The cool thing about it now is we are actually having people developing applications on their own. The Mail application is one of these.

For developers, getting started is a bit easier than with GNOME or KDE simply due to the lack of software dependencies. Says Fedor, "There aren't really any dependencies except maybe ffcall, which is used for distributed object passing. Links to all the software necessary are available from the download site." They development team is currently working towards another release which they hope will be out sometime in the next two weeks. They hope to also introduce the first release of their graphical interface builder, Gorm.

GNUStep is available in RPM's directly from the development team and while they don't do Debian formatted installation packages themselves, they do know someone who generates .debs for them. GNUStep isn't quite ready for the average Joe Desktop user just yet, but as a development platform it offers great potential. As with many open source projects, its success is just a matter time.

Eklektix, Inc. Linux powered! Copyright 2002 Eklektix, Inc. all rights reserved.
Linux ® is a registered trademark of Linus Torvalds