GNUstep: Difference between revisions
Fixed dead link, should be www.gnustep.org |
imported>Bumm13 m →See also: capitalization fix |
||
| Line 14: | Line 14: | ||
| caption = Window Maker and a variety of applications were developed with the GNUstep libraries, including a [[gomoku]] game, [[calculator]], and [[TextEdit]]. | | caption = Window Maker and a variety of applications were developed with the GNUstep libraries, including a [[gomoku]] game, [[calculator]], and [[TextEdit]]. | ||
| developer = GNUstep Developers | | developer = GNUstep Developers | ||
| latest_release_version = make 2.9. | | latest_release_version = make 2.9.3, base 1.31.1, gui 0.32.0, back 0.32.0 | ||
| latest_release_date = {{start date and age| | | latest_release_date = {{start date and age|2025|02|28}} | ||
| latest preview version = on the GitHub software repository | | latest preview version = on the GitHub software repository | ||
| operating_system = [[Cross-platform]] | | operating_system = [[Cross-platform]] | ||
| Line 26: | Line 26: | ||
'''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''' 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. | 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 == | == History == | ||
| Line 36: | Line 36: | ||
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 [[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 ( | 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 (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. | * cairo – default backend using the [[cairo (graphics)|Cairo]] 2D graphics library. | ||
| Line 71: | Line 71: | ||
* GWorkspace, a workspace and [[file manager]] | * GWorkspace, a workspace and [[file manager]] | ||
* Grr, an [[RSS Feed Reader|RSS feed reader]] | * 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 | * ''[[Oolite (video game)|Oolite]]'', a clone of ''[[Elite (video game)|Elite]]'', a space simulation game with trading components | ||
* PRICE, imaging application | * PRICE, imaging application | ||
* ProjectCenter, the [[Project Builder]] or [[Xcode]] equivalent. | * ProjectCenter, the [[Project Builder]] or [[Xcode]] equivalent. | ||
| Line 77: | Line 77: | ||
* [[Terminal (macOS)|Terminal]] | * [[Terminal (macOS)|Terminal]] | ||
* Zipper, a [[file archiver]] tool | * 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> | * [[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 === | === Ported from NeXTSTEP, OPENSTEP, or macOS === | ||
| Line 89: | Line 89: | ||
* [[Emacs]] | * [[Emacs]] | ||
* Fortunate | * Fortunate | ||
* [[Gomoku]] | * ''[[Gomoku]]'' | ||
* NeXTGO | * NeXTGO | ||
* PikoPixel | * PikoPixel | ||
| Line 103: | Line 103: | ||
* [[GNUstep fat bundle]] | * [[GNUstep fat bundle]] | ||
* [[GNUstep Renaissance]], framework for XML description of portable GNUstep/Mac OS X [[user interface]]s | * [[GNUstep Renaissance]], framework for XML description of portable GNUstep/Mac OS X [[user interface]]s | ||
* [[Miller | * [[Miller columns]], the method of file tree browsing the GWorkspace File Viewer uses | ||
* [[Property list]], often-used file format to store user settings | * [[Property list]], often-used file format to store user settings | ||
* [[StepTalk]], scripting framework | * [[StepTalk]], scripting framework | ||
Latest revision as of 14:33, 15 November 2025
Template:Short description Template:Multiple issues
Script error: No such module "Infobox".Template:Template otherScript error: No such module "Check for unknown parameters".Template:Main other
GNUstep is a free software implementation of the Cocoa (formerly OpenStep) Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project.
GNUstep features a cross-platform, object-oriented IDE. Apart from the default Objective-C interface, GNUstep also has bindings for Java, Ruby,[1] GNU Guile and Scheme.[2] 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 and OpenStep. GNUstep thus predates Cocoa, which emerged when Apple acquired NeXT'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 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".[3]
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 capabilities. GNUstep contains a set of graphical control elements 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. 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 functions. The package gnustep-back provides the following backends:
- cairo – default backend using the 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
- 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.
Template:As of, 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.
Script error: No such module "Labelled list hatnote".
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, 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
- Oolite, a clone of Elite, a space simulation game with trading components
- PRICE, imaging application
- ProjectCenter, the Project Builder or Xcode equivalent.
- TalkSoup, an IRC client
- Terminal
- Zipper, a file archiver tool
- Window Maker is a window manager that emulates NeXTSTEP's GUI as an OpenStep-compatible environment.[4] It was launched in 1997 as an improved take on AfterStep's design.[5]
Ported from NeXTSTEP, OPENSTEP, or macOS
- Adun
- BioCocoa
- 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.[6]
See also
Script error: No such module "Portal".
- 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 interfaces
- 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
External links
- Template:Official
- GNUstep Application Project
- A 2003 interview with GNUstep developer Nicola Pero Template:Webarchive
- FLOSS Weekly Interview with Gregory Casamento and Riccardo Mottola from GNUstep
Template:GNU Template:Widget toolkits Template:Software in the Public Interest