HOME

TheInfoList



OR:

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