Introduction to GNUstep

From GNUstepWiki
Jump to navigation Jump to search

GNUstep is a free, object-oriented, cross-platform development environment that strives for simplicity and elegance. GNUstep is based on and completely compatible with the OpenStep specification developed by NeXT (now Apple Computer Inc.) as well as implementing many extensions included in Mac OS X/Cocoa.

GNUstep is... object-oriented tool development kit

The first two packages (GNUstep-make and GNUstep-base) that make up the core libraries contain a complete system for writing non-graphic tools in Objective-C. The make package allows you to setup a simple and powerful system for building, installing and packaging your tools. The base package includes all the classes necessary for writing an incredible array of tools, from wrappers for system tools to tools for communicating with web and other types of servers.

...a graphical development kit

The core libraries contain classes for developing a complete graphical application for almost any purpose. Along with our object-oriented, graphical development applications, ProjectCenter and Gorm it's simple to write very complex commercial applications in weeks or months, rather than years (or often, never) in the case of other development environments.

...a desktop

Many GNUstep applications have been written to provide a powerful user experience for working on your computer. These include our workspace manager, GWorkspace, and mail client, GNUMail. GNUstep does NOT have a window manager. You can use any window manager you want, although we recommend that you use WindowMaker for a better experience -- the WindowMaker project, however, is not associated with GNUstep. Many other applications that are useful for a desktop are not contained on this web site, nor are they controlled by the GNUstep project - there are too many ideas about what a desktop should look like that we have not made up our minds about which one to endorse yet.

Here are some current ones:

GNUstep is not a window manager

GNUstep is not a window manager. And the libraries are not used by WindowMaker at present, although WindowMaker shares a similar look.

At no stage will you ever 'run' GNUstep - you will run applications and tools and will make use of its services. At some point you may well find packages distributed as 'GNUstep' systems in the way that you get 'GNU/Linux' systems packaged today. Look at the GNUstep Live CD for example.

Additions to OpenStep

In addition to the OpenStep API, GNUstep also implements many additional classes and methods, some from the Cocoa API for the sake of compatibility. GNUstep is written in the object-oriented language Objective-C, a superset of C which adds object-orientation to C. Objective-C is very simple, yet very powerful. GNUstep also includes bindings to other languages such as Java (JIGS) and Ruby (RIGS).

For more information, see the following testimonial from a GNUstep user.

Why should I learn Objective-C?

Objective-C gives you the full power of a true object-oriented language with exactly one syntax addition to C and a dozen additional keywords. Its power lies in its elegance and simplicity. Don't like Objective-C? You can use Java (See JIGS) or Ruby (See RIGS).

Why should I use GNUstep?

GNUstep provides an excellent, mature framework for writing good applications. There's good anecdotal evidence that OpenStep developers have written very complex commercial applications in weeks or months, rather than years (or often, never) in the case of other development environments. Using the visual interface modeling application, you can construct a decent user interface skeleton in a day or so with no coding.

Why not just use GNOME/KDE, X11, and C/C++?

GNUstep works with GNOME, KDE (See, as well as many X11-based window managers. GNUstep runs on top of X11. You can still do programming in C (since Objective-C is a pure superset of C), and GCC version 4.1 and newer even supports the mixing of C++ and Objective-C. GNUstep frees you to develop cross-platform applications without the work of developing an OS independent framework from scratch. It gives you lots of functionality, including Font Panels, Unicode strings, and even Distributed Objects.

What development tools can I use?

See page Development tools for this.


The GNUstep libraries are covered under the GNU Lesser (Library) Public License. This generally means you can use these libraries in any program (even non-free programs) without affecting the license of your program or any other libraries GNUstep is linked with. If you distribute the GNUstep libraries along with your program, you must make the improvements you have made to the GNUstep libraries freely available. The stand-alone tools in GNUstep are under the standard GPL.

With GNUstep-Base, we recommend the use of the ffcall libraries, which provides stack frame handling for NSInvocation and NSConnection. "Ffcall is under GNU GPL. As a special exception, if used in GNUstep or in derivate works of GNUstep, the included parts of ffcall are under GNU LGPL" (Text in quotes provided by the author of ffcall).


The GNUstep logo has been designed by Ayis Theseas Pyrros. It stands for the "yin-yang" of objects taking you "a couple of steps" further.