Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
GNUstep
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Open source widget toolkit and application development tools}} {{Multiple issues| {{more citations needed|date=January 2010}} {{prose|date=January 2012}} {{primary sources|date=February 2011}} }} {{Infobox software | name = GNUstep | logo = GNUstep logo.svg | logo size = 100px | screenshot = Gnustep.png | screenshot size = 300px | caption = Window Maker and a variety of applications were developed with the GNUstep libraries, including a [[gomoku]] game, [[calculator]], and [[TextEdit]]. | developer = GNUstep Developers | latest_release_version = make 2.9.2, base 1.30.0, gui 0.31.1, back 0.31.0 | latest_release_date = {{start date and age|2024|06|06}} | latest preview version = on the GitHub software repository | operating_system = [[Cross-platform]] | programming language = [[Objective-C]] | genre = [[Widget toolkit]] | license = [[GNU General Public License]] for the applications <br /> [[GNU Lesser General Public License]] for the libraries. | website = {{URL|https://www.gnustep.org/}} }} '''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 system]]s and [[Microsoft Windows]]. It is part of the [[GNU Project]]. GNUstep features a cross-platform, object-oriented [[Integrated development environment|IDE]]. Apart from the default [[Objective-C]] interface, GNUstep also has [[language binding|bindings]] for [[Java (programming language)|Java]], [[Ruby programming language|Ruby]],<ref>{{cite web|url=http://www.gnustep.org/experience/RIGS.html|title=GNUstep Developer Tools - RIGS|website=www.gnustep.org|access-date=10 April 2018}}</ref> [[GNU Guile]] and [[Scheme (programming language)|Scheme]].<ref>[https://web.archive.org/web/20051218234159/http://www.gnustep.it/marko/GScheme GScheme<!-- Bot generated title -->] {{webarchive|url=https://web.archive.org/web/20051218234159/http://www.gnustep.it/marko/GScheme/ |date=2005-12-18 }}</ref> The GNUstep developers track some additions to Apple's [[Cocoa (API)|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 Inc.|Apple]] acquired [[NeXT]]'s technology and incorporated it into the development of the original [[macOS|Mac OS X]], while GNUstep was initially an effort by [[GNU Project|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]] wanted to port [[HippoDraw]] from [[NeXTSTEP]] to another platform. Instead of rewriting HippoDraw from scratch and reusing only the application design, they [[Rewrite (programming)|decided to rewrite]] the NeXTSTEP [[object-oriented programming|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".<ref>{{cite web|url=http://gnustep.made-it.com/Guides/History.html|title=GNUstep History|website=gnustep.made-it.com|access-date=10 April 2018}}</ref> == Software architecture== [[File:Free and open-source-software display servers and UI toolkits.svg|thumb|Software components of the Linux desktop include the [[display server]], [[widget toolkit|graphics control element libraries]], and [[graphical shell]]s.]] The [[Foundation Kit]] provides basic classes such as wrapper classes and data structure classes. The [[Application Kit]] provides classes oriented around [[graphical user interface]] capabilities. GNUstep contains a set of [[graphical control element]]s written in the Objective-C programming language. The [[graphical user interface]] (GUI) of [[GNUMail]] is composed of graphics control elements. GNUMail has to interact with the [[windowing system]], e.g. [[X Window System core protocol|X11]] or [[Wayland (display server protocol)|Wayland]], and its graphical user interface has to be [[Rendering (computer graphics)|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]] functions. The package gnustep-back provides the following backends: * cairo – default backend using the [[cairo (graphics)|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 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]] language. * [[Model–view–controller]] paradigm * [[Target–action]] * [[Drag-and-drop]] * [[Delegation (computer science)|Delegation]] * [[Message passing|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)|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]]. {{as of|2020|02}}, 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. {{See also|Category:Software that uses GNUstep}} === Original === * Addresses, an address/[[contacts manager]] * Étoilé, a [[desktop environment]] * [[GNUMail]], an [[e-mail client]] * GNUstep Database Library 2, an [[Enterprise Objects Framework]] clone * [[GNUstepWeb]], an application server compatible with WebObjects 4.x * [[Gorm (computing)|Gorm]], a [[user interface]] builder application, and 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]]. It supports the old ''.nib'' files as well as its own ''.gorm'' file format. * GWorkspace, a workspace and [[file manager]] * Grr, an [[RSS Feed Reader|RSS feed reader]] * [[Oolite (video game)|Oolite]], a clone of ''[[Elite (video game)|Elite]]'', a space simulation game with trading components * PRICE, imaging application * ProjectCenter, the [[Project Builder]] or [[Xcode]] equivalent. * TalkSoup, an [[IRC]] client * [[Terminal (macOS)|Terminal]] * Zipper, a [[file archiver]] tool * Window Maker is a [[window manager]] that emulates [[NeXTSTEP]]'s [[graphical user interface|GUI]] as an [[OpenStep]]-compatible environment.<ref>{{Cite web|url=https://www.linuxinsider.com/story/window-maker-live-cool-retro-look-even-cooler-performance-84768.html|title=Window Maker Live: Cool Retro Look, Even Cooler Performance|date=August 28, 2017|website=LinuxInsider}}</ref> It was launched in 1997 as an improved take on [[AfterStep]]'s design.<ref>{{Cite web|url=https://www.zdnet.com/article/the-best-old-school-linux-window-managers-that-still-hold-up/|title=The best old-school Linux window managers that still hold up|date=1 October 2024|website=ZDNET}}</ref> === Ported from NeXTSTEP, OPENSTEP, or macOS === * Adun * BioCocoa * [[Chess (Mac OS)|Chess]] * Cenon * DoomEd * EdenMath * Eggplant * [[Emacs]] * Fortunate * [[Gomoku]] * NeXTGO * PikoPixel * [[TextEdit]] * TimeMon === Forks of GNUstep === * [[Universal Windows Platform]], which includes a [[WinObjC]] suite consisting of various parts of GNUstep and [[Microsoft]]'s own implementations of things like the [[Cocoa Touch]] API.<ref name=libobjc>{{cite web |title=GNUstep Objective-C Runtime 2.0 |url=https://github.com/gnustep/libobjc2/releases/tag/v2.0 |website=GitHub |quote=Note: Microsoft's WinObjC project contains a friendly fork of this library that includes a work around for the incremental linking issue.}}</ref> == See also == {{Portal|Free and open-source software}} * [[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]]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]], scripting framework ==References== {{Reflist}} ==External links== {{Commons}} * {{official |url=https://gnustep.org/}} * [https://gap.nongnu.org/ GNUstep Application Project] * [http://www.network-theory.co.uk/articles/pero.html A 2003 interview with GNUstep developer Nicola Pero] {{webarchive|url=https://web.archive.org/web/20070107021109/http://www.network-theory.co.uk/articles/pero.html |date=2007-01-07 }} * [https://twit.tv/floss44 FLOSS Weekly Interview with Gregory Casamento and Riccardo Mottola from GNUstep] {{GNU}} {{Widget toolkits}} {{Software in the Public Interest}} {{DEFAULTSORT:Gnustep}} [[Category:GNUstep| ]] [[Category:Compatibility layers]] [[Category:Cross-platform free software]] [[Category:Free software programmed in Objective-C]] [[Category:GNU Project software]] [[Category:NeXT]] [[Category:Software that uses Cairo (graphics)]] [[Category:Widget toolkits]] [[Category:X Window System]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:As of
(
edit
)
Template:Cite web
(
edit
)
Template:Commons
(
edit
)
Template:GNU
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Multiple issues
(
edit
)
Template:Official
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:See also
(
edit
)
Template:Short description
(
edit
)
Template:Sister project
(
edit
)
Template:Software in the Public Interest
(
edit
)
Template:Template other
(
edit
)
Template:Webarchive
(
edit
)
Template:Widget toolkits
(
edit
)