GNUstep
   HOME

TheInfoList



OR:

GNUstep is a
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, n ...
implementation of the
Cocoa Cocoa may refer to: Chocolate * Chocolate * ''Theobroma cacao'', the cocoa tree * Cocoa bean, seed of ''Theobroma cacao'' * Chocolate liquor, or cocoa liquor, pure, liquid chocolate extracted from the cocoa bean, including both cocoa butter an ...
(formerly
OpenStep OpenStep is a defunct object-oriented application programming interface (API) specification for a legacy object-oriented operating system, with the basic goal of offering a NeXTSTEP-like environment on non-NeXTSTEP operating systems. OpenStep wa ...
) Objective-C
frameworks A framework is a generic term commonly referring to an essential supporting structure which other things are built on top of. Framework may refer to: Computing * Application framework, used to implement the structure of an application for an op ...
, widget toolkit, and application development tools for
Unix-like A Unix-like (sometimes referred to as UN*X 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 Unix-li ...
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s and
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
. 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 computing devices by collabor ...
. GNUstep features a cross-platform, object-oriented IDE. Apart from the default Objective-C interface, GNUstep also has bindings for
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
,
Ruby A 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 ...
, GNU Guile and
Scheme A scheme is a systematic plan for the implementation of a certain idea. Scheme or schemer may refer to: Arts and entertainment * ''The Scheme'' (TV series), a BBC Scotland documentary series * The Scheme (band), an English pop band * ''The Schem ...
. The GNUstep developers track some additions to Apple's
Cocoa Cocoa may refer to: Chocolate * Chocolate * ''Theobroma cacao'', the cocoa tree * Cocoa bean, seed of ''Theobroma cacao'' * Chocolate liquor, or cocoa liquor, pure, liquid chocolate extracted from the cocoa bean, including both cocoa butter an ...
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 Computer in the late 1980s and early 1990s and was initially used for its range of propri ...
and
OpenStep OpenStep is a defunct object-oriented application programming interface (API) specification for a legacy object-oriented operating system, with the basic goal of offering a NeXTSTEP-like environment on non-NeXTSTEP operating systems. OpenStep wa ...
. GNUstep thus predates Cocoa, which emerged when
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple trees are cultivated worldwide and are the most widely grown species in the genus '' Malus''. The tree originated in Central Asia, where its wild ancest ...
acquired
NeXT Next may refer to: Arts and entertainment Film * ''Next'' (1990 film), an animated short about William Shakespeare * ''Next'' (2007 film), a sci-fi film starring Nicolas Cage * '' Next: A Primer on Urban Painting'', a 2005 documentary film Lit ...
's technology and incorporated it into the development of the original
Mac OS X macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lap ...
, 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 United States Department of Energy National Laboratory operated by Stanford University under the programmatic direction of the U.S. Departme ...
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 Computer in the late 1980s and early 1990s and was initially used for its range of propri ...
to another platform. Instead of rewriting HippoDraw from scratch and reusing only the application design, they decided to rewrite the NeXTSTEP
object Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matter * Goal, an ...
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 provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting wi ...
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


Rendering

GNUstep contains a set of
graphical control element A graphical widget (also graphical control element or control) in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through dir ...
s written in the Objective-C programming language. The
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, ins ...
(GUI) of
GNUMail GNUMail is a free and open-source, cross-platform e-mail client based on GNUstep and Cocoa. It is the official mail client of GNUstep and is also used in Étoilé. It was inspired by NeXTMail ( NeXT's Mail.app), the predecessor of Apple Mail ...
is composed of graphics control elements. GNUMail has to interact with the
windowing system In computing, a windowing system (or window system) is software that manages separately different parts of display screens. It is a type of graphical user interface (GUI) which implements the WIMP ( windows, icons, menus, pointer) paradigm f ...
, 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 In computing, a windowing system (or window system) is software that manages separately different parts of display screens. It is a type of graphical user interface (GUI) which implements the WIMP ( windows, icons, menus, pointer) paradigm f ...
. It also has a
rendering engine Rendering or image synthesis is the process of generating a photorealistic or non-photorealistic image from a 2D or 3D model by means of a computer program. The resulting image is referred to as the render. Multiple models can be defined ...
which emulates common
Postscript PostScript (PS) is a page description language in the electronic publishing and desktop publishing realm. It is a dynamically typed, concatenative programming language. It was created at Adobe Systems by John Warnock, Charles Geschke, Do ...
functions. The package gnustep-back provides the following backends: * cairo – default backend using the
Cairo Cairo ( ; ar, القاهرة, al-Qāhirah, ) is the capital of Egypt and its largest city, home to 10 million people. It is also part of the largest urban agglomeration in Africa, the Arab world and the Middle East: The Greater Cairo metr ...
2D graphics library. * winlib – default backend on Microsoft Windows systems. Cairo and
Windows API The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations th ...
variants. * art – old (deprecated) backend on unix-like systems. Uses the vector-based PostScriptlike 2d graphics library
Libart Libart is a free software graphics library of functions for 2D graphics supporting a superset of the PostScript imaging model. Libart was designed to be integrated with graphics, artwork, and illustration programs. It is written in optimized C and ...
. * xlib – old (deprecated) X11 backend.


Paradigms

GNUstep inherits some design principles proposed in OPENSTEP (GNUstep predates Cocoa, but Cocoa is based on OPENSTEP) as well as the Objective-C language. *
Model–view–controller Model–view–controller (MVC) is a software architectural pattern commonly used for developing user interfaces that divide the related program logic into three interconnected elements. This is done to separate internal representations of info ...
paradigm * Target–action * Drag-and-drop *
Delegation Delegation is the assignment of authority to another person (normally from a manager to a subordinate) to carry out specific activities. It is the process of distributing and entrusting work to another person,Schermerhorn, J., Davidson, P., Poole ...
* Message forwarding (through NSInvocation)


Other interfaces

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 Core Foundation (also called CF) is a C application programming interface (API) written by Apple for its operating systems, and is a mix of low-level routines and wrapper functions. Most Core Foundation routines follow a certain naming conventio ...
. 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 Quartz 2D is the native two-dimensional graphics rendering API for macOS and iOS platforms, part of the Core Graphics framework. Overview Quartz 2D is available to all macOS and iOS application environments and provides resolution-independent an ...
. , there are no projects that build the
Swift programming language Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. and the open-source community. First released in 2014, Swift was developed as a replacement for Apple's earlier programming language Objectiv ...
against the GNUstep Objective-C environment.


Applications

Here are some examples of applications written for or ported to GNUstep.


Written from scratch

* Addresses, an address/ contacts manager * Étoilé, a
desktop environment In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a grap ...
*
GNUMail GNUMail is a free and open-source, cross-platform e-mail client based on GNUstep and Cocoa. It is the official mail client of GNUstep and is also used in Étoilé. It was inspired by NeXTMail ( NeXT's Mail.app), the predecessor of Apple Mail ...
, 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 * Grr, an RSS feed reader *
Oolite Oolite or oölite (''egg stone'') is a sedimentary rock formed from ooids, spherical grains composed of concentric layers. The name derives from the Ancient Greek word for egg (ᾠόν). Strictly, oolites consist of ooids of diameter 0.25 ...
, a clone of ''
Elite In political and sociological theory, the elite (french: élite, from la, eligere, to select or to sort out) are a small group of powerful people who hold a disproportionate amount of wealth, privilege, political power, or skill in a group. ...
'', a space simulation game with trading components * PRICE, imaging application * ProjectCenter, the
Project Builder Project Builder was an integrated development environment (IDE) originally developed by NeXT for version 3 of the NeXTSTEP operating system by separating out the code editing parts of Interface Builder into its own application. After Apple Comput ...
or
Xcode Xcode is Apple's integrated development environment (IDE) for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, and tvOS. It was initially released in late 2003; the latest stable release is version 14.2, released on December 13, ...
equivalent. * TalkSoup, an IRC client *
Terminal Terminal may refer to: Computing Hardware * Terminal (electronics), a device for joining electrical circuits together * Terminal (telecommunication), a device communicating over a line * Computer terminal, a set of primary input and output devi ...
* Zipper, a
file archiver A file archiver is a computer program that combines a number of files together into one archive file, or a series of archive files, for easier transportation or storage. File archivers may employ lossless data compression in their archive forma ...
tool


Ported from NeXTSTEP, OPENSTEP, or macOS

* Adun
BioCocoa
*
Chess Chess is a board game for two players, called White and Black, each controlling an army of chess pieces in their color, with the objective to checkmate the opponent's king. It is sometimes called international chess or Western chess to dist ...

Cenon

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, ...
* Fortunate * Gomoku * NeXTGO
PikoPixel
* TextEdit
TimeMon



Forks of GNUstep

*
Universal Windows Platform Universal Windows Platform (UWP) is a computing platform created by Microsoft and first introduced in Windows 10. The purpose of this platform is to help develop universal apps that run on Windows 10, Windows 10 Mobile (discontinued), Windo ...
, which includes a WinObjC suite consisting of various parts of GNUstep and
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washi ...
's own implementations of things like the
Cocoa Touch Cocoa Touch is the application development environment for building software programs to run on iOS for the iPhone and iPod Touch, iPadOS for the iPad, watchOS for the Apple Watch, and tvOS for the Apple TV, from Apple Inc. Cocoa Touch ...
API.


Class capabilities


Foundation Kit

The Foundation Kit provides basic classes such as wrapper classes and data structure classes.


Application Kit

The Application Kit provides classes oriented around
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, ins ...
capabilities.


See also

*
Darling (software) Darling is a free and open-source macOS compatibility layer for Linux. It duplicates functions of macOS by providing alternative implementations of the libraries and frameworks that macOS programs call. This method of duplication differs from ot ...
, 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 f ...
s *
Miller Columns Miller columns (also known as cascading lists) are a browsing/ visualization technique that can be applied to tree structures. The columns allow multiple levels of the hierarchy to be open at once, and provide a visual representation of the curre ...
, 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


External links


GNUstep.org
project homepage
GNUstep Applications and Developer TutorialsThe GNUstep Application Project

FLOSS Weekly Interview with Gregory Casamento and Riccardo Mottola from GNUstep
*GNUstep o
DebianMacPortsNEXTSPACE desktop environment, based on GNUstep
SONY SNAP Framework based on GNUstep
(project is "currently on hold")--> {{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