GNUstep is a
free software
Free software, libre software, libreware sometimes known as freedom-respecting software is computer software distributed open-source license, under terms that allow users to run the software for any purpose as well as to study, change, distribut ...
implementation of the
Cocoa (formerly
OpenStep
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
)
Objective-C
Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
frameworks,
widget toolkit, and application development tools for
Unix-like
A Unix-like (sometimes referred to as UN*X, *nix or *NIX) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Uni ...
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
s and
Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
. It is part of the
GNU Project
The GNU Project ( ) is a free software, mass collaboration project announced by Richard Stallman on September 27, 1983. Its goal is to give computer users freedom and control in their use of their computers and Computer hardware, computing dev ...
.
GNUstep features a cross-platform, object-oriented
IDE. Apart from the default
Objective-C
Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
interface, GNUstep also has
bindings for
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
,
Ruby
Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
,
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
NeXTSTEP is a discontinued object-oriented, multitasking operating system based on the Mach kernel and the UNIX-derived BSD. It was developed by NeXT, founded by Steve Jobs, in the late 1980s and early 1990s and was initially used for its ...
and
OpenStep
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
. GNUstep thus predates Cocoa, which emerged when
Apple
An apple is a round, edible fruit produced by an apple tree (''Malus'' spp.). Fruit trees of the orchard or domestic apple (''Malus domestica''), the most widely grown in the genus, are agriculture, cultivated worldwide. The tree originated ...
acquired
NeXT
NeXT, Inc. (later NeXT Computer, Inc. and NeXT Software, Inc.) was an American technology company headquartered in Redwood City, California that specialized in computer workstations for higher education and business markets, and later develope ...
'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.
History
GNUstep began when
Paul Kunz and others at
Stanford Linear Accelerator Center
SLAC National Accelerator Laboratory, originally named the Stanford Linear Accelerator Center,
is a Federally funded research and development centers, federally funded research and development center in Menlo Park, California, Menlo Park, Ca ...
wanted to port
HippoDraw from
NeXTSTEP
NeXTSTEP is a discontinued object-oriented, multitasking operating system based on the Mach kernel and the UNIX-derived BSD. It was developed by NeXT, founded by Steve Jobs, in the late 1980s and early 1990s and was initially used for its ...
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
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X originated as part of Project Athena at Massachusetts Institute of Technology (MIT) in 1984. The X protocol has been at ...
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

