Introduction to GNUstep

GNUstep is a free, object-oriented, cross-platform development environment that strives for simplicity and elegance. GNUstep is based on and strives to be completely compatible with the Cocoa specification developed by Apple (Previously NeXT Software, Inc.). object-oriented tool development kit

GNUstep-make and GNUstep-base 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.

...and 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.

...and a cross platform development environment

GNUstep, currently, allows you to build applications on GNU/Linux, Windows, FreeBSD, OpenBSD, NetBSD, Solaris and any POSIX compliant UNIX based operating system. Your application can be as portable as GNUstep itself.

...a desktop

The GNUstep project supplies several official default applications, such as a Workspace Manager and a Preferences application, but GNUstep project itself is not a desktop project.

Several GNUstep applications have been written to provide a powerful user experience for working on your computer. Most of these are they provided by the GNUstep project.
There are separate projects for providing a complete Desktop experience with GNUstep by extending and leveraging on it, each one has different philosophies.
You may want to look at:

The GNUstep project does not provide a window manager; you can use any window manager you want, although we recommend that you use WindowMaker for a better experience. The various desktop projects may offer their own window manager though. operating system clone

GNUstep is not an operating system clone. It is not a distribution of GNU/Linux, FreeBSD or any other operating system now, nor will it be in the future. Although other people may decide to package an operating system with GNUstep as a front end.

...a window manager

GNUstep is not a window manager. And the libraries are not used by WindowMaker at present (it uses WINGs), although WindowMaker shares a similar.

Remember: as WINGs means WINGs is not GNUstep, it is also true that GNUstep is not WindowMaker.
If you like the classic look, the vertical menus, the square tiles, you can use GNUstep with WindowMaker as window manager: they integrate quite well.

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.

Additions to Cocoa

In addition to the Cocoa API, GNUstep also implements many additional classes and methods. 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.

Why should I use GNUstep?

GNUstep provides an excellent, mature framework for writing good and portable applications. There's good anecdotal evidence that Cocoa 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, 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 will eventually support the mixing of C++ and Objective-C code in the SAME file. 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.


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.

GNUstep-Base depends on the the libffi or ffcall libraries, which provide stack frame handling for NSInvocation and NSConnection. Libffi is the recommended default option for most platforms, the ffcall library contains a special exception for GNUstep: "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.