GNUStep: Application Development The NeXT Way
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.
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
Eklektix, Inc. all rights
Linux ® is a registered trademark of Linus Torvalds