The
Foundation Kit provides basic classes such as wrapper classes and data structure classes. The
Application Kit provides classes oriented around
graphical user interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
capabilities. GNUstep contains a set of
graphical control elements written in the Objective-C programming language.
The
graphical user interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
(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
PostScript (PS) is a page description language and dynamically typed, stack-based programming language. It is most commonly used in the electronic publishing and desktop publishing realm, but as a Turing complete programming language, it c ...
functions. The package gnustep-back provides the following backends:
* cairo – default backend using the
Cairo
Cairo ( ; , ) is the Capital city, capital and largest city of Egypt and the Cairo Governorate, being home to more than 10 million people. It is also part of the List of urban agglomerations in Africa, largest urban agglomeration in Africa, L ...
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 PostScript-like 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
Objective-C
Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
language.
*
Model–view–controller paradigm
*
Target–action
*
Drag-and-drop
*
Delegation
*
Message forwarding (through NSInvocation)
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 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.
, there are no projects that build the
Swift programming language against the GNUstep Objective-C environment.
Applications
Here are some examples of applications written for or ported to GNUstep.
Original
* Addresses, an address/
contacts manager
* Étoilé, a
desktop environment
*
GNUMail, an
e-mail client
An email client, email reader or, more formally, message user agent (MUA) or mail user agent is a computer program used to access and manage a user's email.
A web app, web application which provides message management, composition, and receptio ...
* GNUstep Database Library 2, an
Enterprise Objects Framework clone
*
GNUstepWeb, an application server compatible with WebObjects 4.x
*
Gorm
Gorm may refer to:
Computing
* Gorm (computing), a rapid application development tool
* GORM, the "fantastic ORM library" for the Go programming language
* Grails Object-Relational Mapping, see
People
* Gorm the Old (died 958), Danish king
* Gor ...
, a
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
builder application, and part of the developer tools of GNUstep. Gorm is the equivalent of
Interface Builder that was originally found on
NeXTSTEP
NeXTSTEP is a discontinued object-oriented, multitasking operating system based on the Mach kernel and the UNIX-derived BSD. It was developed by NeXT, founded by Steve Jobs, in the late 1980s and early 1990s and was initially used for its ...
, then
OPENSTEP
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
, and finally on
Mac OS X. It supports the old ''.nib'' files as well as its own ''.gorm'' file format.
* GWorkspace, a workspace and
file manager
A file manager or file browser is a computer program that provides a user interface to manage computer files, files and folder (computing), folders. The most common Computer file#Operations, operations performed on files or groups of files incl ...
* Grr, an
RSS feed reader
*
Oolite, a clone of ''
Elite'', a space simulation game with trading components
* PRICE, imaging application
* ProjectCenter, the
Project Builder or
Xcode
Xcode is a suite of developer tools for building apps on Apple devices. It includes an integrated development environment (IDE) of the same name for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. It w ...
equivalent.
* TalkSoup, an
IRC
IRC (Internet Relay Chat) is a text-based chat system for instant messaging. IRC is designed for group communication in discussion forums, called '' channels'', but also allows one-on-one communication via private messages as well as chat ...
client
*
Terminal
* Zipper, a
file archiver
In computing, a file archiver is utility software that combines computer file, files into a single archive file or in less common cases, multiple files.
A minimally designed archiver might concatenate the content of files along with file file n ...
tool
* Window Maker is a
window manager
A window manager is system software that controls the placement and appearance of window (computing), windows within a windowing system in a graphical user interface. Most window managers are designed to help provide a desktop environment. They ...
that emulates
NeXTSTEP
NeXTSTEP is a discontinued object-oriented, multitasking operating system based on the Mach kernel and the UNIX-derived BSD. It was developed by NeXT, founded by Steve Jobs, in the late 1980s and early 1990s and was initially used for its ...
's
GUI as an
OpenStep
OpenStep is an object-oriented application programming interface (API) specification developed by NeXT. It provides a framework for building graphical user interfaces (GUIs) and developing software applications. OpenStep was designed to be plat ...
-compatible environment. It was launched in 1997 as an improved take on
AfterStep's design.
Ported from NeXTSTEP, OPENSTEP, or macOS
* Adun
* BioCocoa
*
Chess
Chess is a board game for two players. It is an abstract strategy game that involves Perfect information, no hidden information and no elements of game of chance, chance. It is played on a square chessboard, board consisting of 64 squares arran ...
* Cenon
* DoomEd
* EdenMath
* Eggplant
*
Emacs
Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
* Fortunate
*
Gomoku
''Gomoku'', also called ''five in a row'', is an Abstract strategy game, abstract strategy board game. It is traditionally played with Go (game), Go pieces (black and white stones) on a 15×15 Go board while in the past a 19×19 board was standa ...
* NeXTGO
* PikoPixel
*
TextEdit
* TimeMon
Forks of GNUstep
*
Universal Windows Platform, which includes a
WinObjC suite consisting of various parts of GNUstep and
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
's own implementations of things like the
Cocoa Touch
UIKit is an application development environment and graphical user interface toolkit from Apple Inc. used to build apps for the iOS, iPadOS, watchOS, tvOS, and visionOS operating systems.
UIKit provides an abstraction layer of iOS, the ...
API.
See also
*
Darling (software), a compatibility layer that relies on GNUstep
*
GNUstep fat bundle
*
GNUstep Renaissance, framework for XML description of portable GNUstep/Mac OS X
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
s
*
Miller Columns, the method of file tree browsing the GWorkspace File Viewer uses
*
Property list, often-used file format to store user settings
*
StepTalk
GNUstep is a free software implementation of the Cocoa (API), Cocoa (formerly OpenStep) Objective-C Software framework, frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is p ...
, scripting framework
References
External links
*
GNUstep Application Project
FLOSS Weekly Interview with Gregory Casamento and Riccardo Mottola from GNUstep
{{DEFAULTSORT:Gnustep
Compatibility layers
Cross-platform free software
Free software programmed in Objective-C
GNU Project software
NeXT
Software that uses Cairo (graphics)
Widget toolkits
X Window System