Summary GNUstep is a free software implementation of the Cocoa (formerly OpenStep) Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project.
GNUstep features a cross-platform, object-oriented
IDE. Apart from the default Objective-C interface, GNUstep also has bindings for Java, Ruby,  GNU Guile and Scheme. The GNUstep developers track some additions to Apple's  Cocoa to remain compatible. The roots of the GNUstep application interface are the same as the roots of Cocoa: NeXTSTEP and OpenStep. GNUstep thus predates Cocoa, which emerged when Apple acquired NeXT's technology and incorporated it into the development of the original Mac OS X, while GNUstep was initially an effort by GNU developers to replicate the technically ambitious NeXTSTEP's programmer-friendly features.
GNUstep began when
Paul Kunz and others at Stanford Linear Accelerator Center wanted to port HippoDraw from NeXTSTEP to another platform. Instead of rewriting HippoDraw from scratch and reusing only the application design, they decided to rewrite the NeXTSTEP object layer on which the application depended. This was the first version of libobjcX. It enabled them to port HippoDraw to Unix systems running the X Window System without changing a single line of their application source. After the OpenStep specification was released to the public in 1994, they decided to write a new objcX which would adhere to the new APIs. The software would become known as "GNUstep".  Software architecture Edit
GNUstep contains a set of
graphical control elements written in the Objective-C programming language.
graphical user interface (GUI) of GNUMail is composed of graphics control elements. GNUMail has to interact with the windowing system, e.g. X11 or Wayland, and its graphical user interface has to be rendered. GNUstep's backend provides a small set of functions used by the user interface library to interface to the actual windowing system. It also has a rendering engine which emulates common Postscript functions. The package gnustep-back provides the following backends:
cairo – default backend using the
Cairo 2D graphics library. winlib – default backend on Microsoft Windows systems. Cairo and
Windows API variants. art – old (deprecated) backend on unix-like systems. Uses the vector-based PostScriptlike 2d graphics library
Libart. xlib – old (deprecated) X11 backend.
GNUstep inherits some design principles proposed in OPENSTEP (GNUstep predates Cocoa, but Cocoa is based on OPENSTEP) as well as the
Other interfaces Edit
In addition to the Objective-C interface, some small projects under the GNUstep umbrella implement other APIs from Apple:
The Boron library aims to implement the
Carbon API. It is very incomplete.  The CoreBase library is designed to be compatible with
Core Foundation. It is not complete enough to for the Base (Foundation Kit) component to simply be a wrapper around it.  The QuartzCore library implements Core Animation APIs. The Opal library implements  Quartz 2D.
As of February 2020
, there are no projects that builds the
Swift programming language against the GNUstep Objective-C environment.
Here are some examples of applications written for or ported to GNUstep.
Written from scratch Edit Addresses, an address/
contacts manager Étoilé, a
GNUMail, an e-mail client GNUstep Database Library 2, an
Enterprise Objects Framework clone
GNUstepWeb, an application server compatible with WebObjects 4.x
Gorm, an interface builder GWorkspace, a workspace and file manager
RSS feed reader
Oolite, a clone of , a space simulation game with trading components Elite PRICE, imaging application
Project Builder or Xcode equivalent. TalkSoup, an
Terminal Zipper, a file archiver tool
Ported from NeXTSTEP, OPENSTEP, or macOS Edit
Forks of GNUstep Edit Class capabilities Edit
Foundation Kit Edit
Foundation Kit provides basic classes such as wrapper classes and data structure classes.
collections (arrays, sets, dictionaries) and enumerators
advanced date manipulation
distributed objects and inter-process communication URL handling
notifications (and distributed notifications)
Application Kit Edit
Application Kit provides classes oriented around graphical user interface capabilities.
user interface elements (table views, browsers, matrices, scroll views)
WYSIWYG, postscript-like graphics, bezier paths, image handling with multiple representations, graphical contexts) color management (calibrated vs. device colors;
CMYK, RGB, HSB, gray and named color representations; alpha transparency) text system features:
rich text format, text attachments, layout manager, typesetter, rules, paragraph styles, font management, spelling document management
printing features: print operations, print panel and page layout
pasteboard (aka clip board) services
spell checker workspace bindings for applications
drag and drop operations services sharing among applications See also Edit
Darling (software), a compatibility layer that relies on GNUstep
GNUstep Renaissance, framework for XML description of portable GNUstep/Mac OS X user interfaces
Miller Columns, the method of file tree browsing the GWorkspace File Viewer uses
Property list, often used file format to store user settings
StepTalk, Scripting framework Window Maker, a window manager designed to emulate the NeXT GUI as part of the wider GNUstep project References Edit
^ Ported from
NeXTSTEP. Recent builds, when built with libobjc2, can use a newer version ported from Mac OS X Snow Leopard
"GNUstep Developer Tools - RIGS". www.gnustep.org . Retrieved . 10 April 2018
^ GScheme Archived 2005-12-18 at the
"GNUstep History". gnustep.made-it.com . Retrieved . 10 April 2018
"gnustep/libs-boron: Boron is the atom that comes before carbon". GitHub. GNUstep. 23 March 2019.
"gnustep/libs-corebase". GNUstep. 19 November 2019.
"gnustep/libs-quartzcore". GNUstep. 11 December 2019.
"Category:Applications - GNUstepWiki". wiki.gnustep.org . Retrieved . 10 April 2018
"GNUstep Objective-C Runtime 2.0". GitHub. Note: Microsoft's WinObjC project contains a friendly fork of this library that includes a work around for the incremental linking issue. External links Edit
Wikimedia Commons has media related to GNUstep.
GNUstep.org project homepage
GNUstep Applications and Developer Tutorials
The GNUstep Application Project
A 2003 interview with GNUstep developer Nicola Pero Archived 2007-01-07 at the
Wayback Machine FLOSS Weekly Interview with Gregory Casamento and Riccardo Mottola from GNUstep
GNUstep on Debian, FreeBSD, MacPorts
NEXTSPACE desktop environment, based on GNUstep