GNUstep
Encyclopedia
GNUstep is a free software
implementation of Cocoa
(formerly NeXT
's OpenStep
) Objective-C
libraries (called frameworks), widget toolkit
, and application development tools not only for Unix-like
operating system
s, but also for Microsoft Windows
. It is part of the GNU Project
.
GNUstep features a cross-platform, object-oriented development environment. Like Apple Cocoa, GNUstep also has a Java
interface, as well as Ruby, Guile
and Scheme bindings
. 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: NeXT and OpenStep. GNUstep predates Cocoa.
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".
language.
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
implementation of Cocoa
Cocoa (API)
Cocoa is Apple's native object-oriented application programming interface for the Mac OS X operating system and—along with the Cocoa Touch extension for gesture recognition and animation—for applications for the iOS operating system, used on Apple devices such as the iPhone, the iPod Touch, and...
(formerly NeXT
NeXT
Next, Inc. was an American computer company headquartered in Redwood City, California, that developed and manufactured a series of computer workstations intended for the higher education and business markets...
's OpenStep
OpenStep
OpenStep was an object-oriented application programming interface specification for an object-oriented operating system that used a non-NeXTSTEP operating system as its core, principally developed by NeXT with Sun Microsystems. OPENSTEP was a specific implementation of the OpenStep API developed...
) Objective-C
Objective-C
Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...
libraries (called frameworks), widget toolkit
Widget toolkit
In computing, a widget toolkit, widget library, or GUI toolkit is a set of widgets for use in designing applications with graphical user interfaces...
, and application development tools not only for Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s, but also for Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
. It is part of the GNU Project
GNU Project
The GNU Project is a free software, mass collaboration project, announced on September 27, 1983, by Richard Stallman at MIT. It initiated GNU operating system development in January, 1984...
.
GNUstep features a cross-platform, object-oriented development environment. Like Apple Cocoa, GNUstep also has a Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
interface, as well as Ruby, Guile
GNU Guile
GNU Guile is an interpreter/virtual machine for the Scheme programming language. It was first released in 1993. Guile includes modularized extensions for POSIX system calls, APL array functionality, and others packaged as an object library...
and Scheme bindings
Language binding
In computing, a binding from a programming language to a library or OS service is an API providing that service in the language.Many software libraries are written in systems programming languages such as C or C++...
. The GNUstep developers track some additions to Apple's Cocoa
Cocoa (API)
Cocoa is Apple's native object-oriented application programming interface for the Mac OS X operating system and—along with the Cocoa Touch extension for gesture recognition and animation—for applications for the iOS operating system, used on Apple devices such as the iPhone, the iPod Touch, and...
to remain compatible. The roots of the GNUstep application interface are the same as the roots of Cocoa: NeXT and OpenStep. GNUstep predates Cocoa.
History
GNUstep began when Paul KunzPaul Kunz
Particle physicist and software developer Paul Kunz initiated the deployment of the first web server outside of Europe. After a meeting in September with Tim Berners-Lee of CERN, he returned to the Stanford Linear Accelerator Center with word of the World Wide Web...
and others at Stanford Linear Accelerator Center
Stanford Linear Accelerator Center
The SLAC National Accelerator Laboratory, originally named 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...
wanted to port HippoDraw
HippoDraw
HippoDraw is a powerful object oriented statistical data analysis package written in C++, with user interaction via a Qt-based GUI and a Python scriptable interface...
from NEXTSTEP
NEXTSTEP
NeXTSTEP was the object-oriented, multitasking operating system developed by NeXT Computer to run on its range of proprietary workstation computers, such as the NeXTcube...
to another platform. Instead of rewriting HippoDraw from scratch and reusing only the application design, they decided to rewrite
Rewrite (programming)
A rewrite in computer programming is the act or result of re-implementing a large portion of existing functionality without re-use of its source code. When the rewrite is not using existing code at all, it is common to speak of a rewrite from scratch...
the NeXTSTEP object
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
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
X Window System
The X window system is a computer software system and network protocol that provides a basis for graphical user interfaces and rich input device capability for networked computers...
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".
Paradigms
GNUstep inherits some design principles proposed in Cocoa (formerly OPENSTEP) as well as the Objective-CObjective-C
Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.Today, it is used primarily on Apple's Mac OS X and iOS: two environments derived from the OpenStep standard, though not compliant with it...
language.
- Model-view-controllerModel-view-controllerModel–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...
paradigm - Target-ActionTarget-ActionThe term target–action design paradigm refers to a kind of software architecture, where a computer program is divided up into objects which dynamically establish relationships by telling each other which object they should target and what action or message to send to that target when an event occurs...
- Drag-and-dropDrag-and-dropIn computer graphical user interfaces, drag-and-drop is the action of selecting a virtual object by "grabbing" it and dragging it to a different location or onto another virtual object...
- Delegation
- Message forwardingMessage passingMessage passing in computer science is a form of communication used in parallel computing, object-oriented programming, and interprocess communication. In this model, processes or objects can send and receive messages to other processes...
(through NSInvocation)
Written from scratch
- Addresses
- GNUMailGNUMailGNUMail is a free and open source, cross-platform mail client for GNUstep and Cocoa. It is the official mail client of GNUstep and is also used in Étoilé. It was inspired by NeXTMail , the prime father of Apple Mail...
, an e-mail client - GNUstep Database Library 2, an Enterprise Objects FrameworkEnterprise Objects FrameworkThe Enterprise Objects Framework was introduced by NeXT in 1994 as a pioneering object-relational mapping product for its NeXTSTEP and OpenStep development platforms. The EOF abstracts the process of interacting with a relational database, mapping database rows to Java or Objective-C objects. This...
clone - GNUstepWeb, an application server
- GormGorm (computing)Gorm is a graphical interface builder application. It is part of the developer tools of GNUstep. Gorm is the equivalent of Interface Builder that was originally found on NeXTSTEP, then OPENSTEP, and finally on Mac OS X.Gorm and Project Center represent the heart of the suite for GNUstep...
, an interface builder - GWorkspace, a workspace and file manager
- Grr, an RSS feed reader
- Oolite, a clone of Elite, a space strategy game
- PRICE, imaging application
- ProjectCenter, the Project BuilderProject BuilderProject Builder was an integrated development environment originally developed by NeXT for the NeXTSTEP operating system. It was rewritten and informally dubbed PBX while distributed by Apple Computer for software development on Mac OS X computer systems prior to Mac OS X v10.3...
or XcodeXcodeXcode is a suite of tools, developed by Apple, for developing software for Mac OS X and iOS. Xcode 4.2, the latest major version, is available on the Mac App Store for free for Mac OS X 10.7 , and on the Apple Developer Connection website for free to registered developers Xcode is a suite of tools,...
equivalent. - TalkSoup
- Terminal
- Zipper
Ported from NeXTSTEP, OPENSTEP, or Mac OS X
- Adun
- BioCocoa
- ChessChess (application)Chess is a chess game for Mac OS X, and its progenitor, OPENSTEP, featuring a high-quality graphical display and support for chess variants such as crazyhouse and suicide chess. Also included are different skins featuring metal, grass, marble and wood...
- Cenon
- EdenMath
- Eggplant
- EmacsEmacsEmacs is a class of text editors, usually characterized by their extensibility. GNU Emacs has over 1,000 commands. It also allows the user to combine these commands into macros to automate work.Development began in the mid-1970s and continues actively...
- Fortunate
- GomokuGomokuGomoku is an abstract strategy board game. Also called Gobang or Five in a Row, it is traditionally played with go pieces on a go board ; however, because once placed, pieces are not moved or removed from the board, gomoku may also be played as a paper and pencil game...
- NeXTGO
- TextEditTextEditTextEdit is a simple, open source word processor and text editor, first featured in NeXT's NEXTSTEP and OPENSTEP. It is now distributed with Mac OS X since Apple Inc.'s acquisition of NeXT, and available as a GNUstep application for other Unix-compatible operating systems such as Linux...
- TimeMon
Foundation Kit
- strings
- collections (arrays, sets, dictionaries) and enumerators
- file management
- object archiving
- advanced date manipulation
- distributed objectsPortable Distributed ObjectsPortable Distributed Objects, or PDO, is a programming API for creating object-oriented code that can be executed remotely on a network of computers. It was created by NeXT Computer, Inc. using their OpenStep system, whose use of Objective-C made the package very easy to write...
and inter-process communication - URL handling
- notifications (and distributed notifications)
- easy multi-threading
- timers
- locks
- exception handling
Application Kit
- user interface elements (table views, browsers, matrices, scroll views)
- graphics (WYSIWYGWYSIWYGWYSIWYG is an acronym for What You See Is What You Get. The term is used in computing to describe a system in which content displayed onscreen during editing appears in a form closely corresponding to its appearance when printed or displayed as a finished product...
, 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
- help manager
- pasteboard (aka clip board) services
- spell checker
- workspace bindings for applications
- drag and drop operations
- servicesServices menuThe Services menu is a user interface element in a computer operating system. The services are programs that accept input from the user selection, process it, and optionally put the result back in the clipboard. The concept originated in the NeXTSTEP operating system, from which it was carried...
sharing among applications
See also
- ÉtoiléÉtoiléÉtoilé is a GNUstep-based free software desktop environment built from the ground up on highly modular and light components with project and document orientation in mind, in order to allow users to create their own workflow by reshaping or recombining provided services , and other...
- GNUstep-based desktop environment - GNUstep RenaissanceGNUstep RenaissanceGNUstep Renaissance is a development framework that reads XML descriptions of graphical user interfaces from an application bundle and converts them into native widgets and connections at runtime under either GNUstep or Mac OS X....
- framework for XML description of portable GNUstep/Mac OS X user interfaceUser interfaceThe user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the...
s - Miller ColumnsMiller ColumnsMiller columns 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 current location. It is closely related to techniques used earlier in the Smalltalk...
The method of file tree browsing the GWorkspace File Viewer uses - Property listProperty listIn the Mac OS X, iOS, NeXTSTEP, and GNUstep programming frameworks, property list files are files that store serialized objects. Property list files use the filename extension .plist, and thus are often referred to as p-list files....
- often used file format to store user settings - StepTalkStepTalkStepTalk is the official GNUstep scripting framework that represents separate scriptable servers or applications as a single object environment...
- Scripting framework - Window MakerWindow MakerWindow Maker is a free and open source window manager for the X Window System, allowing graphical applications to be run on Unix-like operating-systems...
- a window manager designed to emulate the NeXT GUI as part of the wider GNUstep project
External links
- GNUstep.org project homepage
- GNUstep Applications and Developer Tutorials
- The GNUstep Application Project
- A 2003 interview with GNUstep developer Nicola Pero
- FLOSS Weekly Interview with Gregory Casamento and Riccardo Mottola from GNUstep
- SONY SNAP Framework based on GNUstep (project is "currently on hold")