<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.gnustep.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mitchell-riley</id>
	<title>GNUstepWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.gnustep.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mitchell-riley"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php/Special:Contributions/Mitchell-riley"/>
	<updated>2026-04-22T09:11:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Main_Page&amp;diff=6981</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Main_Page&amp;diff=6981"/>
		<updated>2017-11-26T14:19:21Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: Associate unstable core packages with the git repo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.gnustep.wordpress.com Spanish]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid black; background-color:lavender; padding:10pt; width:100%&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''[http://www.gnustep.org GNUstep]''' is a [[Portability|cross-platform]], object-oriented set of [[Frameworks|frameworks]] for desktop application [[Development tools|development]].&amp;lt;br&amp;gt;This set of frameworks, based on [[Cocoa]] (previously [[OpenStep]]), enables developers to rapidly build sophisticated software by employing a large library of reusable software components. GNUstep is already used [[GNUstep in production|in production]] environments at several organizations.&lt;br /&gt;
&lt;br /&gt;
Sounds interesting? Have a look at the more in-depth [[Introduction to GNUstep|introduction]]!&lt;br /&gt;
&lt;br /&gt;
* '''Download Stable Core Packages :''' [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-make-2.7.0.tar.gz Make v2.7.0], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-base-1.25.0.tar.gz Base v1.25.0], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-gui-0.25.1.tar.gz GUI v0.25.1], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-back-0.25.1.tar.gz Back v0.25.1]&lt;br /&gt;
&lt;br /&gt;
* '''Download Unstable Core packages : ''' [https://github.com/gnustep Git Repository]&lt;br /&gt;
&lt;br /&gt;
* '''Developer applications:''' [[Gorm.app|Gorm 1.2.22]], [[ProjectCenter.app| ProjectCenter 0.6.2]]&lt;br /&gt;
&lt;br /&gt;
New [[ObjC2_FAQ|Objective-C 2.0 FAQ]]&lt;br /&gt;
&lt;br /&gt;
If you find bugs, please refer how to [[ Report_Bugs | report bugs]]. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid black; background-color:lavender; padding:10pt; width:100%&amp;quot;&lt;br /&gt;
| All packages are collected in the searchable [http://www.gnustep.org/softwareindex/ Software Index] which also has an [http://www.gnustep.org/softwareindex/rss.php RSS feed].&lt;br /&gt;
There are some [[Themes]] for the GNUstep apps.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:right; vertical-align:top; font-size:10px;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[{{SERVER}}{{localurl:Template:GNUstep_News|action=edit}} '''Add Entry''']&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{GNUstep_News}}&lt;br /&gt;
&lt;br /&gt;
== Older News ==&lt;br /&gt;
&lt;br /&gt;
[[Application_News_2012|2012]],&lt;br /&gt;
[[Application_News_2011|2011]],&lt;br /&gt;
[[Application_News_2010|2010]],&lt;br /&gt;
[[Application_News_2009|2009]],&lt;br /&gt;
[[Application_News_2008|2008]],&lt;br /&gt;
[[Application_News_2007|2007]],&lt;br /&gt;
[[Application_News_2006|2006]],&lt;br /&gt;
[[Application_News_2005|2005]],&lt;br /&gt;
[[Application_News_2004|2004]],&lt;br /&gt;
[[Application_News_2003|2003]],&lt;br /&gt;
[[Application_News_2002|2002]]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background: #ff958e;&amp;quot;&lt;br /&gt;
| If you want to participate, you need to [[Special:Userlogin|create an account]] and send an e-mail with your user name to [mailto:gnustep-webmasters@gnu.org gnustep-webmasters@gnu.org] to request write-access. We are sorry for the inconvenience, but this procedure has become necessary to prevent spamming of this site.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Main_Page&amp;diff=6857</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Main_Page&amp;diff=6857"/>
		<updated>2015-06-22T13:21:55Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: update version number and add missing svn link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.gnustep.wordpress.com Spanish]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid black; background-color:lavender; padding:10pt; width:100%&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''[http://www.gnustep.org GNUstep]''' is a [[Portability|cross-platform]], object-oriented set of [[Frameworks|frameworks]] for desktop application [[Development tools|development]].&amp;lt;br&amp;gt;This set of frameworks, based on [[Cocoa]] (previously [[OpenStep]]), enables developers to rapidly build sophisticated software by employing a large library of reusable software components. GNUstep is already used [[GNUstep in production|in production]] environments at several organizations.&lt;br /&gt;
&lt;br /&gt;
Sounds interesting? Have a look at the more in-depth [[Introduction to GNUstep|introduction]]!&lt;br /&gt;
&lt;br /&gt;
* '''Download Stable Core Packages :''' [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-make-2.6.7.tar.gz Make v2.6.7], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-base-1.24.8.tar.gz Base v1.24.8], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-gui-0.24.1.tar.gz GUI v0.24.1], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-back-0.24.1.tar.gz Back v0.24.1]&lt;br /&gt;
&lt;br /&gt;
* '''Download Unstable Core packages : ''' (NOTE: Now only in the [https://gna.org/svn/?group=gnustep SVN software repository])&lt;br /&gt;
&lt;br /&gt;
* '''Developer applications:''' [[Gorm.app|Gorm 1.2.20]], [[ProjectCenter.app| ProjectCenter 0.6.2]]&lt;br /&gt;
&lt;br /&gt;
New [[ObjC2_FAQ|Objective-C 2.0 FAQ]]&lt;br /&gt;
&lt;br /&gt;
If you find bugs, please refer how to [[ Report_Bugs | report bugs]]. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid black; background-color:lavender; padding:10pt; width:100%&amp;quot;&lt;br /&gt;
| All packages are collected in the searchable [http://www.gnustep.org/softwareindex/ Software Index] which also has an [http://www.gnustep.org/softwareindex/rss.php RSS feed].&lt;br /&gt;
There are some [[Themes]] for the GNUstep apps.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:right; vertical-align:top; font-size:10px;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[{{SERVER}}{{localurl:Template:GNUstep_News|action=edit}} '''Add Entry''']&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{GNUstep_News}}&lt;br /&gt;
&lt;br /&gt;
== Older News ==&lt;br /&gt;
&lt;br /&gt;
[[Application_News_2012|2012]],&lt;br /&gt;
[[Application_News_2011|2011]],&lt;br /&gt;
[[Application_News_2010|2010]],&lt;br /&gt;
[[Application_News_2009|2009]],&lt;br /&gt;
[[Application_News_2008|2008]],&lt;br /&gt;
[[Application_News_2007|2007]],&lt;br /&gt;
[[Application_News_2006|2006]],&lt;br /&gt;
[[Application_News_2005|2005]],&lt;br /&gt;
[[Application_News_2004|2004]],&lt;br /&gt;
[[Application_News_2003|2003]],&lt;br /&gt;
[[Application_News_2002|2002]]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background: #ff958e;&amp;quot;&lt;br /&gt;
| If you want to participate, you need to [[Special:Userlogin|create an account]] and send an e-mail with your user name to [mailto:gnustep-webmasters@gnu.org gnustep-webmasters@gnu.org] to request write-access. We are sorry for the inconvenience, but this procedure has become necessary to prevent spamming of this site.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Oolite.app&amp;diff=6856</id>
		<title>Oolite.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Oolite.app&amp;diff=6856"/>
		<updated>2015-06-21T21:32:35Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: Updated information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = Oolite is a space sim game, inspired by Elite |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://www.oolite.org/download/ 1.82] |&lt;br /&gt;
&lt;br /&gt;
releasedate = May 27, 2015 |&lt;br /&gt;
&lt;br /&gt;
license = [http://creativecommons.org/licenses/by-nc-sa/2.0/ Creative Commons License] |&lt;br /&gt;
&lt;br /&gt;
overview =&lt;br /&gt;
Oolite is a space sim game, inspired by Elite, powered by Objective-C and OpenGL, and designed as a small game that is easy for users to pick up, modify and expand upon. Almost every aspect of the game can be changed by using simple, free graphics packages and text-editors.&lt;br /&gt;
&lt;br /&gt;
Originally written for Mac OS X, and under continuous development for over three years. Oolite is available for Mac OS X (10.3.9 and higher), Windows XP, and Unices. It requires at least a 400MHz processor, 256Mb of memory, and a graphics card capable of accelerating OpenGL graphics. |&lt;br /&gt;
&lt;br /&gt;
features =&lt;br /&gt;
Oolite features a new high-resolution collision engine, new equipment and graphics, and many improvements to gameplay.&lt;br /&gt;
&lt;br /&gt;
* High resolution collision detection.&lt;br /&gt;
* More new equipment for players to add to their ships.&lt;br /&gt;
* External views of the player's ship.&lt;br /&gt;
* Scooped escape pods now pay rewards and ransoms for their rescue.&lt;br /&gt;
* Many enhancements to the graphics, explosions and data screens.&lt;br /&gt;
* Improvements to the intelligence of AI opponents and expanded scripting.&lt;br /&gt;
* Many bugfixes and improvements to gameplay. |&lt;br /&gt;
&lt;br /&gt;
maintainer = [mailto:oolite@aegidian.org oolite@aegidian.org] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = &lt;br /&gt;
* [http://oolite.aegidian.org/ Official Page] |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Games Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GNUstep_in_production&amp;diff=6855</id>
		<title>GNUstep in production</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GNUstep_in_production&amp;diff=6855"/>
		<updated>2015-06-21T21:28:19Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: Alphabetized&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Note: Please leave a short note about how is the company related to GNUstep. Please sort the list alphabetically.''&lt;br /&gt;
&lt;br /&gt;
== Corporations &amp;amp; Companies actively developing for GNUstep ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.brainstorm.co.uk/ Brainstorm Mobile Solutions Ltd] has one the most advanced SMS/MMS mobile marketing platforms on the market, and it's all running on GNUstep.&lt;br /&gt;
* [http://www.goldelico.com/ Golden Delicious Computers] is working on [http://www.quantum-step.com QuantumSTEP] for Embedded Devices&lt;br /&gt;
* [http://www.orange-concept.com/ Orange Concept] is working mainly on [http://www.gnustepweb.org GNUstepWeb] and [[GDL|GDL2]] for it's eCommerce engine: [http://www.eCommStep.com eCommStep]&lt;br /&gt;
* [http://www.turbocat.de/ Turbocat's Development]&lt;br /&gt;
&lt;br /&gt;
== Companies which use and/or support GNUstep ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.intars.at/ Ayers Application Design &amp;amp; Development]&lt;br /&gt;
* [http://www.ivt.baug.ethz.ch/oev/RailMLEditor_d.html Institut für Verkehrsplanung und Transportsysteme]&lt;br /&gt;
* [http://www.theinternetco.net/ The Internet Company]&lt;br /&gt;
* Microcom ([http://www.cyberpokershop.com CyberPokerShop], [http://www.cyberdvdfilms.com CyberDVDFilms]) &lt;br /&gt;
:uses [http://www.eCommStep.com eCommStep], an eCommerce engine based on [http://www.gnustep.org GNUstep], [http://www.gnustepweb.org GNUstepWeb] and [[GDL2]] to run its shops since may 2003.&lt;br /&gt;
* [http://www.lmet.fr Le Monde en Tique] the famous french Computer Science library uses [http://www.eCommStep.com eCommStep] for it's B2C and B2B e-Commerce web site.&lt;br /&gt;
* Orillion&lt;br /&gt;
* [[Smartsoft]] develops highly customized business applications for MacOSX and Solaris.&lt;br /&gt;
* [http://www.seat-1.com seat-1 Software GmbH ], business software for small to medium-sized production, trading and service companies. The software product IntarS is powered by [[GNUstepWeb]] on GNU based operating systems.&lt;br /&gt;
* [http://www.turbocat.de/ Turbocat's Development]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6854</id>
		<title>Objective-C Compiler and Runtime FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6854"/>
		<updated>2015-06-04T19:59:57Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: fixed inaccuracies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objective-C Compiler and Runtime FAQ ==&lt;br /&gt;
&lt;br /&gt;
An Objective-C implementation comes in two components:&lt;br /&gt;
* '''Compiler''' - responsible for parsing the source code and produces a binary that contains calls to the functions in the runtime library&lt;br /&gt;
* '''Runtime Library''' - responsible for things like message sending and introspection&lt;br /&gt;
&lt;br /&gt;
=== How Many Runtimes Are there? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
If you have used Objective-C on Mac OS X, then you will have used one or both of Apple's two Objective-C runtimes.  The Apple legacy runtime is based on the version implemented by NeXT back in the '80s, although it has seen some improvements since that time and is often referred to as the NeXT runtime.  Apple's modern runtime is a complete rewrite, introduced with OS X 10.5.  The modern runtime is required for Objective-C 2 and is the default on 64-bit platforms.&lt;br /&gt;
&lt;br /&gt;
The implementation of Objective-C produced by NeXT was based on GCC and as such NeXT was required to release the relevant compiler changes.  The NeXT Objective-C runtime was not open sourced (it was later, after Apple bought NeXT, but the code is not particularly portable and so is not used on platforms other than Darwin) and so the GNU project created a new one, generally referred to as the GNU runtime.&lt;br /&gt;
&lt;br /&gt;
In 2009, a fork of this was committed to GNUstep subversion repository as libobjc2.  This contains a lot of new features and removes a lot of legacy code, but is not yet considered production ready.  Unlike the original GNU runtime (which will be referred to as the GCC runtime, for differentiation), this can be built outside of the GCC tree and distributed independently.  The GNUstep runtime supports two ABIs.  One is compatible with the GCC runtime, the other is new and is designed to support Objective-C 2.&lt;br /&gt;
&lt;br /&gt;
=== Which Runtime Should I use? ===&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
If you are using a recent version of GCC to compile your code then you should have a copy of the Objective-C runtime library that came with your compiler.&lt;br /&gt;
&lt;br /&gt;
If you are using a very old version of GCC then you may need to use a newer version of GNU runtime.  If you experience problems with the version of runtime that came with your compiler, then you should install libobjc from GNUstep subversion (libs/libobjc/trunk).  This is a copy of version 1.6 of the GCC runtime which is modified to build outside the GCC tree.&lt;br /&gt;
&lt;br /&gt;
For more advanced features, currently only supported if you compile with Clang, you will need the GNUstep runtime.  This is not currently considered production ready.  It should work as a drop-in replacement for the GCC runtime, but some of the advanced features are not well-tested.&lt;br /&gt;
&lt;br /&gt;
=== What is or was the Étoilé Runtime? ===&lt;br /&gt;
----------------------------------&lt;br /&gt;
&lt;br /&gt;
The Étoilé Runtime is a research prototype that was originally intended to succeed the GNU runtime.  After some time, it was determined that porting GNUstep to a completely new - and radically differently designed - runtime would be a massive undertaking, as would providing all of the related compiler support.  It was also decided that two incompatible ABIs would not benefit anyone.  The author of the Étoilé runtime is the maintainer of the GNUstep runtime and has back-ported most of the improvements from the Étoilé runtime to the GNUstep runtime.&lt;br /&gt;
&lt;br /&gt;
=== Which Compiler Should I Use? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
The history of Objective-C in GCC is somewhat complicated.  Originally, NeXT was forced to release the original Objective-C front end in order to comply with the GPL.  This code was not quite compatible with the GNU runtime and so it was modified.  NeXT did not adopt these modifications and so each release of GCC by NeXT, and then Apple, contained changes that needed back-porting to the main branch of GCC.&lt;br /&gt;
&lt;br /&gt;
For a long time, GCC was the only compiler that worked with GNUstep.  Unfortunately, the GCC team has not invested much effort in Objective-C in the last few years and it currently lags behind Apple's version by a significant amount.&lt;br /&gt;
&lt;br /&gt;
As of version 4.3, the Free Software Foundation changed the license of GCC to version 3 of the GNU General Public License.  This means that future versions will not be shipped by Apple.  OS X 10.6 ships with three compilers:&lt;br /&gt;
&lt;br /&gt;
* Apple's fork of GCC 4.2.1&lt;br /&gt;
* LLVM-GCC&lt;br /&gt;
* Clang&lt;br /&gt;
&lt;br /&gt;
The latter two use the [http://llvm.org/ Low Level Virtual Machine] for code generation.  This is a BSD-licensed compiler infrastructure used by several other projects.  LLVM-GCC is a hybrid, using Apple's version of GCC for parsing and LLVM for optimisation and native code generation.  Clang is a new front end for LLVM.&lt;br /&gt;
&lt;br /&gt;
Currently, LLVM-GCC is based on Apple's GCC and so does not support the GNU runtime.  There is an effort underway to rewrite LLVM-GCC as a plugin for GCC 4.5, at which point it should support as much Objective-C as GCC currently does.&lt;br /&gt;
&lt;br /&gt;
Unlike GCC, Clang features a clean abstraction layer between the runtime-specific and runtime-agnostic parts of the compiler.  This means that adding support for new features on the GNU runtime is simply a matter of implementing the relevant methods in the CGObjCGNU class.  This means that Clang is able to support almost everything on the GNUstep runtime that it does on either of the Apple runtimes.&lt;br /&gt;
&lt;br /&gt;
=== Which Bits of Objective-C 2 Work? ===&lt;br /&gt;
---------------------------------&lt;br /&gt;
&lt;br /&gt;
The answer to this question depends on the combination of compiler and runtime library that you are using.  Currently, no features of Objective-C 2 work with GCC.&lt;br /&gt;
&lt;br /&gt;
If you compile with Clang then you have access to declared properties, fast enumeration, and blocks.  Note that both of these require some support from the runtime.  This must be provided either by the GNUstep runtime or by the ObjectiveC2 framework, which you can acquire from Étoilé subversion.  For blocks to work, you must also compile with -fblocks.&lt;br /&gt;
&lt;br /&gt;
If you compile with the -fobjc-nonfragile-abi flag then you will use the new ABI.  This is only supported with the GNUstep runtime.  This adds:&lt;br /&gt;
&lt;br /&gt;
* Property introspection&lt;br /&gt;
* Introspection on optional protocol methods&lt;br /&gt;
* Non-fragile instance variables&lt;br /&gt;
* Forwarding proxy support&lt;br /&gt;
&lt;br /&gt;
Unlike Apple's non-fragile ABI, it is possible to mix code compiled for our fragile and non-fragile ABIs with some caveats.  Message sending from code compiled with the fragile ABI will not be able to take advantage of forwarding proxies.  If you subclass a non-fragile ABI class with a class compiled with the fragile ABI then you will not receive any benefits; the class compiled with the fragile ABI must be able to see all of the instance variables in the superclass at compile time or things will break.  Some benefits will be obtained the other way around, however.  A class compiled for the fragile ABI will always be able to access its own instance variables safely when the superclass changes, even if the superclass layout changes.  It will, however, only be able to safely access instance variables declared in superclasses safely if the superclass is also compiled with the non-fragile ABI or if the superclass instance variable layout does not change.&lt;br /&gt;
&lt;br /&gt;
=== Can I use Apple's Runtime APIs? ===&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
You not only can, but should!&lt;br /&gt;
&lt;br /&gt;
With OS X 10.5, Apple introduced a new set of APIs for interacting with the runtime.  These hid the implementation details - previously all public - behind a set of public functions, implemented on both the modern and legacy runtimes.&lt;br /&gt;
&lt;br /&gt;
These functions are supported by the GNUstep runtime and can also be used with the GCC runtime if you link against Étoilé's ObjectiveC2 framework.&lt;br /&gt;
&lt;br /&gt;
From release 1.20.0 of the base library onwards the new runtime APIs are built in to the GNUstep base library (the Étoilé ObjectiveC2 framework is incorporated into base and extended/improved) so that the new APIs can be used with both old and new runtimes.&lt;br /&gt;
&lt;br /&gt;
=== What About Garbage Collection? ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
GNUstep has supported garbage collection via the [http://www.hboehm.info/gc/ Boehm GC] for some years.  Efforts are underway to bring this to closer compatibility with Apple's new implementation.&lt;br /&gt;
&lt;br /&gt;
=== Where can I get it ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
You may obtain the code for the modern Objective-C runtime from subversion at the following&lt;br /&gt;
subversion branch:&lt;br /&gt;
&lt;br /&gt;
svn://svn.gna.org/svn/gnustep/libs/libobjc2/releases/1.7&lt;br /&gt;
&lt;br /&gt;
Alternatively, a tarball is available from:&lt;br /&gt;
&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.txz txz]&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.tar.bz2 bz2]&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.tgz tgz]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6853</id>
		<title>Objective-C Compiler and Runtime FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6853"/>
		<updated>2015-06-04T19:54:58Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: Reverting to normalized titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objective-C Compiler and Runtime FAQ ==&lt;br /&gt;
&lt;br /&gt;
An Objective-C implementation comes in two components:&lt;br /&gt;
* '''Compiler''' - responsible for parsing the source code and produces a binary that contains calls to the functions in the runtime library&lt;br /&gt;
* '''Runtime Library''' - responsible for things like message sending and introspection&lt;br /&gt;
&lt;br /&gt;
=== How Many Runtimes Are there? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
If you have used Objective-C on Mac OS X, then you will have used one or both of Apple's two Objective-C runtimes.  The Apple legacy runtime is based on the version implemented by NeXT back in the '80s, although it has seen some improvements since that time and is often referred to as the NeXT runtime.  Apple's modern runtime is a complete rewrite, introduced with OS X 10.5.  The modern runtime is required for Objective-C 2 and is the default on 64-bit platforms.&lt;br /&gt;
&lt;br /&gt;
The implementation of Objective-C produced by NeXT was based on GCC and as such NeXT was required to release the relevant compiler changes.  The NeXT Objective-C runtime was not open sourced (it was later, after Apple bought NeXT, but the code is not particularly portable and so is not used on platforms other than Darwin) and so the GNU project created a new one, generally referred to as the GNU runtime.&lt;br /&gt;
&lt;br /&gt;
In 2009, a fork of this was committed to GNUstep subversion repository as libobjc2.  This contains a lot of new features and removes a lot of legacy code, but is not yet considered production ready.  Unlike the original GNU runtime (which will be referred to as the GCC runtime, for differentiation), this can be built outside of the GCC tree and distributed independently.  The GNUstep runtime supports two ABIs.  One is compatible with the GCC runtime, the other is new and is designed to support Objective-C 2.&lt;br /&gt;
&lt;br /&gt;
=== Which Runtime Should I use? ===&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
If you are using a recent version of GCC to compile your code then you should have a copy of the Objective-C runtime library that came with your compiler.&lt;br /&gt;
&lt;br /&gt;
If you are using a very old version of GCC then you may need to use a newer version of GNU runtime.  If you experience problems with the version of runtime that came with your compiler, then you should install libobjc from GNUstep subversion (libs/libobjc/trunk).  This is a copy of version 1.6 of the GCC runtime which is modified to build outside the GCC tree.&lt;br /&gt;
&lt;br /&gt;
For more advanced features, currently only supported if you compile with Clang, you will need the GNUstep runtime.  This is not currently considered production ready.  It should work as a drop-in replacement for the GCC runtime, but some of the advanced features are not well-tested.&lt;br /&gt;
&lt;br /&gt;
=== What is or was the Étoilé Runtime? ===&lt;br /&gt;
----------------------------------&lt;br /&gt;
&lt;br /&gt;
The Étoilé Runtime is a research prototype that was originally intended to succeed the GNU runtime.  After some time, it was determined that porting GNUstep to a completely new - and radically differently designed - runtime would be a massive undertaking, as would providing all of the related compiler support.  It was also decided that two incompatible ABIs would not benefit anyone.  The author of the Étoilé runtime is the maintainer of the GNUstep runtime and has back-ported most of the improvements from the Étoilé runtime to the GNUstep runtime.&lt;br /&gt;
&lt;br /&gt;
=== Which Compiler Should I Use? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
The history of Objective-C in GCC is somewhat complicated.  Originally, NeXT was forced to release the original Objective-C front end in order to comply with the GPL.  This code was not quite compatible with the GNU runtime and so it was modified.  NeXT did not adopt these modifications and so each release of GCC by NeXT, and then Apple, contained changes that needed back-porting to the main branch of GCC.&lt;br /&gt;
&lt;br /&gt;
For a long time, GCC was the only compiler that worked with GNUstep.  Unfortunately, the GCC team has not invested much effort in Objective-C in the last few years and it currently lags behind Apple's version by a significant amount.&lt;br /&gt;
&lt;br /&gt;
As of version 4.3, the Free Software Foundation changed the license of GCC to version 3 of the GNU General Public License.  This means that future versions will not be shipped by Apple.  OS X 10.6 ships with three compilers:&lt;br /&gt;
&lt;br /&gt;
* Apple's fork of GCC 4.2.1&lt;br /&gt;
* LLVM-GCC&lt;br /&gt;
* Clang&lt;br /&gt;
&lt;br /&gt;
The latter two use the Low-Level Virtual Machine ([http://llvm.org/ LLVM]) for code generation.  This is a BSD-licensed compiler infrastructure used by several other projects.  LLVM-GCC is a hybrid, using Apple's version of GCC for parsing and LLVM for optimisation and native code generation.  Clang is a new front end for LLVM.&lt;br /&gt;
&lt;br /&gt;
Currently, LLVM-GCC is based on Apple's GCC and so does not support the GNU runtime.  There is an effort underway to rewrite LLVM-GCC as a plugin for GCC 4.5, at which point it should support as much Objective-C as GCC currently does.&lt;br /&gt;
&lt;br /&gt;
Unlike GCC, Clang features a clean abstraction layer between the runtime-specific and runtime-agnostic parts of the compiler.  This means that adding support for new features on the GNU runtime is simply a matter of implementing the relevant methods in the CGObjCGNU class.  This means that Clang is able to support almost everything on the GNUstep runtime that it does on either of the Apple runtimes.&lt;br /&gt;
&lt;br /&gt;
=== Which Bits of Objective-C 2 Work? ===&lt;br /&gt;
---------------------------------&lt;br /&gt;
&lt;br /&gt;
The answer to this question depends on the combination of compiler and runtime library that you are using.  Currently, no features of Objective-C 2 work with GCC.&lt;br /&gt;
&lt;br /&gt;
If you compile with Clang then you have access to declared properties, fast enumeration, and blocks.  Note that both of these require some support from the runtime.  This must be provided either by the GNUstep runtime or by the ObjectiveC2 framework, which you can acquire from Étoilé subversion.  For blocks to work, you must also compile with -fblocks.&lt;br /&gt;
&lt;br /&gt;
If you link with the -fobjc-nonfragile-abi flag then you will use the new ABI.  This is only supported with the GNUstep runtime.  This adds:&lt;br /&gt;
&lt;br /&gt;
* Property introspection&lt;br /&gt;
* Introspection on optional protocol methods&lt;br /&gt;
* Non-fragile instance variables&lt;br /&gt;
* Forwarding proxy support&lt;br /&gt;
&lt;br /&gt;
Unlike Apple's non-fragile ABI, it is possible to mix code compiled for our fragile and non-fragile ABIs with some caveats.  Message sending from code compiled with the fragile ABI will not be able to take advantage of forwarding proxies.  If you subclass a non-fragile ABI class with a class compiled with the fragile ABI then you will not receive any benefits; the class compiled with the fragile ABI must be able to see all of the instance variables in the superclass at compile time or things will break.  Some benefits will be obtained the other way around, however.  A class compiled for the fragile ABI will always be able to access its own instance variables safely when the superclass changes, even if the superclass layout changes.  It will, however, only be able to safely access instance variables declared in superclasses safely if the superclass is also compiled with the non-fragile ABI or if the superclass instance variable layout does not change.&lt;br /&gt;
&lt;br /&gt;
=== Can I use Apple's Runtime APIs? ===&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
You not only can, but should!&lt;br /&gt;
&lt;br /&gt;
With OS X 10.5, Apple introduced a new set of APIs for interacting with the runtime.  These hid the implementation details - previously all public - behind a set of public functions, implemented on both the modern and legacy runtimes.&lt;br /&gt;
&lt;br /&gt;
These functions are supported by the GNUstep runtime and can also be used with the GCC runtime if you link against Étoilé's ObjectiveC2 framework.&lt;br /&gt;
&lt;br /&gt;
From release 1.20.0 of the base library onwards the new runtime APIs are built in to the GNUstep base library (the Étoilé ObjectiveC2 framework is incorporated into base and extended/improved) so that the new APIs can be used with both old and new runtimes.&lt;br /&gt;
&lt;br /&gt;
=== What About Garbage Collection? ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
GNUstep has supported garbage collection via the [http://www.hboehm.info/gc/ Boehm GC] for some years.  Efforts are underway to bring this to closer compatibility with Apple's new implementation.&lt;br /&gt;
&lt;br /&gt;
=== Where can I get it ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
You may obtain the code for the modern Objective-C runtime from subversion at the following&lt;br /&gt;
subversion branch:&lt;br /&gt;
&lt;br /&gt;
svn://svn.gna.org/svn/gnustep/libs/libobjc2/releases/1.7&lt;br /&gt;
&lt;br /&gt;
Alternatively, a tarball is available from:&lt;br /&gt;
&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.txz txz]&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.tar.bz2 bz2]&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.tgz tgz]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Objective-C_runtime&amp;diff=6844</id>
		<title>Objective-C runtime</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Objective-C_runtime&amp;diff=6844"/>
		<updated>2015-05-31T22:22:39Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: added links and removed html syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
The '''Objective-C runtime''' provides C functions and data structures required to execute an Objective C program. It is low-level code that makes your applications work. Every Objective-C program links to the runtime, and the runtime manages objects, looks up methods, and implements the features of Objective-C.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
The first Objective-C runtime was created by [[QuickHistory|NeXT]] in the 1980s for their implementation of Objective-C and NeXTSTEP. The GNU project rewrote it in 1992. This runtime was significantly modified in 1993 by Kresten Krab Thorup. Since then, there have been two runtimes evolving in parallel.&lt;br /&gt;
&lt;br /&gt;
When Jobs returned to Apple, he brought with him NeXTSTEP's code. The Obj-C runtime used in Apple's [[Mac OS X]] is inherited from NeXT. Apple has made many changes to it. The biggest change Apple has made is supporting [[ObjC2 FAQ|Objective-C 2.0]].&lt;br /&gt;
&lt;br /&gt;
The [http://etoileos.com/ Etoile] project maintained its own extension to the GNU runtime for a few years. This updated runtime added support for many of the features that Apple added. However, David Chisnall added all the features from the Etoile runtime into a framework that runs on top of the GNU runtime. This framework, &amp;lt;tt&amp;gt;ObjectiveC2.framework&amp;lt;/tt&amp;gt; obsoletes the Etoile runtime and makes it easier for regular GNUstep applications to use. [http://etoileos.com/news/archive/2009/09/10/1744/ The Étoilé Runtime is dead, long live the GNUstep runtime!]&lt;br /&gt;
&lt;br /&gt;
==Choosing a runtime==&lt;br /&gt;
* The GNU runtime supports everything needed by traditional Objective-C applications. Apple calls this Objective-C 1.0. Nothing special needs to be done for a GNUstep application to use this runtime.&lt;br /&gt;
* The Apple runtime from 10.0 to 10.4 is another runtime that supports Objective-C 1. Because this runtime is different from the GNUstep runtime, applications from Mac OS X will have to be re-compiled to run on GNUstep (they are not binary-compatible).&lt;br /&gt;
* In Mac OS X 10.5 Apple introduced many new features to the runtime under the name Objective-C 2.0. None of these features were added to the GNUstep runtime.&lt;br /&gt;
* The Etoile runtime added most of the features that Apple announced in Objective-C 2.0, but it was not possible for ordinary GNUstep applications to use. The Etoile runtime has been superseded by the ObjectiveC2 framework.&lt;br /&gt;
* The ObjectiveC2 framework relies on the GNU runtime for most features, yet adds new features on top. It is possible for ordinary GNUstep applications to link to this framework and get the benefits of Objective-C 2.0.&lt;br /&gt;
&lt;br /&gt;
Of course, the Apple runtime is only available on Apple operating systems ([[Darwin]] and [[Mac OS X]]).&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Gorm.app&amp;diff=6841</id>
		<title>Gorm.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Gorm.app&amp;diff=6841"/>
		<updated>2015-05-18T20:27:45Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: updated version number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = Gorm (''Graphical Object Relationship Modeller'') is meant to be the counter part to NeXT's [[Interface Builder]]. With Gorm designing tough and complex graphical interfaces for your applications can easy and quickly be done using drag &amp;amp; drop, powerful inspectors and teamwork with [[ProjectCenter]]. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://ftpmain.gnustep.org/pub/gnustep/dev-apps/gorm-1.2.20.tar.gz 1.2.20] |&lt;br /&gt;
&lt;br /&gt;
releasedate = June 2012 |&lt;br /&gt;
&lt;br /&gt;
license = GPL 3.0 |&lt;br /&gt;
&lt;br /&gt;
overview = Before NeXT Computer Inc. revolutionized software developement with its OpenStep API, a new way of designing graphical user interfaces was already introduced by NeXT at the beginning of the 90s. Its operating system NeXTstep featured Interface Builder, an application that for the first time allowed developers to quickly create nice user interfaces without having to code everything manually. Using drag &amp;amp; drop elements of windows such as buttons, sliders, textfields etc. were created and edited, then linked to functions and variables. Thus, Interface Builder helped developers to focus on the code for the actual functions without having to care about stuff not related to their project goal.&lt;br /&gt;
&lt;br /&gt;
Gorm allows developers to quickly create and edit graphical application interfaces using a whole lot of GUI elements: windows, menus, buttons, labels, sliders, tables, textfields, browsers, images, altert panels and more. Custom palettes can be dynamically loaded to add additional elements or functionality. |&lt;br /&gt;
&lt;br /&gt;
features = Currently Gorm gets extended with new elements and inspectors to get every common GUI object included in the standard palettes. Doing this is relatively easy now as all the inspectors are now created using Gorm itself.&lt;br /&gt;
:'''Please Note'''&lt;br /&gt;
:The recently added NIB compatibility is for 10.2.x and later nibs. Older typed stream nibs will need to be converted to 10.2.x nibs for use in Gorm. Older nibs will contain objects.nib, while newer ones will have keyedobjects.nib. If you have access to a Mac, the you can convert them. Please load them into InterfaceBuilder and save them again and they should convert. |&lt;br /&gt;
&lt;br /&gt;
maintainer = * [mailto:greg_casamento@yahoo.com Greg Casamento] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* [[Gorm Manual]]&lt;br /&gt;
* [[Gorm FAQ]]&lt;br /&gt;
* [[Developer Guides]]&lt;br /&gt;
* [http://www.gnustep.it/pierre-yves/index.html Using ProjectCenter &amp;amp; Gorm]&lt;br /&gt;
* [[ProjectCenter]]&lt;br /&gt;
* [[Gorm Installation On Windows]] |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Development_Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Developer_FAQ&amp;diff=6830</id>
		<title>Developer FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Developer_FAQ&amp;diff=6830"/>
		<updated>2015-03-30T13:46:47Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: corrected broken title normalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:FAQ]]&lt;br /&gt;
&lt;br /&gt;
Please send corrections to [mailto:gnustep-maintainer@gnu.org gnustep-maintainer@gnu.org]. Also look at the [[User FAQ]] for more user oriented questions.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
=== [[Installation]] ===&lt;br /&gt;
How to install GNUStep&lt;br /&gt;
=== Installation [[User FAQ#Troubleshooting|Troubleshooting]] ===&lt;br /&gt;
What to do when installation screws up.&lt;br /&gt;
=== [http://gnustep.made-it.com/Configuration/ Configuration] ===&lt;br /&gt;
What to do once GNUStep is installed.&lt;br /&gt;
&lt;br /&gt;
== Compatibility ==&lt;br /&gt;
&lt;br /&gt;
=== Is it easy to port OPENSTEP programs to GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
It is probably easy for simple programs. There are some portability tools to make this easier, or rewrite the Makefiles yourself. You will also have to translate the NIB files (if there are any) to GNUstep model files using the nib2gmodel program. See the [[Writing portable code#Porting from Cocoa or OPENSTEP (NS*) to GNUstep|portability]] page for details.&lt;br /&gt;
&lt;br /&gt;
=== How about porting between Cocoa and GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is constantly changing, much faster than GNUstep could hope to keep up. They have added extensions and new classes that aren't available in GNUstep yet. Plus there are some other issues. See the [[Writing portable code#Porting_from_Cocoa_or_OPENSTEP_.28NS.2A.29_to_GNUstep|portability]] page for details.&lt;br /&gt;
&lt;br /&gt;
=== Tools for porting ===&lt;br /&gt;
&lt;br /&gt;
While the programming interface should be almost transparent between systems (except for the unimplemented parts, of course), there are a variety of other files and tools that are necessary for porting programs:&lt;br /&gt;
&lt;br /&gt;
* '''nib2gmodel:''' This program coverts nib files from any system, such as Cocoa or OPENSTEP to a gmodel format file. Gmodel can be read directly by GNUstep or you can convert this to a more GNUstep-native gorm format (using the Gorm interface modeller).&lt;br /&gt;
* '''[[Renaissance]]:''' GNUstep Renaissance allows you to describe your user interfaces (that is, the windows in your application, and the buttons, boxes, textfields, etc in the windows) in simple and intuitive XML files, using an open, standard format describing the logic of the interface. It has a number of advantages over the proprietary nib format: portability, open standard, easy localization, themeability, and intelligent autolayout.&lt;br /&gt;
* '''[[Gorm]]:''' The equivalent of the Interface Builder in GNUstep. As of version 1.1.0 Gorm allows reading and writing of Mac OS 10.2 or later Cocoa NIB files. Please see http://lists.gnu.org/archive/html/discuss-gnustep/2006-09/msg00008.html.&lt;br /&gt;
* '''OpenStep2GNUConverter and nfmake:''' Two programs that allow you to convert PB files to GNUstep makefiles or compile a program on GNUstep directly from PB files. They probably work only for OPENSTEP systems and are a little out-of-date.&lt;br /&gt;
* '''[[StepTalk]]:''' A portable scripting environment that lets your do scripting in almost any language you like.&lt;br /&gt;
&lt;br /&gt;
=== Can I transfer archived data from GNUstep to Cocoa? ===&lt;br /&gt;
&lt;br /&gt;
Apple's archiving format is proprietary and not documented, so this poses a problem for anyone wanting to implement compatibility with it. However, even if we reverse engineered the format, there are enough differences between the class and ivar layouts to make this sort of compatibility difficult. Not to mention the fact that we would constantly have to keep up with the changes Apple made. Also Apple's archiving format, as far as we know, would not be compatible between different machines because of endiness issues, although GNUstep doesn't have this problem.&lt;br /&gt;
&lt;br /&gt;
The new keyed archiving using XML file formats is much more portable, and GNUstep is trying to maintain compatibility with Apple for this type of archiving.&lt;br /&gt;
&lt;br /&gt;
=== Do Distributed Objects work between GNUstep and Cocoa? ===&lt;br /&gt;
&lt;br /&gt;
See the answer to the previous question (on archive compatibility) for why this won't work either.&lt;br /&gt;
&lt;br /&gt;
=== Is there an Interface Builder for GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
There is an Interface Builder for GNUstep called [[Gorm]]. A lot of work has been put into it and it works very well. The project manager [[ProjectCenter]] is also available. There is also [[ProjectManager]].&lt;br /&gt;
&lt;br /&gt;
=== Can I use my original NIB files? ===&lt;br /&gt;
It is currently possible to use newer keyed archiving files which were created on Mac OS 10.2 or later.&lt;br /&gt;
&lt;br /&gt;
Older nibs, such as those from Mac OS 10.1 or from OPENSTEP which don't use keyed archiving aren't readable since Apple/NeXT never documented their nib format. These nibs must be translated into keyed nibs for use with GNUstep, if you have Mac OS 10.2 or later this is a simple matter of loading them into IB and saving them as keyed nibs. Alternatively, if you only have OPENSTEP you can use nib2gmodel to translate them into gmodel format.&lt;br /&gt;
&lt;br /&gt;
=== Can I use the hybrid &amp;quot;Objective-C++&amp;quot; ? ===&lt;br /&gt;
&lt;br /&gt;
Yes. As of release 4.1 the GNU C Compiler (GCC) supports [http://web.archive.org/web/20081231010709/http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/chapter_14_section_1.html Objective-C++].&lt;br /&gt;
&lt;br /&gt;
=== Is there a plan to support the Java/YellowBox bindings? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The GNustep Java library/bridge called [[JIGS]] is available now. JIGS is a free (LGPL) Java Interface for GNUstep; it can automatically wrap Objective-C libraries based on GNUstep, making them accessible directly to the Java programmer as if they were Java libraries. As a side effect, it is also possible to use the whole engine in the reverse way: JIGS provides a high level API to allow Objective-C programmers to start java virtual machines inside GNUstep Objective-C code and access java objects in the java virtual machine transparently, as if they were objective-C objects. &lt;br /&gt;
&lt;br /&gt;
=== What if I compile GNUstep under OPENSTEP/MacOS X? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep uses the X-windows display postscript extension. The interface to that is not the same as the interface to the OPENSTEP/MacOS X windows server. While someone could write a backend library to provide the interface, nobody has bothered to date.&lt;br /&gt;
&lt;br /&gt;
You can, however, use a GNUstep program with an X11 server running on MacOS X.&lt;br /&gt;
&lt;br /&gt;
=== Is the Objective-C API for GTK related? ===&lt;br /&gt;
&lt;br /&gt;
No. GNUstep applications provide their GUI via the OpenStep API, which provides fully object-oriented access to GUI manipulation.&lt;br /&gt;
&lt;br /&gt;
The object-oriented nature of the libraries and language make it much easier for new users to create their own subclasses rather than simply using the supplied widgets as in other frameworks. &lt;br /&gt;
&lt;br /&gt;
=== How about implementing parts of the Application Kit with GTK? ===&lt;br /&gt;
&lt;br /&gt;
Yes and No - The GNUstep architecture provides a single, platform-independent, API for handling all aspects of GUI interaction (implemented in the gstep-gui library), with a backend architecture that permits you to have different display models (display postscript, X-windows, win32, berlin ...) while letting you use the same code for printing as for displaying. Use of GTK in the frontend gui library would remove some of those advantages without adding any.&lt;br /&gt;
&lt;br /&gt;
That being said, a backend library could be implemented using gtk if anyone wanted to do so. Since the frontend library handles most of the work involved in implementing the OpenStep API, the backend is a relatively thin layer and the advantages of GTK over direct xlib or win32 calls is likely to be minimal. If/when GTK is ported to more systems, a backend written using it could be a valuable asset - volunteers are, as always, welcome. &lt;br /&gt;
&lt;br /&gt;
== Compiling and Developing ==&lt;br /&gt;
&lt;br /&gt;
=== How can I get started programming? ===&lt;br /&gt;
&lt;br /&gt;
Good question. Please refer to the tutorials for some suggestions. Also look at Apple's documentation [http://www.gnu.org/software/gnustep/resources/documentation/ (pointers in the Resources section on the GNUstep web site.)]&lt;br /&gt;
&lt;br /&gt;
=== Does GDB support Objective-C? ===&lt;br /&gt;
&lt;br /&gt;
As of GDB 6.0, debugging of Objective-C code is supported.&lt;br /&gt;
&lt;br /&gt;
== How can I help with GNUstep? ==&lt;br /&gt;
&lt;br /&gt;
The first task is probably just to get familiar with it, then there's a lot you can do. Write library code or applications to get a feel for it. See the [[GNUstepWiki:Community_Portal|community portal]] for an overview of what a GNUstep developer should know.&lt;br /&gt;
&lt;br /&gt;
Another simple way to get familiar with GNUstep is to help write documentation. A lot of documentation is written in the source code itself, and autogenerated. You could also improve on several of the manuals that explain the overall usage of GNUstep. &lt;br /&gt;
&lt;br /&gt;
Here are the next steps: &lt;br /&gt;
* Start off by fixing [http://savannah.gnu.org/bugs/?group_id=99 bugs]&lt;br /&gt;
* Look at the [[#How Do I Update the Task List?|list of tasks]] for longer term work and check [[Ideas]] for other ideas.&lt;br /&gt;
* For a bigger challenge, finish off part of the [[Roadmap]]&lt;br /&gt;
&lt;br /&gt;
=== How do I start writing applications? ===&lt;br /&gt;
&lt;br /&gt;
You can either look at the links on the GNUstep website for applications that have been started, and email their owners to volunteer to help, or you can start your own project.&lt;br /&gt;
&lt;br /&gt;
Let people know what you are doing. Break your project up into the smallest units you can. Feed back frequent updates to the maintainers. Ask questions in the discussion mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Helping develop GNUstep === &lt;br /&gt;
&lt;br /&gt;
There is plenty of unimplemented stuff in the gui library and backend libraries that volunteers can work on, just browse through the code and see if it conforms to the documentation.&lt;br /&gt;
&lt;br /&gt;
Do remember that any changes beyond a few lines of code (or documentation) require a disclaimer or copyright assignment to the Free Software Foundation before they can be incorporated into the project. [[#How_do_I_assign_my_contribution.3F|See below]].&lt;br /&gt;
&lt;br /&gt;
Don't start with large-scale reorganization of anything -- instead, get a general idea in mind of what you want to do, and proceed as much as possible with incremental changes that don't break anything - that way you can make those incremental changes available to the rest of the community at frequent intervals.&lt;br /&gt;
&lt;br /&gt;
Don't be afraid to give up - there is no shame in finding out that you have taken on too large or complex a project. It's much better to 'resign' and take on a smaller job than to just stop without telling anyone.&lt;br /&gt;
&lt;br /&gt;
Please document the code you add or change (using autogsdoc comments that begin with a slash and two asterisks) and maybe write a testcase for it. But PLEASE, do not copy from the Apple documentation or any other copyrighted documentation. &lt;br /&gt;
&lt;br /&gt;
Specific tasks are noted in the [http://www.gnu.org/software/gnustep/developers/ developers section on the GNUstep website].&lt;br /&gt;
&lt;br /&gt;
=== Helping document GNUstep ===&lt;br /&gt;
&lt;br /&gt;
All class documentation is written directly in the source code itself and translated using the autogsdoc program. See the source code and documentation for autogsdoc for information on documenting the classes.&lt;br /&gt;
&lt;br /&gt;
Newcomers could write documentation for individual classes by comparing the OpenStep specification, the MacOS X documentation, and the GNUstep source. Documentation should clearly note where individual methods are specific to OpenStep, MacOS X or are GNustep extensions.&lt;br /&gt;
&lt;br /&gt;
More experienced people could write documentation on general programming topics, and tutorials for new users. Contributors to the wiki are welcome!&lt;br /&gt;
&lt;br /&gt;
Anyone willing to write documentation, either tutorials for using GNUstep, or reference documentation for individual classes, should either write it in gsdoc or as plain ascii text for someone else to format into gsdoc.&lt;br /&gt;
&lt;br /&gt;
GNUstep documentation should have copyright assigned to the Free Software Foundation.&lt;br /&gt;
&lt;br /&gt;
=== How do I assign my Contribution? ===&lt;br /&gt;
&lt;br /&gt;
Everyone who contributes more than 20 lines of code or so needs to sign a copyright assignment so that the FSF can have legal control of the copyright. This makes it easier to defend against any copyright infringement suits. Contact the GNUstep maintainer for instructions on how to do this or download and fill out the [http://www.gnustep.org/resources/request-assign.future form (instructions are included)].&lt;br /&gt;
&lt;br /&gt;
=== How do I update the task list? ===&lt;br /&gt;
&lt;br /&gt;
The [http://savannah.gnu.org/task/?group=gnustep task list] is supposed to tell people what jobs are waiting to be done. Feel free to add to it or update the tasks that are there (you need to create a login for yourself first).&lt;br /&gt;
&lt;br /&gt;
One job of major importance that pretty much anyone can do is to look for jobs to add to the task list. In the case of methods from the OpenStep specification or the MacOS X documentation not being present in the GNUstep libraries, it is also helpful to add the method prototypes to the library header files.&lt;br /&gt;
&lt;br /&gt;
Send any changes or additions to [mailto:bug-gnustep@gnu.org bug-gnustep@gnu.org].&lt;br /&gt;
&lt;br /&gt;
A beginner can look through the MacOS X documentation, the OpenStep specification and the GNUstep source and contribute task items.&lt;br /&gt;
&lt;br /&gt;
If a class or method is&lt;br /&gt;
&lt;br /&gt;
* in MacOS X and OpenStep but is not in GNUstep, it's a high priority TODO and should at least be added to the GNUstep headers and a dummy version added to the source with a FIXME comment.&lt;br /&gt;
* in MacOS X but not OpenStep or GNUstep, it's a low priority TODO. It should be added to the GNUstep headers bracketed in #ifndef STRICT_OPENSTEP&lt;br /&gt;
* in OpenStep but not in MacOS X or GNUstep, it's a low priority TODO. It should be added to the GNUstep headers bracketed in #ifndef STRICT_MACOS_X&lt;br /&gt;
&lt;br /&gt;
There are a couple of people working on this already, so it's a good idea to get in touch with Adam or Richard to coordinate efforts.&lt;br /&gt;
&lt;br /&gt;
=== How do I start writing tests? ===&lt;br /&gt;
&lt;br /&gt;
You can write testcases - where the libraries fail tests, you could either fix the problem, or add it to the task list.&lt;br /&gt;
&lt;br /&gt;
To write testcases, you need to use svn to install the latest GNUstep source code you can find. Then checkout the 'gnustep/tools/testsuite' module from svn.&lt;br /&gt;
&lt;br /&gt;
=== How can I help with the GNUstep website? ===&lt;br /&gt;
&lt;br /&gt;
'''Please consider contributing to this Wiki as opposed to the website.'''&lt;br /&gt;
Contact [mailto:fedor@gnu.org Adam Fedor], the maintainer.&lt;br /&gt;
&lt;br /&gt;
The GNUstep website is kept as a CVS module, but the largest portions of it (the FAQ and the Documentation) are actually generated from files in the individual GNUstep packages.&lt;br /&gt;
&lt;br /&gt;
If you want to update the FAQ or documentation - grab the latest snapshot of the GNUstep core you can find, update it from the svn repository, and work with the contents of the appropriate documentation directory.&lt;br /&gt;
&lt;br /&gt;
If you want to work on other parts of the website, you can grab a copy of the website via anonymous CVS. See http://savannah.gnu.org/cvs/?group_id=99 for instructions on how to do that.&lt;br /&gt;
&lt;br /&gt;
The main task with the website is to figure out which bits are out-of-date (or wrong) and update/mark-as-outdated as required.&lt;br /&gt;
&lt;br /&gt;
== GNU Objective-C Compiler and Runtime ==&lt;br /&gt;
&lt;br /&gt;
=== What is the Objective-C Runtime? ===&lt;br /&gt;
&lt;br /&gt;
The [[Objective-C runtime]] Library provides C functions and data structures required to execute an Objective C program.&lt;br /&gt;
&lt;br /&gt;
The GNU Objective-C Runtime Library offers everything NeXT's runtime does, including Categories, Protocols, `+poseAs:', thread-safety, class initialization on demand, delayed loading of classes, and initialization of static instances (such as @&amp;quot;&amp;quot;-style string literals).&lt;br /&gt;
&lt;br /&gt;
It also has several differences over NeXT's implementation:&lt;br /&gt;
&lt;br /&gt;
* GNU's runtime provides &amp;quot;selector-types&amp;quot; along with each selector; NeXT's does not. A selector-type is a string that describes the C variable types for the method's return and argument values. Among other uses, selector-types are extremely helpful for fast distributed objects implementations (see [[#GNUstep Base Library|GNUstep Base Library Section]], below).&lt;br /&gt;
&lt;br /&gt;
* Many of the GNU functions have different names than their corresponding NeXT functions; the GNU names conform to the GNU coding standards. The GNUstep base library contains a compatibility header that works with both runtimes. You should use functions there or use OpenStep Foundation methods/functions instead of the basic runtime functions so that your code can run with either system.&lt;br /&gt;
&lt;br /&gt;
Apple has recently added new functionality to their runtime, including built-in exception handling, etc. Hopefully these will be ported to the GNU runtime in the future.&lt;br /&gt;
&lt;br /&gt;
=== Where can I get a gcc compiler with Objective-C support? ===&lt;br /&gt;
*TBA.&lt;br /&gt;
=== How I can compile my own gcc compiler with Objective-C support? ===&lt;br /&gt;
* TBA.&lt;br /&gt;
=== How I check if my gcc compiler has good Objective-C environment? ===&lt;br /&gt;
* TBA.&lt;br /&gt;
&lt;br /&gt;
== GNUstep Base Library ==&lt;br /&gt;
&lt;br /&gt;
=== What is the GNUstep Base Library? ===&lt;br /&gt;
&lt;br /&gt;
The GNUstep Base Library is a library of general-purpose, non-graphical Objective C objects. For example, it includes classes for strings, object collections, byte streams, typed coders, invocations, notifications, notification dispatchers, moments in time, network ports, remote object messaging support (distributed objects), event loops etc.&lt;br /&gt;
&lt;br /&gt;
It provides functionality that aims to implement the non-graphical portion of the OpenStep standard (the Foundation library).&lt;br /&gt;
&lt;br /&gt;
=== What is its current state of development? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep base is currently stable and, to the best of our knowledge, implements all of the OpenStep functionality (except for a few classes that we feel are not useful). It also implements most all of the new Cocoa classes. However we do some things, like scripting, differently, so we don't implement all the Cocoa classes.&lt;br /&gt;
&lt;br /&gt;
=== What are the features of GNU Distributed Objects? ===&lt;br /&gt;
&lt;br /&gt;
GNU Distributed Objects has many of the features of other distributed objects implementations, but, since it is free software, it can be ported to platforms for which other distributed objects implementations are not available.&lt;br /&gt;
&lt;br /&gt;
NOTE: The GNU distributed object facilities have the same ease-of-use as Apple's; be warned, however, that they are not compatible with each other. They have different class hierarchies, different instance variables, different method names, different implementation strategies and different network message formats. You cannot communicate with a Apple NSConnection using a GNU NSConnection.&lt;br /&gt;
Here are some differences between GNU distributed objects and Apple's distributed objects: Apple NSDistantObject asks it's remote target for the method encoding types and caches the results; GNU NSDistantObject gets the types directly from the local GNU &amp;quot;typed selector&amp;quot; mechanism if the information is known locally and only queries the remote target or caching encoding types when using a method that is not known to the local process. The NSProxy for the remote root object always has name and, once set, you cannot change the root object of a NSConnection; the GNU Proxy for the remote root object has a target address value just like all other Proxy's, and you can change the root object as many times as you like. &lt;br /&gt;
&lt;br /&gt;
== GNUstep GUI Library ==&lt;br /&gt;
&lt;br /&gt;
=== What is the GUI Library? ===&lt;br /&gt;
&lt;br /&gt;
The GNUstep GUI Library is a library of objects useful for writing graphical applications. For example, it includes classes for drawing and manipulating graphics objects on the screen: windows, menus, buttons, sliders, text fields, and events. There are also many peripheral classes that offer operating-system-independent interfaces to images, cursors, colors, fonts, pasteboards, printing. There are also workspace support classes such as data links, open/save panels, context-dependent help, spell checking.&lt;br /&gt;
&lt;br /&gt;
It provides functionality that aims to implement the `AppKit' portion of the OpenStep standard. However the implementation has been written to take advantage of GNUstep enhancements wherever possible.&lt;br /&gt;
&lt;br /&gt;
=== Explain the organization of the front- and back-ends ===&lt;br /&gt;
&lt;br /&gt;
The GNUstep GUI Library is divided into a front- and back-end. The front-end contains the majority of implementation, but leaves out the low-level drawing and event code. A back-end can override whatever methods necessary in order to implement low-level drawing event receiving. Different back-ends will make GNUstep available on various platforms. The default GNU back-end will run on top of X-Window. Other back-ends could allow GNUstep to run on OpenGL and WIN32 graphics/event platforms. Much work will be saved by this clean separation between front- and back-end, because it allows different platforms to share the large amount of front-end code.&lt;br /&gt;
&lt;br /&gt;
=== What is the current state of development of the front-end? ===&lt;br /&gt;
&lt;br /&gt;
Many of the classes are well implemented, if not thoroughly tested. See the GNUstep web sites and read status information contained in the distribution for the most up-to-date information.&lt;br /&gt;
&lt;br /&gt;
=== What Is the Current State of Development of the back-ends? ===&lt;br /&gt;
&lt;br /&gt;
There are several backends currently available:&lt;br /&gt;
&lt;br /&gt;
* '''xlib:''' This backend runs on X11 and uses standard xlib calls for implementing drawing. It works well, but is limited in many areas due to the limitations of xlib drawing. &lt;br /&gt;
* '''art:''' This is a very good backend that draws using the libart package and freetype with near PostScript quality and functionality.&lt;br /&gt;
* '''w32:''' This backend works on Windows and uses basic Windows drawing &lt;br /&gt;
* '''cairo:''' A backend based on the cairo graphics library. It is the standard backend (as long as the required libraries are installed).&lt;br /&gt;
&lt;br /&gt;
== GNUstep DisplayGhostScript Server ==&lt;br /&gt;
&lt;br /&gt;
=== What is the Display Ghostscript Server? ===&lt;br /&gt;
&lt;br /&gt;
It is a free implementation of a Display PostScript server based on the GNU Ghostscript program developed by Aladdin Enterprises and now owned by artofcode LLC.&lt;br /&gt;
&lt;br /&gt;
At one point, GNUstep was using this for display purposes. However the development of DGS has stopped as it is too difficult to maintain and no one wanted to work on it. Now we are using other means of drawing.&lt;br /&gt;
&lt;br /&gt;
=== What is its current state of development? ===&lt;br /&gt;
&lt;br /&gt;
GNU contracted with Aladdin Enterprises to add some key features to GNU Ghostscript so it could be used as a DPS server. This work has mostly been done, although Aladdin did not completely finish the work that they were contracted for. (Because the work took longer than specified and was not completed, Aladdin agreed to waive approximately $10,000 in promised fees for the work that was actually done and delivered.) DGS works fairly well with a single context. Alpha channel and compositing doesn't work.&lt;br /&gt;
&lt;br /&gt;
Further development on DGS has been abandoned in favor of libraries such as Cairo and libart.&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship between the Display Ghostscript Server and X-Window? ===&lt;br /&gt;
&lt;br /&gt;
Display Ghostscript runs on top of X-Window.&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GNUstepIsNotWindowMaker&amp;diff=6819</id>
		<title>GNUstepIsNotWindowMaker</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GNUstepIsNotWindowMaker&amp;diff=6819"/>
		<updated>2015-03-05T13:35:04Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== GNUstep is NOT [[Window Maker]] ===&lt;br /&gt;
In order to prevent misinformation ...&lt;br /&gt;
&lt;br /&gt;
=== What is GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
[[GNUstep]] is an advanced, cross-platform, object oriented environment composed of frameworks, tools and servers (daemons). It is very close to the [http://developer.apple.com/cocoa/ Cocoa] frameworks from [http://www.apple.com Apple] and tries to maintain compatibility with Cocoa wherever it is desired and possible. The roots of the GNUstep application interface are same as the roots of Cocoa: NeXT and [[OpenStep]].&lt;br /&gt;
&lt;br /&gt;
=== GNUstep is NOT a window manager ===&lt;br /&gt;
&lt;br /&gt;
Why is this confusion floating around? [[Window Maker]] is the most often-used NeXT-looking application on a non-NeXT system. Window Maker also uses a derivation of the GNUstep logo. Window Maker is the official GNUstep window manager, but GNUstep applications also work with any window manager, although you're most likely, currently, to have a more cohesive desktop experience if you use the two in conjunction.&lt;br /&gt;
&lt;br /&gt;
=== Why is GNUstep using Window Maker's icon? ===&lt;br /&gt;
&lt;br /&gt;
It's not. Window Maker is actually using ours. The GNUstep yin/yang icon was created by Ayis Theseas Pyrros for GNUstep, not for Window Maker.&lt;br /&gt;
&lt;br /&gt;
=== Relation to [[Window Maker]] ===&lt;br /&gt;
&lt;br /&gt;
[[Window Maker]] is a window manager, not a workspace manager nor a file browser. It is nothing more.&lt;br /&gt;
Window Maker and GNUstep share almost no libraries or functionality. Window Maker is written in C, and GNUstep is written in [[Objective-C]]. Window Maker is not GNUstep itself, although it is a part of the project.&lt;br /&gt;
&lt;br /&gt;
==== The importance of this difference ====&lt;br /&gt;
&lt;br /&gt;
In many people's minds the environment and the frameworks used to create programs are merged. [[Window Maker]] can be used with QT or GNOME apps, just as easily as it can be used with GNUstep. Similarly GNUstep applications can run using KWM (KDE's preferred Window Manager) or Enlightenment (GNOME's old, old preferred Window Manager -- since then they went through Sawfish and now Metacity). This misconception can make one lose sight of the powerful programming frameworks underneath.&lt;br /&gt;
&lt;br /&gt;
== Please Note ==&lt;br /&gt;
&lt;br /&gt;
[[Window Maker]] is an excellent window manager and none of the preceding should be construed to imply otherwise.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GNUstepIsNotWindowMaker&amp;diff=6816</id>
		<title>GNUstepIsNotWindowMaker</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GNUstepIsNotWindowMaker&amp;diff=6816"/>
		<updated>2015-02-26T22:17:11Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: Reorganized to make more clear&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== GNUstep is NOT [[Window Maker]] ===&lt;br /&gt;
In order to prevent misinformation ...&lt;br /&gt;
&lt;br /&gt;
=== What is GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
[[GNUstep]] is an advanced, cross-platform, object oriented environment composed of frameworks, tools and servers (daemons). It is very close to the [http://developer.apple.com/cocoa/ Cocoa] frameworks from [http://www.apple.com Apple] and tries to maintain compatibility with Cocoa wherever it is desired and possible. The roots of the GNUstep application interface are same as the roots of Cocoa: NeXT and [[OpenStep]].&lt;br /&gt;
&lt;br /&gt;
=== GNUstep is NOT a Window Manager ===&lt;br /&gt;
&lt;br /&gt;
Why is this confusion floating around? [[Window Maker]] is the most often-used NeXT-looking application on a non-NeXT system. Window Maker also uses a derivation of the GNUstep logo. Window Maker is the official GNUstep window manager, but GNUstep applications also work with any window manager, although you're most likely, currently, to have a more cohesive desktop experience if you use the two in conjunction.&lt;br /&gt;
&lt;br /&gt;
=== Why is GNUstep Using Window Maker's Icon? ===&lt;br /&gt;
&lt;br /&gt;
It's not. Window Maker is actually using ours. The GNUstep yin/yang icon was created by Ayis Theseas Pyrros for GNUstep, not for Window Maker.&lt;br /&gt;
&lt;br /&gt;
=== Relation to [[Window Maker]] ===&lt;br /&gt;
&lt;br /&gt;
[[Window Maker]] is a window manager, not a workspace manager nor a file browser. It is nothing more.&lt;br /&gt;
Window Maker and GNUstep share almost no libraries or functionality. Window Maker is written in C, and GNUstep is written in [[Objective-C]]. Window Maker is not GNUstep itself, although it is a part of the project.&lt;br /&gt;
&lt;br /&gt;
=== The Importance of This Difference ===&lt;br /&gt;
&lt;br /&gt;
In many people's minds the environment and the frameworks used to create programs are merged. [[Window Maker]] can be used with QT or GNOME apps, just as easily as it can be used with GNUstep. Similarly GNUstep applications can run using KWM (KDE's preferred Window Manager) or Enlightenment (GNOME's old, old preferred Window Manager -- since then they went through Sawfish and now Metacity). This misconception can make one lose sight of the powerful programming frameworks underneath.&lt;br /&gt;
&lt;br /&gt;
=== Please Note ===&lt;br /&gt;
&lt;br /&gt;
[[Window Maker]] is an excellent window manager and none of the preceding should be construed to imply otherwise.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=User_FAQ&amp;diff=6815</id>
		<title>User FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=User_FAQ&amp;diff=6815"/>
		<updated>2015-02-26T22:15:55Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GNUstep General Information ==&lt;br /&gt;
&lt;br /&gt;
=== What is GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep is the Free Software Foundation's effort to implement Apple, Inc's (formerly NeXT Software, Inc.'s)  [[Cocoa]] APIs (formerly the [[OpenStep]] Standard). Also we are building developer and user applications based on this standard which may be used to form a complete desktop experience. For more details, take a look at the [[Introduction to GNUstep|introduction]].&lt;br /&gt;
&lt;br /&gt;
=== What is Cocoa? ===&lt;br /&gt;
&lt;br /&gt;
[[Cocoa]] is an Application Programming Interface (API) for creating applications using the Objective-C language. It was published by Apple, Inc.(Formerly NeXT Software, Inc.).&lt;br /&gt;
&lt;br /&gt;
Cocoa consists of three parts: the `Foundation Kit', a library of non-graphical objects; the `Application Kit', a library of objects useful in creating graphical applications; and the Quartz display system.&lt;br /&gt;
&lt;br /&gt;
=== What platforms does GNUstep run on? ===&lt;br /&gt;
&lt;br /&gt;
See the list of [[Platform compatibility|supported platforms]] for information on what machines GNUstep builds on and what the status of the ports is. GNUstep can be ported to any other UNIX system where current gcc compilers and gdb debugger work. &lt;br /&gt;
&lt;br /&gt;
=== Does GNUstep run on Windows? ===&lt;br /&gt;
&lt;br /&gt;
The primary targets for GNUstep are free UNIX system-based platforms such as GNU/Linux and FreeBSD.&lt;br /&gt;
&lt;br /&gt;
That being said, the whole environment has been ported to [http://www.mingw.org MinGW environment]&lt;br /&gt;
and the non-gui libraries are reported to work well.&lt;br /&gt;
&lt;br /&gt;
The GUI library uses the [[Backend|Cairo Backend]] library to work under Windows. The backend library is a thin layer that converts the GNUstep methods to handle drawing of GUI elements to calls to the Windows API.&lt;br /&gt;
&lt;br /&gt;
GNUstep also has a theme which lets it use native windows widgets wherever possible so it can better blend into the Windows environment.&lt;br /&gt;
&lt;br /&gt;
=== What is GNUstep's position towards KDE and the GNOME project? ===  &lt;br /&gt;
&lt;br /&gt;
You can use GNUstep with GNOME and/or KDE (See [[IconManager.app]]). GNUstep displays on top of X11. You can still do programming in C (since Objective-C is just a superset of C), and if you're using gcc 4.1 or later, you can [http://web.archive.org/web/20081231010709/http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/chapter_14_section_1.html mix C++ and Objective-C code in the same file].&lt;br /&gt;
&lt;br /&gt;
GNUstep, is much more than a window manager or desktop environment. It frees you to develop cross-platform applications without the work of developing an OS independent framework from scratch. It gives you lots of basic functionality, from font panels to Unicode strings to distributed objects.&lt;br /&gt;
&lt;br /&gt;
=== How can I get GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
Many distributions include packaged versions of GNUstep (Debian, etc.). To compile from scratch, download the GNUstep Startup package or take a look at the [[Platform compatibility]] list. Get the latest releases from [ftp://ftp.gnustep.org/pub/gnustep/core FTP].&lt;br /&gt;
&lt;br /&gt;
=== How do you run GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
You are presumably under the misapprehension that GNUstep is some sort of program or window manager.  It isn't!  GNUstep is a whole load of things -- primarily a set of libraries for developing software.  At present, it's those libraries, plus various command-line based support tools and service providing daemons, plus various GUI development tools, a GUI desktop/workspace application, etc.  At no stage will you ever 'run' GNUstep -- you will run applications and tools and will use it's services. At some point you may well find packages distributed as 'GNUstep' systems in the way that you get 'GNU/Linux' systems packaged today. For instance, look at the [[GNUstep Live CD]].&lt;br /&gt;
&lt;br /&gt;
If you want to see a sample GUI application running you need to build GNUstep and look at the example applications in the [http://www.gnu.org/software/gnustep/experience/examples.html gnustep-examples] package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app' or 'openapp Ink.app'&lt;br /&gt;
&lt;br /&gt;
For the best look, use Window Maker (preferred GNUstep window manager) as your window manager. In others desktops (that have its how window manager) you can use [[IconManager.app]]&lt;br /&gt;
&lt;br /&gt;
=== Is there a web site? ===&lt;br /&gt;
&lt;br /&gt;
See [http://www.gnustep.org/ GNUstep Website] and [[Main_Page | GNUstep Wiki]].&lt;br /&gt;
&lt;br /&gt;
=== When is GNUstep intended to be available? ===&lt;br /&gt;
&lt;br /&gt;
It's usable now. Major releases are made about every six months. However, if you are a serious developer, it's probably best to use the latest snapshots.&lt;br /&gt;
&lt;br /&gt;
=== What is usable? ===   &lt;br /&gt;
&lt;br /&gt;
Most of GNUstep is quite usable and there are many complex applications that work well. However, GNUstep does not completely track the latest changes that Apple makes to their interface and there are still some parts that need some work.  This means many applications will run quite well. Applications that require very complex text handling and some unusual features and/or some of the latest additions to Cocoa may not work as well. See the [[#Compatibility and Layout|Compatibility and Layout]] section for more information.&lt;br /&gt;
&lt;br /&gt;
== Compiling and Installing ==&lt;br /&gt;
&lt;br /&gt;
=== How do I compile GNUstep on my machine? ===&lt;br /&gt;
&lt;br /&gt;
Read the file 'GNUstep-HOWTO', which comes with the GNUstep distribution (gnustep-make), and also is available separately on the GNUstep web site. To check beforehand, take a look at the [[Platform compatibility]] list.&lt;br /&gt;
NB. gnustep-base-1.23.0 is the last release which supports pre gcc-4.0.0 compilers.  For later releases you will want to ensure you have a more recent Objective-C compiler.&lt;br /&gt;
&lt;br /&gt;
=== Are there any precompiled packages available? ===&lt;br /&gt;
&lt;br /&gt;
Check the [http://www.gnustep.org/resources/sources.html Download Section] for links to RPMs, Debian packages, and BSD ports. There are also Windows installers, Mac OS X binaries and others.&lt;br /&gt;
&lt;br /&gt;
=== How do I start the applications I just installed? ===&lt;br /&gt;
&lt;br /&gt;
First, read [http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto_4.html#SEC7 GNUstep Howto] to make sure you have set up your environment correctly. Then from a terminal enter:&lt;br /&gt;
&lt;br /&gt;
 openapp Application.app&lt;br /&gt;
&lt;br /&gt;
=== What are these type and size warnings? ===&lt;br /&gt;
&lt;br /&gt;
These warnings:&lt;br /&gt;
  /usr/bin/ld: warning: type and size of dynamic symbol&lt;br /&gt;
  `__objc_class_name_NSConstantString' are not defined&lt;br /&gt;
are a common occurence and are due to a mismatch between the gcc compiler and the ld linker. They don't do any harm so they can be safely ignored. They have been fixed in the 3.1 version of the GCC compiler.&lt;br /&gt;
&lt;br /&gt;
=== What are these import warnings? ===  &lt;br /&gt;
&lt;br /&gt;
Do you get this obnoxious warning whenever you compile an application, tool, or Objective-C program:&lt;br /&gt;
  warning: using `#import' is not recommended&lt;br /&gt;
  [...]&lt;br /&gt;
Up until version 3.4 of the GCC compiler, the #import directive was improperly implemented. As a result, the compiler automatically emitted a warning whenever the #import directive was used. As of gcc 3.4, this problem has been fixed, so presumably, this warning is no longer emitted when code is compiled. If you are using an earlier compiler, you can suppress these warnings by adding -Wno-import to your CPPFLAGS.&lt;br /&gt;
&lt;br /&gt;
== Compatibility and Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
You can't run these programs on GNUstep, but if you have the source code for the programs, you should be able to port them to GNUstep and compile them. Whether or not you will be able to run them depends on how complete GNUstep is at the time.&lt;br /&gt;
&lt;br /&gt;
=== Is GNUstep following changes to OpenStep and Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Yes, gnustep-base already contains the documented changes in the Foundation library. GNUstep aims to be compatible with both the OpenStep specification and with Mac OS X. It should be easy to write an application that compiles cleanly under both GNUstep and Cocoa.  GNUstep can be expected to support the OSX 10.4 version of the Cocoa APIs (we consider it a bug if it does not), but also actually supports many APIs from OSX 10.5 and later (contributions of methods from these later versions are very welcome).&lt;br /&gt;
&lt;br /&gt;
=== Do we have to have the NEXTSTEP look and feel? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep is aiming for something like the NEXTSTEP 3.3 look and feel. Although we don't want to force anyone into this, a lot of the power and ease of use comes from this feel. The look of GNUstep is something different -- buttons and other widgets can look different but still act the same way. We hope to implement themes which will allow this.&lt;br /&gt;
&lt;br /&gt;
For a different desktop feel please see [[Themability]].&lt;br /&gt;
&lt;br /&gt;
=== What's up with the directory structure? ===&lt;br /&gt;
&lt;br /&gt;
First of all, GNUstep uses a slightly different directory structure than NEXTSTEP or Mac OS X. Part of this is historical, part is because we can't do things the same way (see the section [[User FAQ#Why not use framework bundles?|Why not use framework bundles]]). Although currently the structure is very similar to the one used in Mac OS X.&lt;br /&gt;
&lt;br /&gt;
It's also possible to configure GNUstep run using the standard FHS directory structure used under GNU/Linux and other unices so that it blends better in the host environment.&lt;br /&gt;
&lt;br /&gt;
=== Why not use framework bundles? ===  &lt;br /&gt;
&lt;br /&gt;
Framework bundles are much more difficult to port and to use, and are very unnatural on a UNIX system; extremely unnatural on Windows. In a framework bundle, the shared dynamic library is inside a framework wrapper directory. Because of this, the dynamic linker can't find it.&lt;br /&gt;
&lt;br /&gt;
We have frameworks, so how do we work around that? Well, we create symbolic links from a directory inside the dynamic linker path into the framework, which work, but then you can't move the framework anywhere else on the system, otherwise you break the link, such that nothing will find the framework any longer! On systems without symbolic links, like Windows, we can't even do this! We have to copy the library from the framework into the dynamic linker path, but that is simply a shared library then! Absolutely no difference. You put the dynamic library in a system directory in the dynamic linker path, and associate with that library a resource directory. OpenStep for Windows did that, and still called them frameworks. So we can do the same, and call our libraries frameworks.&lt;br /&gt;
&lt;br /&gt;
Shared libraries are all in a flat directory where the dynamic linker can easily find them. This is how it works on Unixoids, Windows and probably most other systems. The OpenStep API requires us to provide some stuff for frameworks, like creating and registering a framework object automatically each time a framework is used (linked at runtime, or linked into the app), and attaching to it the list of classes inside the framework, which are not particularly trivial to implement and might make trouble when porting, as they depend on playing with the linker and the object file format. However, shared libraries are handled by the operating system for us, so we never have to use these facilities.&lt;br /&gt;
&lt;br /&gt;
It's easier for Apple's Mac OS X. They can modify the system linker, compiler, the system dynamical linker as they please, because they have full control over the platform these run on. They can modify the system to support frameworks natively. GNUstep, however, is meant to run on many different platforms, platforms which we don't control (Windows, Sun Solaris, Darwin, GNU/Linux, UNIX system variants) and which have different linkers and do not support frameworks natively. On some systems it's difficult to just load a bundle or compile a shared library!&lt;br /&gt;
&lt;br /&gt;
So building the core libraries as 'libraries' means that it's much easier to port them, and it's much more difficult to break them. Sure, frameworks have a bundle of resources associated with it -- but we can very easily associate a bundle of resource with a shared library, no reason why not. We are doing it. So please note that GNUstep libraries are meant to be much similar to Mac OS X frameworks. They are composed of a shared library and associated with a bundle of resources. There is a difference in terminology, in where the resources are installed, and possibly a slight difference in the NSBundle API to get to the resource bundle (anyway, it's a one line difference between Mac OS X and GNUstep, so it looks like very easy to &amp;lt;tt&amp;gt;#ifdef&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In other words, GNUstep libraries are meant to basically do the same as frameworks do on Mac OS X, but to be portable to very different platforms (such as Windows).&lt;br /&gt;
&lt;br /&gt;
=== Why not use native widgets? ===  &lt;br /&gt;
&lt;br /&gt;
The GNUstep GUI code is divided into two libraries ... the gui proper (gnustep-gui), which handles most of the work of implementing the AppKit API, and the backend (gnustep-back) which handles the interface to the native operating system.  The display server (GSDisplayServer) is one of the two classes which provide the main interface between the two parts. The other class is the graphics context (NSGraphicsContext). The later does the actual drawing whereas the former manages windows and events. This separation is just great to have multiple graphics backends like art, xlib and cairo share the same x11 display server.&lt;br /&gt;
So code in gnustep-gui calls methods of the display server, and code in gnustep-back translates those calls to native calls of the system you are running on.&lt;br /&gt;
&lt;br /&gt;
This means that application developers use the OpenStep/GNUstep/MacOS-X AppKit API to write their applications, and the gnustep-back library uses the native functionality to do the job where possible.&lt;br /&gt;
For instance, you do cut and paste or DnD using the OpenStep API for that, and on an ms-windows system, the actual calls to perform the operations are the native win32 ones. ie we leave the job to the operating system, so cut and paste from gnustep applications can interact with cut and paste from native win32 applications.&lt;br /&gt;
Of course, where the two APIs (OpenStep and win32) operate in very different ways, the conversion between the two is hard, but often the layer between the two is quite thin.&lt;br /&gt;
&lt;br /&gt;
One area where there is not much scope for overlap is drawing within a window ... the way that the OpenStep API operates is so different from ms-windows or X-windows that high level code for drawing things inside a windows using the native operating system generally cannot fit with OpenStep, so the gui library does all the drawing inside the window with quite low level code rather than trying to map OpenStep 'controls' to native 'widgets'.&lt;br /&gt;
&lt;br /&gt;
Since the basic design of the two (frontend and backend) libraries is, to draw OpenStep controls rather than try to map to native controls (because that's generally easier and makes the code very portable), we generally make no use of native widgets.&lt;br /&gt;
However, the gui frontend can dynamically load a theme engine to draw it's controls, and a theme engine is free to try to draw parts of a window using its own code ... so it can use the native controls where that's a practical solution.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Problems compiling (loading shared libs) ===&lt;br /&gt;
&lt;br /&gt;
If you get something like&lt;br /&gt;
&lt;br /&gt;
  plmerge: error while loading shared libraries:&lt;br /&gt;
  libgnustep-base.so.1: cannot open shared object file: No such file or directory&lt;br /&gt;
&lt;br /&gt;
or this:&lt;br /&gt;
&lt;br /&gt;
  Making all for service example...&lt;br /&gt;
  make[2]: *** [example.service/Resources/Info-gnustep.plist] Error 1&lt;br /&gt;
  make[1]: *** [example.all.service.variables] Error 2&lt;br /&gt;
  make[1]: Leaving directory `/home/multix/gnustep-gui-0.8.6/Tools'&lt;br /&gt;
  make: *** [internal-all] Error 2&lt;br /&gt;
&lt;br /&gt;
This means your GNU make is being overly protective. When you try to become root (e.g. to install something), certain environment variables like LD_LIBRARY_PATH are unset in order to reduce the possibility of a security breach. If you are becoming root to install something, you need to exec the GNUstep.sh file as root, just as you do when you login. Although for simplicity, you can also try this:&lt;br /&gt;
&lt;br /&gt;
  make LD_LIBRARY_PATH=$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
You could also be having problems with gcc. gcc 2.96 does not work (Mandrake 8.1, perhaps others). Use a different compiler, like gcc 3.x.&lt;br /&gt;
&lt;br /&gt;
=== Problems compiling (GNUstep Internal Error) ===&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
&lt;br /&gt;
  GNUSTEP Internal Error:&lt;br /&gt;
  The private GNUstep function to establish the argv and environment&lt;br /&gt;
  variables was not called.&lt;br /&gt;
  Please report the error to [mailto:bug-gnustep@gnu.org]&lt;br /&gt;
&lt;br /&gt;
when compiling the gui library, there could be several things wrong. One is that you installed the gnustep-objc library, but the compiler found another Objective-C library (like the one that came with gcc). If you are using gcc 3.x, DO NOT use the gnustep-objc library.&lt;br /&gt;
&lt;br /&gt;
There could also be a mismatch between the base and gui library versions. Make sure you have the latest release of each library installed.&lt;br /&gt;
&lt;br /&gt;
=== Problems with Alt key ===&lt;br /&gt;
&lt;br /&gt;
It's possible the Alt key is not where you think it is or is defined incorrectly. Try running the GSTest application, KeyboardInput test (located in the examples package at [ftp://ftp.gnustep.org/pub/gnustep/core FTP]) to test it. See [http://www.gnustep.org/resources/documentation/User/Gui/KeyboardSetup.html keyboard setup] for information on how to change the settings.&lt;br /&gt;
&lt;br /&gt;
If you are using [[Window Maker]], it's possible it is grabbing this key and using it for itself. To check, open Window Maker's WPrefs and go to the Mouse Preferences. Then use another value for the &amp;quot;Mouse grab modifier&amp;quot; (bottom right). That will allow you to alt-drag things.&lt;br /&gt;
&lt;br /&gt;
=== Problems with gcc3 ===&lt;br /&gt;
&lt;br /&gt;
Don't forget you need to update binutils and libc also.&lt;br /&gt;
&lt;br /&gt;
=== Problems with fonts ===  &lt;br /&gt;
&lt;br /&gt;
Why do the characters get changed to asterisks ('*')?&lt;br /&gt;
&lt;br /&gt;
The problem you are getting come from the fact that the xlib backend (when not using Xft) will only use one fixed X font for a given font name. If the font &amp;quot;helvetica&amp;quot; is used inside of GNUstep the one selected X font, in your case &amp;quot;-*-helvetica-medium-r-normal--12-*-*-*-p-*-iso8859-1&amp;quot; is used. So only characters (or glyphs) that are available in that font can be displayed. The selection of which font name to use happens inside the font_cacher and is more or less at random (the order fonts are listed by the X system).&lt;br /&gt;
&lt;br /&gt;
You can influence the fonts that are available by setting:&lt;br /&gt;
&lt;br /&gt;
  defaults write NSGlobalDomain GSFontMask &amp;quot;*iso8859-13&amp;quot;&lt;br /&gt;
  font_cacher&lt;br /&gt;
&lt;br /&gt;
(or using a different character set, like iso8859-2). This is really a bug in GNUstep, but it hasn't been fixed yet.&lt;br /&gt;
&lt;br /&gt;
The other option is the use the art backend, which handles fonts much better. When compiling gnustep-back, start with&lt;br /&gt;
&lt;br /&gt;
  ./configure --enable-graphics=art&lt;br /&gt;
&lt;br /&gt;
=== No characters displayed ===&lt;br /&gt;
&lt;br /&gt;
When using the xlib backend, no characters are displayed in any GNUstep applications.&lt;br /&gt;
&lt;br /&gt;
The xlib backend has font anti-aliasing turned on by default. It's possible that GNUstep can't find any fonts on your system that can be properly anti-aliased. Try&lt;br /&gt;
&lt;br /&gt;
  defaults write NSGlobalDomain GSFontAntiAlias NO&lt;br /&gt;
&lt;br /&gt;
to turn off font anti-aliasing.&lt;br /&gt;
&lt;br /&gt;
=== No Makefile ===&lt;br /&gt;
&lt;br /&gt;
I tried to compile something and I get:&lt;br /&gt;
&lt;br /&gt;
  GNUmakefile:27: /Makefiles/common.make: No such file or directory &lt;br /&gt;
  GNUmakefile:39: /Makefiles/aggregate.make: No such file or directory &lt;br /&gt;
  gmake: *** No rule to make target `/Makefiles/aggregate.make'.  Stop. &lt;br /&gt;
&lt;br /&gt;
Make sure you have installed the gnustep-make package and also type something like&lt;br /&gt;
&lt;br /&gt;
  source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh&lt;br /&gt;
&lt;br /&gt;
depending on your GNUstep's installation path.&lt;br /&gt;
&lt;br /&gt;
You can put this line in your `.profile' or `.bash_profile' file so that it is done automatically when you log in.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
=== Why don't you just have Gorm output Renaissance files? ===&lt;br /&gt;
&lt;br /&gt;
Philosophical and architectural incompatibilities.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to install GNUstep on Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Yes! Please see [[Platform:BSD#Mac_OS_X | MacOS X installation notes]]. &lt;br /&gt;
&lt;br /&gt;
=== Is there any way to use gnustep-make and gnustep-base without using openapp/opentool? ===&lt;br /&gt;
&lt;br /&gt;
opentool is obsolete and you should be able to run command-line programs directly from your&lt;br /&gt;
shell prompt like any other command-line program.&lt;br /&gt;
&lt;br /&gt;
openapp is useful to run applications but in standard situations you can also run directly&lt;br /&gt;
the program from within the .app folder.&lt;br /&gt;
&lt;br /&gt;
=== Can GNUstep help with porting applications from MacOS X? Is there any HOWTO on that? ===&lt;br /&gt;
&lt;br /&gt;
See for example [http://tamsys.sourceforge.net/gtams/ Tamsys].&lt;br /&gt;
&lt;br /&gt;
=== Can I deploy my GNUstep application without requiring people to install GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
No. Compare it to running Java applications without people requiring to install Java runtime environment.&lt;br /&gt;
&lt;br /&gt;
=== How can I get more information on Objective-C ? ===&lt;br /&gt;
&lt;br /&gt;
Take a look at the [[Objective-C]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Developer_FAQ&amp;diff=6814</id>
		<title>Developer FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Developer_FAQ&amp;diff=6814"/>
		<updated>2015-02-26T22:14:11Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: Grammar fixes and broken links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:FAQ]]&lt;br /&gt;
&lt;br /&gt;
Please send corrections to [mailto:gnustep-maintainer@gnu.org gnustep-maintainer@gnu.org]. Also look at the [[User FAQ]] for more user oriented questions.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
=== [[Installation]] ===&lt;br /&gt;
How to install GNUStep&lt;br /&gt;
=== Installation [[User FAQ#Troubleshooting|Troubleshooting]] ===&lt;br /&gt;
What to do when installation screws up.&lt;br /&gt;
=== [http://gnustep.made-it.com/Configuration/ Configuration] ===&lt;br /&gt;
What to do once GNUStep is installed.&lt;br /&gt;
&lt;br /&gt;
== Compatibility ==&lt;br /&gt;
&lt;br /&gt;
=== Is it Easy to Port OPENSTEP Programs to GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
It is probably easy for simple programs. There are some portability tools to make this easier, or rewrite the Makefiles yourself. You will also have to translate the NIB files (if there are any) to GNUstep model files using the nib2gmodel program. See the [[Writing portable code#Porting from Cocoa or OPENSTEP (NS*) to GNUstep|portability]] page for details.&lt;br /&gt;
&lt;br /&gt;
=== How About Porting Between Cocoa and GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is constantly changing, much faster than GNUstep could hope to keep up. They have added extensions and new classes that aren't available in GNUstep yet. Plus there are some other issues. See the [[Writing portable code#Porting_from_Cocoa_or_OPENSTEP_.28NS.2A.29_to_GNUstep|portability]] page for details.&lt;br /&gt;
&lt;br /&gt;
=== Tools for Porting ===&lt;br /&gt;
&lt;br /&gt;
While the programming interface should be almost transparent between systems (except for the unimplemented parts, of course), there are a variety of other files and tools that are necessary for porting programs:&lt;br /&gt;
&lt;br /&gt;
* '''nib2gmodel:''' This program coverts nib files from any system, such as Cocoa or OPENSTEP to a gmodel format file. Gmodel can be read directly by GNUstep or you can convert this to a more GNUstep-native gorm format (using the Gorm interface modeller).&lt;br /&gt;
* '''[[Renaissance]]:''' GNUstep Renaissance allows you to describe your user interfaces (that is, the windows in your application, and the buttons, boxes, textfields, etc in the windows) in simple and intuitive XML files, using an open, standard format describing the logic of the interface. It has a number of advantages over the proprietary nib format: portability, open standard, easy localization, themeability, and intelligent autolayout.&lt;br /&gt;
* '''[[Gorm]]:''' The equivalent of the Interface Builder in GNUstep. As of version 1.1.0 Gorm allows reading and writing of Mac OS 10.2 or later Cocoa NIB files. Please see http://lists.gnu.org/archive/html/discuss-gnustep/2006-09/msg00008.html.&lt;br /&gt;
* '''OpenStep2GNUConverter and nfmake:''' Two programs that allow you to convert PB files to GNUstep makefiles or compile a program on GNUstep directly from PB files. They probably work only for OPENSTEP systems and are a little out-of-date.&lt;br /&gt;
* '''[[StepTalk]]:''' A portable scripting environment that lets your do scripting in almost any language you like.&lt;br /&gt;
&lt;br /&gt;
=== Can I Transfer Archived Data from GNUstep to Cocoa? ===&lt;br /&gt;
&lt;br /&gt;
Apple's archiving format is proprietary and not documented, so this poses a problem for anyone wanting to implement compatibility with it. However, even if we reverse engineered the format, there are enough differences between the class and ivar layouts to make this sort of compatibility difficult. Not to mention the fact that we would constantly have to keep up with the changes Apple made. Also Apple's archiving format, as far as we know, would not be compatible between different machines because of endiness issues, although GNUstep doesn't have this problem.&lt;br /&gt;
&lt;br /&gt;
The new keyed archiving using XML file formats is much more portable, and GNUstep is trying to maintain compatibility with Apple for this type of archiving.&lt;br /&gt;
&lt;br /&gt;
=== Do Distributed Objects Work Between GNUstep and Cocoa? ===&lt;br /&gt;
&lt;br /&gt;
See the answer to the previous question (on archive compatibility) for why this won't work either.&lt;br /&gt;
&lt;br /&gt;
=== Is There an Interface Builder for GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
There is an Interface Builder for GNUstep called [[Gorm]]. A lot of work has been put into it and it works very well. The project manager [[ProjectCenter]] is also available. There is also [[ProjectManager]].&lt;br /&gt;
&lt;br /&gt;
=== Can I Use My Original NIB Files? ===&lt;br /&gt;
It is currently possible to use newer keyed archiving files which were created on Mac OS 10.2 or later.&lt;br /&gt;
&lt;br /&gt;
Older nibs, such as those from Mac OS 10.1 or from OPENSTEP which don't use keyed archiving aren't readable since Apple/NeXT never documented their nib format. These nibs must be translated into keyed nibs for use with GNUstep, if you have Mac OS 10.2 or later this is a simple matter of loading them into IB and saving them as keyed nibs. Alternatively, if you only have OPENSTEP you can use nib2gmodel to translate them into gmodel format.&lt;br /&gt;
&lt;br /&gt;
=== Can I Use The Hybrid &amp;quot;Objective-C++&amp;quot; ? ===&lt;br /&gt;
&lt;br /&gt;
Yes. As of release 4.1 the GNU C Compiler (GCC) supports [http://web.archive.org/web/20081231010709/http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/chapter_14_section_1.html Objective-C++].&lt;br /&gt;
&lt;br /&gt;
=== Is There a Plan to Support the Java/YellowBox Bindings? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The GNustep Java library/bridge called [[JIGS]] is available now. JIGS is a free (LGPL) Java Interface for GNUstep; it can automatically wrap Objective-C libraries based on GNUstep, making them accessible directly to the Java programmer as if they were Java libraries. As a side effect, it is also possible to use the whole engine in the reverse way: JIGS provides a high level API to allow Objective-C programmers to start java virtual machines inside GNUstep Objective-C code and access java objects in the java virtual machine transparently, as if they were objective-C objects. &lt;br /&gt;
&lt;br /&gt;
=== What if I Compile GNUstep Under OPENSTEP/MacOS X? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep uses the X-windows display postscript extension. The interface to that is not the same as the interface to the OPENSTEP/MacOS X windows server. While someone could write a backend library to provide the interface, nobody has bothered to date.&lt;br /&gt;
&lt;br /&gt;
You can, however, use a GNUstep program with an X11 server running on MacOS X.&lt;br /&gt;
&lt;br /&gt;
=== Is the Objective C API for GTK Related? ===&lt;br /&gt;
&lt;br /&gt;
No. GNUstep applications provide their GUI via the OpenStep API, which provides fully object-oriented access to GUI manipulation.&lt;br /&gt;
&lt;br /&gt;
The object-oriented nature of the libraries and language make it much easier for new users to create their own subclasses rather than simply using the supplied widgets as in other frameworks. &lt;br /&gt;
&lt;br /&gt;
=== How About Implementing Parts of the Application Kit with GTK? ===&lt;br /&gt;
&lt;br /&gt;
Yes and No - The GNUstep architecture provides a single, platform-independent, API for handling all aspects of GUI interaction (implemented in the gstep-gui library), with a backend architecture that permits you to have different display models (display postscript, X-windows, win32, berlin ...) while letting you use the same code for printing as for displaying. Use of GTK in the frontend gui library would remove some of those advantages without adding any.&lt;br /&gt;
&lt;br /&gt;
That being said, a backend library could be implemented using gtk if anyone wanted to do so. Since the frontend library handles most of the work involved in implementing the OpenStep API, the backend is a relatively thin layer and the advantages of GTK over direct xlib or win32 calls is likely to be minimal. If/when GTK is ported to more systems, a backend written using it could be a valuable asset - volunteers are, as always, welcome. &lt;br /&gt;
&lt;br /&gt;
== Compiling and Developing ==&lt;br /&gt;
&lt;br /&gt;
=== How Can I Get Started Programming? ===&lt;br /&gt;
&lt;br /&gt;
Good question. Please refer to the tutorials for some suggestions. Also look at Apple's documentation [http://www.gnu.org/software/gnustep/resources/documentation/ (pointers in the Resources section on the GNUstep web site.)]&lt;br /&gt;
&lt;br /&gt;
=== Does GDB Support Objective-C? ===&lt;br /&gt;
&lt;br /&gt;
As of GDB 6.0, debugging of Objective-C code is supported.&lt;br /&gt;
&lt;br /&gt;
== How Can I Help with GNUstep? ==&lt;br /&gt;
&lt;br /&gt;
The first task is probably just to get familiar with it, then there's a lot you can do. Write library code or applications to get a feel for it. See the [[GNUstepWiki:Community_Portal|community portal]] for an overview of what a GNUstep developer should know.&lt;br /&gt;
&lt;br /&gt;
Another simple way to get familiar with GNUstep is to help write documentation. A lot of documentation is written in the source code itself, and autogenerated. You could also improve on several of the manuals that explain the overall usage of GNUstep. &lt;br /&gt;
&lt;br /&gt;
Here are the next steps: &lt;br /&gt;
* Start off by fixing [http://savannah.gnu.org/bugs/?group_id=99 bugs]&lt;br /&gt;
* Look at the [[#How Do I Update the Task List?|list of tasks]] for longer term work and check [[Ideas]] for other ideas.&lt;br /&gt;
* For a bigger challenge, finish off part of the [[Roadmap]]&lt;br /&gt;
&lt;br /&gt;
=== How Do I Start Writing Applications? ===&lt;br /&gt;
&lt;br /&gt;
You can either look at the links on the GNUstep website for applications that have been started, and email their owners to volunteer to help, or you can start your own project.&lt;br /&gt;
&lt;br /&gt;
Let people know what you are doing. Break your project up into the smallest units you can. Feed back frequent updates to the maintainers. Ask questions in the discussion mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Helping Develop GNUstep === &lt;br /&gt;
&lt;br /&gt;
There is plenty of unimplemented stuff in the gui library and backend libraries that volunteers can work on, just browse through the code and see if it conforms to the documentation.&lt;br /&gt;
&lt;br /&gt;
Do remember that any changes beyond a few lines of code (or documentation) require a disclaimer or copyright assignment to the Free Software Foundation before they can be incorporated into the project. [[#How_do_I_assign_my_contribution.3F|See below]].&lt;br /&gt;
&lt;br /&gt;
Don't start with large-scale reorganization of anything -- instead, get a general idea in mind of what you want to do, and proceed as much as possible with incremental changes that don't break anything - that way you can make those incremental changes available to the rest of the community at frequent intervals.&lt;br /&gt;
&lt;br /&gt;
Don't be afraid to give up - there is no shame in finding out that you have taken on too large or complex a project. It's much better to 'resign' and take on a smaller job than to just stop without telling anyone.&lt;br /&gt;
&lt;br /&gt;
Please document the code you add or change (using autogsdoc comments that begin with a slash and two asterisks) and maybe write a testcase for it. But PLEASE, do not copy from the Apple documentation or any other copyrighted documentation. &lt;br /&gt;
&lt;br /&gt;
Specific tasks are noted in the [http://www.gnu.org/software/gnustep/developers/ developers section on the GNUstep website].&lt;br /&gt;
&lt;br /&gt;
=== Helping Document GNUstep ===&lt;br /&gt;
&lt;br /&gt;
All class documentation is written directly in the source code itself and translated using the autogsdoc program. See the source code and documentation for autogsdoc for information on documenting the classes.&lt;br /&gt;
&lt;br /&gt;
Newcomers could write documentation for individual classes by comparing the OpenStep specification, the MacOS X documentation, and the GNUstep source. Documentation should clearly note where individual methods are specific to OpenStep, MacOS X or are GNustep extensions.&lt;br /&gt;
&lt;br /&gt;
More experienced people could write documentation on general programming topics, and tutorials for new users. Contributors to the wiki are welcome!&lt;br /&gt;
&lt;br /&gt;
Anyone willing to write documentation, either tutorials for using GNUstep, or reference documentation for individual classes, should either write it in gsdoc or as plain ascii text for someone else to format into gsdoc.&lt;br /&gt;
&lt;br /&gt;
GNUstep documentation should have copyright assigned to the Free Software Foundation.&lt;br /&gt;
&lt;br /&gt;
=== How Do I Assign My Contribution? ===&lt;br /&gt;
&lt;br /&gt;
Everyone who contributes more than 20 lines of code or so needs to sign a copyright assignment so that the FSF can have legal control of the copyright. This makes it easier to defend against any copyright infringement suits. Contact the GNUstep maintainer for instructions on how to do this or download and fill out the [http://www.gnustep.org/resources/request-assign.future form (instructions are included)].&lt;br /&gt;
&lt;br /&gt;
=== How Do I Update the Task List? ===&lt;br /&gt;
&lt;br /&gt;
The [http://savannah.gnu.org/task/?group=gnustep task list] is supposed to tell people what jobs are waiting to be done. Feel free to add to it or update the tasks that are there (you need to create a login for yourself first).&lt;br /&gt;
&lt;br /&gt;
One job of major importance that pretty much anyone can do is to look for jobs to add to the task list. In the case of methods from the OpenStep specification or the MacOS X documentation not being present in the GNUstep libraries, it is also helpful to add the method prototypes to the library header files.&lt;br /&gt;
&lt;br /&gt;
Send any changes or additions to [mailto:bug-gnustep@gnu.org bug-gnustep@gnu.org].&lt;br /&gt;
&lt;br /&gt;
A beginner can look through the MacOS X documentation, the OpenStep specification and the GNUstep source and contribute task items.&lt;br /&gt;
&lt;br /&gt;
If a class or method is&lt;br /&gt;
&lt;br /&gt;
* in MacOS X and OpenStep but is not in GNUstep, it's a high priority TODO and should at least be added to the GNUstep headers and a dummy version added to the source with a FIXME comment.&lt;br /&gt;
* in MacOS X but not OpenStep or GNUstep, it's a low priority TODO. It should be added to the GNUstep headers bracketed in #ifndef STRICT_OPENSTEP&lt;br /&gt;
* in OpenStep but not in MacOS X or GNUstep, it's a low priority TODO. It should be added to the GNUstep headers bracketed in #ifndef STRICT_MACOS_X&lt;br /&gt;
&lt;br /&gt;
There are a couple of people working on this already, so it's a good idea to get in touch with Adam or Richard to coordinate efforts.&lt;br /&gt;
&lt;br /&gt;
=== How Do I Start Writing Tests? ===&lt;br /&gt;
&lt;br /&gt;
You can write testcases - where the libraries fail tests, you could either fix the problem, or add it to the task list.&lt;br /&gt;
&lt;br /&gt;
To write testcases, you need to use svn to install the latest GNUstep source code you can find. Then checkout the 'gnustep/tools/testsuite' module from svn.&lt;br /&gt;
&lt;br /&gt;
=== How Can I Help with the GNUstep Website? ===&lt;br /&gt;
&lt;br /&gt;
'''Please consider contributing to this Wiki as opposed to the website.'''&lt;br /&gt;
Contact [mailto:fedor@gnu.org Adam Fedor], the maintainer.&lt;br /&gt;
&lt;br /&gt;
The GNUstep website is kept as a CVS module, but the largest portions of it (the FAQ and the Documentation) are actually generated from files in the individual GNUstep packages.&lt;br /&gt;
&lt;br /&gt;
If you want to update the FAQ or documentation - grab the latest snapshot of the GNUstep core you can find, update it from the svn repository, and work with the contents of the appropriate documentation directory.&lt;br /&gt;
&lt;br /&gt;
If you want to work on other parts of the website, you can grab a copy of the website via anonymous CVS. See http://savannah.gnu.org/cvs/?group_id=99 for instructions on how to do that.&lt;br /&gt;
&lt;br /&gt;
The main task with the website is to figure out which bits are out-of-date (or wrong) and update/mark-as-outdated as required.&lt;br /&gt;
&lt;br /&gt;
== GNU Objective-C Compiler and Runtime ==&lt;br /&gt;
&lt;br /&gt;
=== What Is the Objective-C Runtime? ===&lt;br /&gt;
&lt;br /&gt;
The [[Objective-C runtime]] Library provides C functions and data structures required to execute an Objective C program.&lt;br /&gt;
&lt;br /&gt;
The GNU Objective-C Runtime Library offers everything NeXT's runtime does, including Categories, Protocols, `+poseAs:', thread-safety, class initialization on demand, delayed loading of classes, and initialization of static instances (such as @&amp;quot;&amp;quot;-style string literals).&lt;br /&gt;
&lt;br /&gt;
It also has several differences over NeXT's implementation:&lt;br /&gt;
&lt;br /&gt;
* GNU's runtime provides &amp;quot;selector-types&amp;quot; along with each selector; NeXT's does not. A selector-type is a string that describes the C variable types for the method's return and argument values. Among other uses, selector-types are extremely helpful for fast distributed objects implementations (see [[#GNUstep Base Library|GNUstep Base Library Section]], below).&lt;br /&gt;
&lt;br /&gt;
* Many of the GNU functions have different names than their corresponding NeXT functions; the GNU names conform to the GNU coding standards. The GNUstep base library contains a compatibility header that works with both runtimes. You should use functions there or use OpenStep Foundation methods/functions instead of the basic runtime functions so that your code can run with either system.&lt;br /&gt;
&lt;br /&gt;
Apple has recently added new functionality to their runtime, including built-in exception handling, etc. Hopefully these will be ported to the GNU runtime in the future.&lt;br /&gt;
&lt;br /&gt;
=== Where can I get a gcc compiler with Objective-C support? ===&lt;br /&gt;
*TBA.&lt;br /&gt;
=== How I can compile my own gcc compiler with Objective-C support? ===&lt;br /&gt;
* TBA.&lt;br /&gt;
=== How I check if my gcc compiler has good Objective-C environment? ===&lt;br /&gt;
* TBA.&lt;br /&gt;
&lt;br /&gt;
== GNUstep Base Library ==&lt;br /&gt;
&lt;br /&gt;
=== What Is the GNUstep Base Library? ===&lt;br /&gt;
&lt;br /&gt;
The GNUstep Base Library is a library of general-purpose, non-graphical Objective C objects. For example, it includes classes for strings, object collections, byte streams, typed coders, invocations, notifications, notification dispatchers, moments in time, network ports, remote object messaging support (distributed objects), event loops etc.&lt;br /&gt;
&lt;br /&gt;
It provides functionality that aims to implement the non-graphical portion of the OpenStep standard (the Foundation library).&lt;br /&gt;
&lt;br /&gt;
=== What Is Its current State of Development? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep base is currently stable and, to the best of our knowledge, implements all of the OpenStep functionality (except for a few classes that we feel are not useful). It also implements most all of the new Cocoa classes. However we do some things, like scripting, differently, so we don't implement all the Cocoa classes.&lt;br /&gt;
&lt;br /&gt;
=== What Are the Features of GNU Distributed Objects? ===&lt;br /&gt;
&lt;br /&gt;
GNU Distributed Objects has many of the features of other distributed objects implementations, but, since it is free software, it can be ported to platforms for which other distributed objects implementations are not available.&lt;br /&gt;
&lt;br /&gt;
NOTE: The GNU distributed object facilities have the same ease-of-use as Apple's; be warned, however, that they are not compatible with each other. They have different class hierarchies, different instance variables, different method names, different implementation strategies and different network message formats. You cannot communicate with a Apple NSConnection using a GNU NSConnection.&lt;br /&gt;
Here are some differences between GNU distributed objects and Apple's distributed objects: Apple NSDistantObject asks it's remote target for the method encoding types and caches the results; GNU NSDistantObject gets the types directly from the local GNU &amp;quot;typed selector&amp;quot; mechanism if the information is known locally and only queries the remote target or caching encoding types when using a method that is not known to the local process. The NSProxy for the remote root object always has name and, once set, you cannot change the root object of a NSConnection; the GNU Proxy for the remote root object has a target address value just like all other Proxy's, and you can change the root object as many times as you like. &lt;br /&gt;
&lt;br /&gt;
== GNUstep GUI Library ==&lt;br /&gt;
&lt;br /&gt;
=== What Is the GUI Library? ===&lt;br /&gt;
&lt;br /&gt;
The GNUstep GUI Library is a library of objects useful for writing graphical applications. For example, it includes classes for drawing and manipulating graphics objects on the screen: windows, menus, buttons, sliders, text fields, and events. There are also many peripheral classes that offer operating-system-independent interfaces to images, cursors, colors, fonts, pasteboards, printing. There are also workspace support classes such as data links, open/save panels, context-dependent help, spell checking.&lt;br /&gt;
&lt;br /&gt;
It provides functionality that aims to implement the `AppKit' portion of the OpenStep standard. However the implementation has been written to take advantage of GNUstep enhancements wherever possible.&lt;br /&gt;
&lt;br /&gt;
=== Explain the organization of the front- and back-ends ===&lt;br /&gt;
&lt;br /&gt;
The GNUstep GUI Library is divided into a front- and back-end. The front-end contains the majority of implementation, but leaves out the low-level drawing and event code. A back-end can override whatever methods necessary in order to implement low-level drawing event receiving. Different back-ends will make GNUstep available on various platforms. The default GNU back-end will run on top of X-Window. Other back-ends could allow GNUstep to run on OpenGL and WIN32 graphics/event platforms. Much work will be saved by this clean separation between front- and back-end, because it allows different platforms to share the large amount of front-end code.&lt;br /&gt;
&lt;br /&gt;
=== What Is the Current State of Development of the front-end? ===&lt;br /&gt;
&lt;br /&gt;
Many of the classes are well implemented, if not thoroughly tested. See the GNUstep web sites and read status information contained in the distribution for the most up-to-date information.&lt;br /&gt;
&lt;br /&gt;
=== What Is the Current State of Development of the back-ends? ===&lt;br /&gt;
&lt;br /&gt;
There are several backends currently available:&lt;br /&gt;
&lt;br /&gt;
* '''xlib:''' This backend runs on X11 and uses standard xlib calls for implementing drawing. It works well, but is limited in many areas due to the limitations of xlib drawing. &lt;br /&gt;
* '''art:''' This is a very good backend that draws using the libart package and freetype with near PostScript quality and functionality.&lt;br /&gt;
* '''w32:''' This backend works on Windows and uses basic Windows drawing &lt;br /&gt;
* '''cairo:''' A backend based on the cairo graphics library. It is the standard backend (as long as the required libraries are installed).&lt;br /&gt;
&lt;br /&gt;
== GNUstep DisplayGhostScript Server ==&lt;br /&gt;
&lt;br /&gt;
=== What Is the Display Ghostscript Server? ===&lt;br /&gt;
&lt;br /&gt;
It is a free implementation of a Display PostScript server based on the GNU Ghostscript program developed by Aladdin Enterprises and now owned by artofcode LLC.&lt;br /&gt;
&lt;br /&gt;
At one point, GNUstep was using this for display purposes. However the development of DGS has stopped as it is too difficult to maintain and no one wanted to work on it. Now we are using other means of drawing.&lt;br /&gt;
&lt;br /&gt;
=== What Is Its Current State of Development? ===&lt;br /&gt;
&lt;br /&gt;
GNU contracted with Aladdin Enterprises to add some key features to GNU Ghostscript so it could be used as a DPS server. This work has mostly been done, although Aladdin did not completely finish the work that they were contracted for. (Because the work took longer than specified and was not completed, Aladdin agreed to waive approximately $10,000 in promised fees for the work that was actually done and delivered.) DGS works fairly well with a single context. Alpha channel and compositing doesn't work.&lt;br /&gt;
&lt;br /&gt;
Further development on DGS has been abandoned in favor of libraries such as Cairo and libart.&lt;br /&gt;
&lt;br /&gt;
=== What Is the Relationship Between the Display Ghostscript Server and X-Window? ===&lt;br /&gt;
&lt;br /&gt;
Display Ghostscript runs on top of X-Window.&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=JIGS&amp;diff=6813</id>
		<title>JIGS</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=JIGS&amp;diff=6813"/>
		<updated>2015-02-25T21:26:43Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = JIGS is the Java Interface to GNUstep. |&lt;br /&gt;
currentversion = [http://www.gnustep.it/jigs/Download/jigs-1.6.2.tar.gz 1.6.2] |&lt;br /&gt;
releasedate = August 8, 2013|&lt;br /&gt;
license = LGPL |&lt;br /&gt;
overview = JIGS is a library allowing integration between Java and Objective-C. The main purpose of JIGS is to allow Java programmers to use the GNUstep libraries from Java. |&lt;br /&gt;
features = JIGS is more than a set of bindings for GNUstep from Java; JIGS takes advantage of the fact that Objective-C and Java are very similar languages to make it possible to use Objective-C classes from Java using exactly the same API (and vice versa). You have to learn the GNUstep API only once, and then you can use it both from Objective-C and from Java in the same way! Moreover, JIGS can generate automatically wrappers for your own Objective-C GNUstep libraries.&lt;br /&gt;
&lt;br /&gt;
JIGS allows you to write optimized classes and components in Objective-C, and make them available to Java developers. In the typical configuration, fast Objective-C components and libraries are used in the backend, and JIGS is used to integrate them smoothly in a Java front-end. Moving from one language to the other is as easy as it can possibly be with two different languages. |&lt;br /&gt;
maintainer = * [mailto:n.pero@mi.flashnet.it Nicola Pero] |&lt;br /&gt;
relatedlinks = &lt;br /&gt;
* [http://www.gnustep.it/jigs/ Official Page] |&lt;br /&gt;
category = [[Category:Scripting_Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6812</id>
		<title>Objective-C Compiler and Runtime FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6812"/>
		<updated>2015-02-24T23:52:32Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objective-C Compiler and Runtime FAQ ==&lt;br /&gt;
&lt;br /&gt;
An Objective-C implementation comes in two components:&lt;br /&gt;
* '''Compiler''' - responsible for parsing the source code and produces a binary that contains calls to the functions in the runtime library&lt;br /&gt;
* '''Runtime Library''' - responsible for things like message sending and introspection&lt;br /&gt;
&lt;br /&gt;
=== How Many Runtimes Are There? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
If you have used Objective-C on Mac OS X, then you will have used one or both of Apple's two Objective-C runtimes.  The Apple legacy runtime is based on the version implemented by NeXT back in the '80s, although it has seen some improvements since that time and is often referred to as the NeXT runtime.  Apple's modern runtime is a complete rewrite, introduced with OS X 10.5.  The modern runtime is required for Objective-C 2 and is the default on 64-bit platforms.&lt;br /&gt;
&lt;br /&gt;
The implementation of Objective-C produced by NeXT was based on GCC and as such NeXT was required to release the relevant compiler changes.  The NeXT Objective-C runtime was not open sourced (it was later, after Apple bought NeXT, but the code is not particularly portable and so is not used on platforms other than Darwin) and so the GNU project created a new one, generally referred to as the GNU runtime.&lt;br /&gt;
&lt;br /&gt;
In 2009, a fork of this was committed to GNUstep subversion repository as libobjc2.  This contains a lot of new features and removes a lot of legacy code, but is not yet considered production ready.  Unlike the original GNU runtime (which will be referred to as the GCC runtime, for differentiation), this can be built outside of the GCC tree and distributed independently.  The GNUstep runtime supports two ABIs.  One is compatible with the GCC runtime, the other is new and is designed to support Objective-C 2.&lt;br /&gt;
&lt;br /&gt;
=== Which Runtime Should I Use? ===&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
If you are using a recent version of GCC to compile your code then you should have a copy of the Objective-C runtime library that came with your compiler.&lt;br /&gt;
&lt;br /&gt;
If you are using a very old version of GCC then you may need to use a newer version of GNU runtime.  If you experience problems with the version of runtime that came with your compiler, then you should install libobjc from GNUstep subversion (libs/libobjc/trunk).  This is a copy of version 1.6 of the GCC runtime which is modified to build outside the GCC tree.&lt;br /&gt;
&lt;br /&gt;
For more advanced features, currently only supported if you compile with Clang, you will need the GNUstep runtime.  This is not currently considered production ready.  It should work as a drop-in replacement for the GCC runtime, but some of the advanced features are not well-tested.&lt;br /&gt;
&lt;br /&gt;
=== What is or Was the Étoilé Runtime? ===&lt;br /&gt;
----------------------------------&lt;br /&gt;
&lt;br /&gt;
The Étoilé Runtime is a research prototype that was originally intended to succeed the GNU runtime.  After some time, it was determined that porting GNUstep to a completely new - and radically differently designed - runtime would be a massive undertaking, as would providing all of the related compiler support.  It was also decided that two incompatible ABIs would not benefit anyone.  The author of the Étoilé runtime is the maintainer of the GNUstep runtime and has back-ported most of the improvements from the Étoilé runtime to the GNUstep runtime.&lt;br /&gt;
&lt;br /&gt;
=== Which Compiler Should I Use? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
The history of Objective-C in GCC is somewhat complicated.  Originally, NeXT was forced to release the original Objective-C front end in order to comply with the GPL.  This code was not quite compatible with the GNU runtime and so it was modified.  NeXT did not adopt these modifications and so each release of GCC by NeXT, and then Apple, contained changes that needed back-porting to the main branch of GCC.&lt;br /&gt;
&lt;br /&gt;
For a long time, GCC was the only compiler that worked with GNUstep.  Unfortunately, the GCC team has not invested much effort in Objective-C in the last few years and it currently lags behind Apple's version by a significant amount.&lt;br /&gt;
&lt;br /&gt;
As of version 4.3, the Free Software Foundation changed the license of GCC to version 3 of the GNU General Public License.  This means that future versions will not be shipped by Apple.  OS X 10.6 ships with three compilers:&lt;br /&gt;
&lt;br /&gt;
* Apple's fork of GCC 4.2.1&lt;br /&gt;
* LLVM-GCC&lt;br /&gt;
* Clang&lt;br /&gt;
&lt;br /&gt;
The latter two use the Low-Level Virtual Machine ([http://llvm.org/ LLVM]) for code generation.  This is a BSD-licensed compiler infrastructure used by several other projects.  LLVM-GCC is a hybrid, using Apple's version of GCC for parsing and LLVM for optimisation and native code generation.  Clang is a new front end for LLVM.&lt;br /&gt;
&lt;br /&gt;
Currently, LLVM-GCC is based on Apple's GCC and so does not support the GNU runtime.  There is an effort underway to rewrite LLVM-GCC as a plugin for GCC 4.5, at which point it should support as much Objective-C as GCC currently does.&lt;br /&gt;
&lt;br /&gt;
Unlike GCC, Clang features a clean abstraction layer between the runtime-specific and runtime-agnostic parts of the compiler.  This means that adding support for new features on the GNU runtime is simply a matter of implementing the relevant methods in the CGObjCGNU class.  This means that Clang is able to support almost everything on the GNUstep runtime that it does on either of the Apple runtimes.&lt;br /&gt;
&lt;br /&gt;
=== Which Bits of Objective-C 2 Work? ===&lt;br /&gt;
---------------------------------&lt;br /&gt;
&lt;br /&gt;
The answer to this question depends on the combination of compiler and runtime library that you are using.  Currently, no features of Objective-C 2 work with GCC.&lt;br /&gt;
&lt;br /&gt;
If you compile with Clang then you have access to declared properties, fast enumeration, and blocks.  Note that both of these require some support from the runtime.  This must be provided either by the GNUstep runtime or by the ObjectiveC2 framework, which you can acquire from Étoilé subversion.  For blocks to work, you must also compile with -fblocks.&lt;br /&gt;
&lt;br /&gt;
If you link with the -fobjc-nonfragile-abi flag then you will use the new ABI.  This is only supported with the GNUstep runtime.  This adds:&lt;br /&gt;
&lt;br /&gt;
* Property introspection&lt;br /&gt;
* Introspection on optional protocol methods&lt;br /&gt;
* Non-fragile instance variables&lt;br /&gt;
* Forwarding proxy support&lt;br /&gt;
&lt;br /&gt;
Unlike Apple's non-fragile ABI, it is possible to mix code compiled for our fragile and non-fragile ABIs with some caveats.  Message sending from code compiled with the fragile ABI will not be able to take advantage of forwarding proxies.  If you subclass a non-fragile ABI class with a class compiled with the fragile ABI then you will not receive any benefits; the class compiled with the fragile ABI must be able to see all of the instance variables in the superclass at compile time or things will break.  Some benefits will be obtained the other way around, however.  A class compiled for the fragile ABI will always be able to access its own instance variables safely when the superclass changes, even if the superclass layout changes.  It will, however, only be able to safely access instance variables declared in superclasses safely if the superclass is also compiled with the non-fragile ABI or if the superclass instance variable layout does not change.&lt;br /&gt;
&lt;br /&gt;
=== Can I Use Apple's Runtime APIs? ===&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
You not only can, but should!&lt;br /&gt;
&lt;br /&gt;
With OS X 10.5, Apple introduced a new set of APIs for interacting with the runtime.  These hid the implementation details - previously all public - behind a set of public functions, implemented on both the modern and legacy runtimes.&lt;br /&gt;
&lt;br /&gt;
These functions are supported by the GNUstep runtime and can also be used with the GCC runtime if you link against Étoilé's ObjectiveC2 framework.&lt;br /&gt;
&lt;br /&gt;
From release 1.20.0 of the base library onwards the new runtime APIs are built in to the GNUstep base library (the Étoilé ObjectiveC2 framework is incorporated into base and extended/improved) so that the new APIs can be used with both old and new runtimes.&lt;br /&gt;
&lt;br /&gt;
=== What About Garbage Collection? ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
GNUstep has supported garbage collection via the [http://www.hboehm.info/gc/ Boehm GC] for some years.  Efforts are underway to bring this to closer compatibility with Apple's new implementation.&lt;br /&gt;
&lt;br /&gt;
=== Where Can I Get It ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
You may obtain the code for the modern Objective-C runtime from subversion at the following&lt;br /&gt;
subversion branch:&lt;br /&gt;
&lt;br /&gt;
svn://svn.gna.org/svn/gnustep/libs/libobjc2/releases/1.7&lt;br /&gt;
&lt;br /&gt;
Alternatively, a tarball is available from:&lt;br /&gt;
&lt;br /&gt;
* [http://download.gna.org/gnustep/libobjc2-1.7.txz txz]&lt;br /&gt;
* [http://download.gna.org/gnustep/libobjc2-1.7.tar.bz2 bz2]&lt;br /&gt;
* [http://download.gna.org/gnustep/libobjc2-1.7.tgz tgz]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=User_FAQ&amp;diff=6811</id>
		<title>User FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=User_FAQ&amp;diff=6811"/>
		<updated>2015-02-22T17:04:38Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: Added many missing links and fixed inaccuracies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GNUstep General Information ==&lt;br /&gt;
&lt;br /&gt;
=== What is GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep is the Free Software Foundation's effort to implement Apple, Inc's (formerly NeXT Software, Inc.'s)  [[Cocoa]] APIs (formerly the [[OpenStep]] Standard). Also we are building developer and user applications based on this standard which may be used to form a complete desktop experience. For more details, take a look at the [[Introduction to GNUstep|introduction]].&lt;br /&gt;
&lt;br /&gt;
=== What is Cocoa? ===&lt;br /&gt;
&lt;br /&gt;
[[Cocoa]] is an Application Programming Interface (API) for creating applications using the Objective-C language. It was published by Apple, Inc.(Formerly NeXT Software, Inc.).&lt;br /&gt;
&lt;br /&gt;
Cocoa consists of three parts: the `Foundation Kit', a library of non-graphical objects; the `Application Kit', a library of objects useful in creating graphical applications; and the Quartz display system.&lt;br /&gt;
&lt;br /&gt;
=== What platforms does GNUstep run on? ===&lt;br /&gt;
&lt;br /&gt;
See the list of [[Platform compatibility|supported platforms]] for information on what machines GNUstep builds on and what the status of the ports is. GNUstep can be ported to any other UNIX system where current gcc compilers and gdb debugger work. &lt;br /&gt;
&lt;br /&gt;
=== Does GNUstep run on Windows? ===&lt;br /&gt;
&lt;br /&gt;
The primary targets for GNUstep are free UNIX system-based platforms such as GNU/Linux and FreeBSD.&lt;br /&gt;
&lt;br /&gt;
That being said, the whole environment has been ported to [http://www.mingw.org MinGW environment]&lt;br /&gt;
and the non-gui libraries are reported to work well.&lt;br /&gt;
&lt;br /&gt;
The GUI library uses the [[Backend|Cairo Backend]] library to work under Windows. The backend library is a thin layer that converts the GNUstep methods to handle drawing of GUI elements to calls to the Windows API.&lt;br /&gt;
&lt;br /&gt;
GNUstep also has a theme which lets it use native windows widgets wherever possible so it can better blend into the Windows environment.&lt;br /&gt;
&lt;br /&gt;
=== What is GNUstep's position towards KDE and the GNOME project? ===  &lt;br /&gt;
&lt;br /&gt;
You can use GNUstep with GNOME and/or KDE (See [[IconManager.app]]). GNUstep displays on top of X11. You can still do programming in C (since Objective-C is just a superset of C), and if you're using gcc 4.1 or later, you can [http://web.archive.org/web/20081231010709/http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/chapter_14_section_1.html mix C++ and Objective-C code in the same file].&lt;br /&gt;
&lt;br /&gt;
GNUstep, is much more than a window manager or desktop environment. It frees you to develop cross-platform applications without the work of developing an OS independent framework from scratch. It gives you lots of basic functionality, from font panels to Unicode strings to distributed objects.&lt;br /&gt;
&lt;br /&gt;
=== How can I get GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
Many distributions include packaged versions of GNUstep (Debian, etc.). To compile from scratch, download the GNUstep Startup package or take a look at the [[Platform compatibility]] list. Get the latest releases from [ftp://ftp.gnustep.org/pub/gnustep/core FTP].&lt;br /&gt;
&lt;br /&gt;
=== How do you run GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
You are presumably under the misapprehension that GNUstep is some sort of program or window manager.  It isn't!  GNUstep is a whole load of things -- primarily a set of libraries for developing software.  At present, it's those libraries, plus various command-line based support tools and service providing daemons, plus various GUI development tools, a GUI desktop/workspace application, etc.  At no stage will you ever 'run' GNUstep -- you will run applications and tools and will use it's services. At some point you may well find packages distributed as 'GNUstep' systems in the way that you get 'GNU/Linux' systems packaged today. For instance, look at the [[GNUstep Live CD]].&lt;br /&gt;
&lt;br /&gt;
If you want to see a sample GUI application running you need to build GNUstep and look at the example applications in the [http://www.gnu.org/software/gnustep/experience/examples.html gnustep-examples] package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app' or 'openapp Ink.app'&lt;br /&gt;
&lt;br /&gt;
For the best look, use Window Maker (preferred GNUstep window manager) as your window manager. In others desktops (that have its how window manager) you can use [[IconManager.app]]&lt;br /&gt;
&lt;br /&gt;
=== Is there a web site? ===&lt;br /&gt;
&lt;br /&gt;
See [http://www.gnustep.org/ GNUstep Website] and [[Main_Page | GNUstep Wiki]].&lt;br /&gt;
&lt;br /&gt;
=== When is GNUstep intended to be available? ===&lt;br /&gt;
&lt;br /&gt;
It's usable now. Major releases are made about every six months. However, if you are a serious developer, it's probably best to use the latest snapshots.&lt;br /&gt;
&lt;br /&gt;
=== What is usable? ===   &lt;br /&gt;
&lt;br /&gt;
Most of GNUstep is quite usable and there are many complex applications that work well. However, GNUstep does not completely track the latest changes that Apple makes to their interface and there are still some parts that need some work.  This means many applications will run quite well. Applications that require very complex text handling and some unusual features and/or some of the latest additions to Cocoa may not work as well. See the [[User FAQ#Compatibility and Layout|Compatibility and Layout]] section for more information.&lt;br /&gt;
&lt;br /&gt;
== Compiling and Installing ==&lt;br /&gt;
&lt;br /&gt;
=== How do I compile GNUstep on my machine? ===&lt;br /&gt;
&lt;br /&gt;
Read the file 'GNUstep-HOWTO', which comes with the GNUstep distribution (gnustep-make), and also is available separately on the GNUstep web site. To check beforehand, take a look at the [[Platform compatibility]] list.&lt;br /&gt;
NB. gnustep-base-1.23.0 is the last release which supports pre gcc-4.0.0 compilers.  For later releases you will want to ensure you have a more recent Objective-C compiler.&lt;br /&gt;
&lt;br /&gt;
=== Are there any precompiled packages available? ===&lt;br /&gt;
&lt;br /&gt;
Check the [http://www.gnustep.org/resources/sources.html Download Section] for links to RPMs, Debian packages, and BSD ports. There are also Windows installers, Mac OS X binaries and others.&lt;br /&gt;
&lt;br /&gt;
=== How do I start the applications I just installed? ===&lt;br /&gt;
&lt;br /&gt;
First, read [http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto_4.html#SEC7 GNUstep Howto] to make sure you have set up your environment correctly. Then from a terminal enter:&lt;br /&gt;
&lt;br /&gt;
 openapp Application.app&lt;br /&gt;
&lt;br /&gt;
=== What are these type and size warnings? ===&lt;br /&gt;
&lt;br /&gt;
These warnings:&lt;br /&gt;
  /usr/bin/ld: warning: type and size of dynamic symbol&lt;br /&gt;
  `__objc_class_name_NSConstantString' are not defined&lt;br /&gt;
are a common occurence and are due to a mismatch between the gcc compiler and the ld linker. They don't do any harm so they can be safely ignored. They have been fixed in the 3.1 version of the GCC compiler.&lt;br /&gt;
&lt;br /&gt;
=== What are these import warnings? ===  &lt;br /&gt;
&lt;br /&gt;
Do you get this obnoxious warning whenever you compile an application, tool, or Objective-C program:&lt;br /&gt;
  warning: using `#import' is not recommended&lt;br /&gt;
  [...]&lt;br /&gt;
Up until version 3.4 of the GCC compiler, the #import directive was improperly implemented. As a result, the compiler automatically emitted a warning whenever the #import directive was used. As of gcc 3.4, this problem has been fixed, so presumably, this warning is no longer emitted when code is compiled. If you are using an earlier compiler, you can suppress these warnings by adding -Wno-import to your CPPFLAGS.&lt;br /&gt;
&lt;br /&gt;
== Compatibility and Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
You can't run these programs on GNUstep, but if you have the source code for the programs, you should be able to port them to GNUstep and compile them. Whether or not you will be able to run them depends on how complete GNUstep is at the time.&lt;br /&gt;
&lt;br /&gt;
=== Is GNUstep following changes to OpenStep and Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Yes, gnustep-base already contains the documented changes in the Foundation library. GNUstep aims to be compatible with both the OpenStep specification and with Mac OS X. It should be easy to write an application that compiles cleanly under both GNUstep and Cocoa.  GNUstep can be expected to support the OSX 10.4 version of the Cocoa APIs (we consider it a bug if it does not), but also actually supports many APIs from OSX 10.5 and later (contributions of methods from these later versions are very welcome).&lt;br /&gt;
&lt;br /&gt;
=== Do we have to have the NEXTSTEP look and feel? ===&lt;br /&gt;
&lt;br /&gt;
GNUstep is aiming for something like the NEXTSTEP 3.3 look and feel. Although we don't want to force anyone into this, a lot of the power and ease of use comes from this feel. The look of GNUstep is something different -- buttons and other widgets can look different but still act the same way. We hope to implement themes which will allow this.&lt;br /&gt;
&lt;br /&gt;
For a different desktop feel please see [[Themability]].&lt;br /&gt;
&lt;br /&gt;
=== What's up with the directory structure? ===&lt;br /&gt;
&lt;br /&gt;
First of all, GNUstep uses a slightly different directory structure than NEXTSTEP or Mac OS X. Part of this is historical, part is because we can't do things the same way (see the section [[User FAQ#Why not use framework bundles?|Why not use framework bundles]]). Although currently the structure is very similar to the one used in Mac OS X.&lt;br /&gt;
&lt;br /&gt;
It's also possible to configure GNUstep run using the standard FHS directory structure used under GNU/Linux and other unices so that it blends better in the host environment.&lt;br /&gt;
&lt;br /&gt;
=== Why not use framework bundles? ===  &lt;br /&gt;
&lt;br /&gt;
Framework bundles are much more difficult to port and to use, and are very unnatural on a UNIX system; extremely unnatural on Windows. In a framework bundle, the shared dynamic library is inside a framework wrapper directory. Because of this, the dynamic linker can't find it.&lt;br /&gt;
&lt;br /&gt;
We have frameworks, so how do we work around that? Well, we create symbolic links from a directory inside the dynamic linker path into the framework, which work, but then you can't move the framework anywhere else on the system, otherwise you break the link, such that nothing will find the framework any longer! On systems without symbolic links, like Windows, we can't even do this! We have to copy the library from the framework into the dynamic linker path, but that is simply a shared library then! Absolutely no difference. You put the dynamic library in a system directory in the dynamic linker path, and associate with that library a resource directory. OpenStep for Windows did that, and still called them frameworks. So we can do the same, and call our libraries frameworks.&lt;br /&gt;
&lt;br /&gt;
Shared libraries are all in a flat directory where the dynamic linker can easily find them. This is how it works on Unixoids, Windows and probably most other systems. The OpenStep API requires us to provide some stuff for frameworks, like creating and registering a framework object automatically each time a framework is used (linked at runtime, or linked into the app), and attaching to it the list of classes inside the framework, which are not particularly trivial to implement and might make trouble when porting, as they depend on playing with the linker and the object file format. However, shared libraries are handled by the operating system for us, so we never have to use these facilities.&lt;br /&gt;
&lt;br /&gt;
It's easier for Apple's Mac OS X. They can modify the system linker, compiler, the system dynamical linker as they please, because they have full control over the platform these run on. They can modify the system to support frameworks natively. GNUstep, however, is meant to run on many different platforms, platforms which we don't control (Windows, Sun Solaris, Darwin, GNU/Linux, UNIX system variants) and which have different linkers and do not support frameworks natively. On some systems it's difficult to just load a bundle or compile a shared library!&lt;br /&gt;
&lt;br /&gt;
So building the core libraries as 'libraries' means that it's much easier to port them, and it's much more difficult to break them. Sure, frameworks have a bundle of resources associated with it -- but we can very easily associate a bundle of resource with a shared library, no reason why not. We are doing it. So please note that GNUstep libraries are meant to be much similar to Mac OS X frameworks. They are composed of a shared library and associated with a bundle of resources. There is a difference in terminology, in where the resources are installed, and possibly a slight difference in the NSBundle API to get to the resource bundle (anyway, it's a one line difference between Mac OS X and GNUstep, so it looks like very easy to &amp;lt;tt&amp;gt;#ifdef&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In other words, GNUstep libraries are meant to basically do the same as frameworks do on Mac OS X, but to be portable to very different platforms (such as Windows).&lt;br /&gt;
&lt;br /&gt;
=== Why not use native widgets? ===  &lt;br /&gt;
&lt;br /&gt;
The GNUstep GUI code is divided into two libraries ... the gui proper (gnustep-gui), which handles most of the work of implementing the AppKit API, and the backend (gnustep-back) which handles the interface to the native operating system.  The display server (GSDisplayServer) is one of the two classes which provide the main interface between the two parts. The other class is the graphics context (NSGraphicsContext). The later does the actual drawing whereas the former manages windows and events. This separation is just great to have multiple graphics backends like art, xlib and cairo share the same x11 display server.&lt;br /&gt;
So code in gnustep-gui calls methods of the display server, and code in gnustep-back translates those calls to native calls of the system you are running on.&lt;br /&gt;
&lt;br /&gt;
This means that application developers use the OpenStep/GNUstep/MacOS-X AppKit API to write their applications, and the gnustep-back library uses the native functionality to do the job where possible.&lt;br /&gt;
For instance, you do cut and paste or DnD using the OpenStep API for that, and on an ms-windows system, the actual calls to perform the operations are the native win32 ones. ie we leave the job to the operating system, so cut and paste from gnustep applications can interact with cut and paste from native win32 applications.&lt;br /&gt;
Of course, where the two APIs (OpenStep and win32) operate in very different ways, the conversion between the two is hard, but often the layer between the two is quite thin.&lt;br /&gt;
&lt;br /&gt;
One area where there is not much scope for overlap is drawing within a window ... the way that the OpenStep API operates is so different from ms-windows or X-windows that high level code for drawing things inside a windows using the native operating system generally cannot fit with OpenStep, so the gui library does all the drawing inside the window with quite low level code rather than trying to map OpenStep 'controls' to native 'widgets'.&lt;br /&gt;
&lt;br /&gt;
Since the basic design of the two (frontend and backend) libraries is, to draw OpenStep controls rather than try to map to native controls (because that's generally easier and makes the code very portable), we generally make no use of native widgets.&lt;br /&gt;
However, the gui frontend can dynamically load a theme engine to draw it's controls, and a theme engine is free to try to draw parts of a window using its own code ... so it can use the native controls where that's a practical solution.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Problems compiling (loading shared libs) ===&lt;br /&gt;
&lt;br /&gt;
If you get something like&lt;br /&gt;
&lt;br /&gt;
  plmerge: error while loading shared libraries:&lt;br /&gt;
  libgnustep-base.so.1: cannot open shared object file: No such file or directory&lt;br /&gt;
&lt;br /&gt;
or this:&lt;br /&gt;
&lt;br /&gt;
  Making all for service example...&lt;br /&gt;
  make[2]: *** [example.service/Resources/Info-gnustep.plist] Error 1&lt;br /&gt;
  make[1]: *** [example.all.service.variables] Error 2&lt;br /&gt;
  make[1]: Leaving directory `/home/multix/gnustep-gui-0.8.6/Tools'&lt;br /&gt;
  make: *** [internal-all] Error 2&lt;br /&gt;
&lt;br /&gt;
This means your GNU make is being overly protective. When you try to become root (e.g. to install something), certain environment variables like LD_LIBRARY_PATH are unset in order to reduce the possibility of a security breach. If you are becoming root to install something, you need to exec the GNUstep.sh file as root, just as you do when you login. Although for simplicity, you can also try this:&lt;br /&gt;
&lt;br /&gt;
  make LD_LIBRARY_PATH=$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
You could also be having problems with gcc. gcc 2.96 does not work (Mandrake 8.1, perhaps others). Use a different compiler, like gcc 3.x.&lt;br /&gt;
&lt;br /&gt;
=== Problems compiling (GNUstep Internal Error) ===&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
&lt;br /&gt;
  GNUSTEP Internal Error:&lt;br /&gt;
  The private GNUstep function to establish the argv and environment&lt;br /&gt;
  variables was not called.&lt;br /&gt;
  Please report the error to [mailto:bug-gnustep@gnu.org]&lt;br /&gt;
&lt;br /&gt;
when compiling the gui library, there could be several things wrong. One is that you installed the gnustep-objc library, but the compiler found another Objective-C library (like the one that came with gcc). If you are using gcc 3.x, DO NOT use the gnustep-objc library.&lt;br /&gt;
&lt;br /&gt;
There could also be a mismatch between the base and gui library versions. Make sure you have the latest release of each library installed.&lt;br /&gt;
&lt;br /&gt;
=== Problems with Alt key ===&lt;br /&gt;
&lt;br /&gt;
It's possible the Alt key is not where you think it is or is defined incorrectly. Try running the GSTest application, KeyboardInput test (located in the examples package at [ftp://ftp.gnustep.org/pub/gnustep/core FTP]) to test it. See [http://www.gnustep.org/resources/documentation/User/Gui/KeyboardSetup.html keyboard setup] for information on how to change the settings.&lt;br /&gt;
&lt;br /&gt;
If you are using [[Window Maker]], it's possible it is grabbing this key and using it for itself. To check, open Window Maker's WPrefs and go to the Mouse Preferences. Then use another value for the &amp;quot;Mouse grab modifier&amp;quot; (bottom right). That will allow you to alt-drag things.&lt;br /&gt;
&lt;br /&gt;
=== Problems with gcc3 ===&lt;br /&gt;
&lt;br /&gt;
Don't forget you need to update binutils and libc also.&lt;br /&gt;
&lt;br /&gt;
=== Problems with fonts ===  &lt;br /&gt;
&lt;br /&gt;
Why do the characters get changed to asterisks ('*')?&lt;br /&gt;
&lt;br /&gt;
The problem you are getting come from the fact that the xlib backend (when not using Xft) will only use one fixed X font for a given font name. If the font &amp;quot;helvetica&amp;quot; is used inside of GNUstep the one selected X font, in your case &amp;quot;-*-helvetica-medium-r-normal--12-*-*-*-p-*-iso8859-1&amp;quot; is used. So only characters (or glyphs) that are available in that font can be displayed. The selection of which font name to use happens inside the font_cacher and is more or less at random (the order fonts are listed by the X system).&lt;br /&gt;
&lt;br /&gt;
You can influence the fonts that are available by setting:&lt;br /&gt;
&lt;br /&gt;
  defaults write NSGlobalDomain GSFontMask &amp;quot;*iso8859-13&amp;quot;&lt;br /&gt;
  font_cacher&lt;br /&gt;
&lt;br /&gt;
(or using a different character set, like iso8859-2). This is really a bug in GNUstep, but it hasn't been fixed yet.&lt;br /&gt;
&lt;br /&gt;
The other option is the use the art backend, which handles fonts much better. When compiling gnustep-back, start with&lt;br /&gt;
&lt;br /&gt;
  ./configure --enable-graphics=art&lt;br /&gt;
&lt;br /&gt;
=== No characters displayed ===&lt;br /&gt;
&lt;br /&gt;
When using the xlib backend, no characters are displayed in any GNUstep applications.&lt;br /&gt;
&lt;br /&gt;
The xlib backend has font anti-aliasing turned on by default. It's possible that GNUstep can't find any fonts on your system that can be properly anti-aliased. Try&lt;br /&gt;
&lt;br /&gt;
  defaults write NSGlobalDomain GSFontAntiAlias NO&lt;br /&gt;
&lt;br /&gt;
to turn off font anti-aliasing.&lt;br /&gt;
&lt;br /&gt;
=== No Makefile ===&lt;br /&gt;
&lt;br /&gt;
I tried to compile something and I get:&lt;br /&gt;
&lt;br /&gt;
  GNUmakefile:27: /Makefiles/common.make: No such file or directory &lt;br /&gt;
  GNUmakefile:39: /Makefiles/aggregate.make: No such file or directory &lt;br /&gt;
  gmake: *** No rule to make target `/Makefiles/aggregate.make'.  Stop. &lt;br /&gt;
&lt;br /&gt;
Make sure you have installed the gnustep-make package and also type something like&lt;br /&gt;
&lt;br /&gt;
  source /usr/GNUstep/System/Library/Makefiles/GNUstep.sh&lt;br /&gt;
&lt;br /&gt;
depending on your GNUstep's installation path.&lt;br /&gt;
&lt;br /&gt;
You can put this line in your `.profile' or `.bash_profile' file so that it is done automatically when you log in.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
=== Why don't you just have Gorm output Renaissance files? ===&lt;br /&gt;
&lt;br /&gt;
Philosophical and architectural incompatibilities.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to install GNUstep on Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Yes! Please see [[Platform:BSD#Mac_OS_X | MacOS X installation notes]]. &lt;br /&gt;
&lt;br /&gt;
=== Is there any way to use gnustep-make and gnustep-base without using openapp/opentool? ===&lt;br /&gt;
&lt;br /&gt;
opentool is obsolete and you should be able to run command-line programs directly from your&lt;br /&gt;
shell prompt like any other command-line program.&lt;br /&gt;
&lt;br /&gt;
openapp is useful to run applications but in standard situations you can also run directly&lt;br /&gt;
the program from within the .app folder.&lt;br /&gt;
&lt;br /&gt;
=== Can GNUstep help with porting applications from MacOS X? Is there any HOWTO on that? ===&lt;br /&gt;
&lt;br /&gt;
See for example [http://tamsys.sourceforge.net/gtams/ Tamsys].&lt;br /&gt;
&lt;br /&gt;
=== Can I deploy my GNUstep application without requiring people to install GNUstep? ===&lt;br /&gt;
&lt;br /&gt;
No. Compare it to running Java applications without people requiring to install Java runtime environment.&lt;br /&gt;
&lt;br /&gt;
=== How can I get more information on Objective-C ? ===&lt;br /&gt;
&lt;br /&gt;
Take a look at the [[Objective-C]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GNUstep_Live_CD&amp;diff=6810</id>
		<title>GNUstep Live CD</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GNUstep_Live_CD&amp;diff=6810"/>
		<updated>2015-02-21T18:49:43Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are several efforts to create Live CDs of GNUstep&lt;br /&gt;
&lt;br /&gt;
==GNUSTEP live CD==&lt;br /&gt;
of Gürkan Sengün, [http://www.aiei.ch/gnustep/ Version 2.0] released on December 10, 2009&lt;br /&gt;
&lt;br /&gt;
===Supported architectures===&lt;br /&gt;
* i686&lt;br /&gt;
* AMD64&lt;br /&gt;
* PowerPC&lt;br /&gt;
* UltraSPARC&lt;br /&gt;
(all with multiple CPUs)&lt;br /&gt;
&lt;br /&gt;
===Minimal Requirements===&lt;br /&gt;
* 128 MB Memory&lt;br /&gt;
* CD-ROM drive or USB slot where you can boot from&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
I think a lot of the bugs listed below are caused by GNUstep and WindowMaker, and not the Live CD itself.  The reason I say this is because I experience some of these issues with my GNUstep installation, and most times I build it from scratch from SVN or stable releases.&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
* Some windows (for instance in DBModeler.app) can't be accessed since the title bar is off-screen (a seasoned GNUstepper knows how to fix this but what about the newbies?) (This happens with most GNUstep apps, and should be fixed in GNUstep/Gorm)&lt;br /&gt;
: gdl2 doesn't build anymore with the latest gnustep tarball release!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bugs reported by Fred Kiefer:&lt;br /&gt;
&lt;br /&gt;
* There were no colour schemas predefined. &lt;br /&gt;
: Can you provide the schemas and tell where they get on the filesystem?&lt;br /&gt;
:: There's some under the Modules/ColorSchemes directory of SystemPreferences in svn.  I'm not 100% sure, but I think they go under $GNUSTEP_SYSTEM_ROOT/Library/Colors.&lt;br /&gt;
:::Is it possible that these are not installed? Where should I find those if I have /usr/lib/GNUstep as GNUstep root?&lt;br /&gt;
:::: As far as I know, there's no SystemPreferences package under Debian, which might be why you can't find it.  For some reason Debian packages Preferences (the Backbone program) and not SystemPreferences (the GNUstep program).  SystemPreferences seems to do a little more than Preferences as it's development is active, and I'm not sure if Backbone is.  In my opinion, the only Backbone program worth using is Terminal.app, because Ink can replace TextEdit and SystemPreferences can replace Preferences.&lt;br /&gt;
::::: I really like the tool &amp;quot;open&amp;quot;. TextEdit has several features more that Ink doesn't have. Does Ink handle RTFD, Font ligatures and kerning, Preferences?&lt;br /&gt;
::::: SystemPreferences doesn't build/work for me! And backbone is actively developped!&lt;br /&gt;
&lt;br /&gt;
===Feature Requests===&lt;br /&gt;
* it should be obvious how to install GNUstep on HD from within the Live CD (ideally by employing a GUI based wizard) &lt;br /&gt;
: I've got a text file on how to do it, what about you write an installer?&lt;br /&gt;
:: Can you mail me that file? How much is the effort needed to build such an installer (roundabout)?&lt;br /&gt;
::: Feel free to put it up on a server some where, cause I'd be interested too!  If the procedures aren't too intensive, it could probably be done by FOSDEM with sh scripts.&lt;br /&gt;
&lt;br /&gt;
:The file is online and linked at the Installing as install.txt&lt;br /&gt;
&lt;br /&gt;
===Future===&lt;br /&gt;
Future versions are planned, help is welcome and needed that gnustep-make,base,gui,back in Debian packages are updated to the latest tarball releases.&lt;br /&gt;
&lt;br /&gt;
== ALT Linux GNUstep starterkit ==&lt;br /&gt;
* Blame: Michael Shigorin, Eugene Rostovtsev, Aleksey Novodvorsky of [http://en.altlinux.org/ALT_Linux_Team ALT Linux Team]&lt;br /&gt;
* Releases: March/April/June 2014 so far, joined [http://nightly.altlinux.org/p7/release/ quarterly starterkits]&lt;br /&gt;
* Platforms: i586/x86_64 (BIOS/UEFI)&lt;br /&gt;
* [http://en.altlinux.org/Starterkits/gnustep Wiki page] (info, screenshots, downloads...)&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Application_wish_list&amp;diff=6809</id>
		<title>Application wish list</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Application_wish_list&amp;diff=6809"/>
		<updated>2015-02-20T00:22:02Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What applications do you want for GNUstep? Please check the [[:Category:Applications|list of applications]] before adding.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
=== Database management ===&lt;br /&gt;
&lt;br /&gt;
A desktop software (like [http://sourceforge.net/projects/pgaccess/ PgAccess] for example) to manage database. This program could use the GDL2 (Gnustep Database Library). It could be a good exercise and demonstration of this very good library.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
=== Project Management app ===&lt;br /&gt;
&lt;br /&gt;
Something like [http://www.simpleprojectmanagement.com/planner/home.html Planner]. It has to be simple, not overbloated as MS Project.&lt;br /&gt;
&lt;br /&gt;
=== nib2gmodel/nib2gorm without OPENSTEP/MacOSX ===&lt;br /&gt;
GORM can open NIB files created with MacOSX 10.2 and later.  OPENSTEP/MacOSX is still needed for older NIB files.&lt;br /&gt;
&lt;br /&gt;
=== CVS app ===&lt;br /&gt;
&lt;br /&gt;
Port CVL.&lt;br /&gt;
&lt;br /&gt;
=== F-Script ===&lt;br /&gt;
[http://www.fscript.org/ F-Script] is useful for examining applications' properties and various Objective-C objects. It's FOSS, but I don't think there's a GNUstep port yet.&lt;br /&gt;
&lt;br /&gt;
: this is highly dependent on the objc-runtime&lt;br /&gt;
&lt;br /&gt;
=== ManOpen ===&lt;br /&gt;
[http://www.clindberg.org/projects/ManOpen.html] Source is available and even an OpenSTEP variant. But not GNUstep.&lt;br /&gt;
&lt;br /&gt;
== Graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Blender ===&lt;br /&gt;
&lt;br /&gt;
Blender has recently (since October 2002) gone GPL. Consisting of porting the Blender GUI/WM abstract library GHOST, using NSOpenGLContext, or a CoreGraphics implementation one day. Objective-C++ might be needed for implementing GHOST, but probably can be worked around easily enough. There is an OSX port, probably using CoreGraphics.&lt;br /&gt;
&lt;br /&gt;
[http://www.blender.org/ Blender Foundation Homepage]&lt;br /&gt;
&lt;br /&gt;
Most of Blender is written in C++ doesn't seem to use CoreGraphics but Apple's GL.&lt;br /&gt;
&lt;br /&gt;
=== OmniGraffle clone ===&lt;br /&gt;
&lt;br /&gt;
(I don't really know what this is, but people have said they want one. Someone please add a description! :)&lt;br /&gt;
&lt;br /&gt;
This is for diagram, UML ....&lt;br /&gt;
I 'm thinking to write it. But not *right now*.&lt;br /&gt;
It will have probably a Gorm-feel&lt;br /&gt;
&lt;br /&gt;
[http://www.omnigroup.com/applications/omnigraffle/ OmniGraffle] was a clone of Lighthouse Design's Diagram.app, which was a re-working of the NeXT Developer Example Sketch.app, adding rubber-banding / angular connection lines.&lt;br /&gt;
&lt;br /&gt;
=== OmniOutliner clone ===&lt;br /&gt;
&lt;br /&gt;
This is a really cool app which can be used for anything. Mostly i think it is used to organise your minds while being creative (some kind of knowledge manager).&lt;br /&gt;
&lt;br /&gt;
The inspiration for this was Jayson Adams' Millennium Software's NoteBook.app, which lives again as the (commercial) program [http://www.aquaminds.com/ NoteTaker].&lt;br /&gt;
&lt;br /&gt;
=== Painting app (photoshop) ===&lt;br /&gt;
&lt;br /&gt;
Bitmap drawing app.&lt;br /&gt;
&lt;br /&gt;
Think Photoshop, not [http://www.gimp.org/ The Gimp].&lt;br /&gt;
&lt;br /&gt;
In fact, forget that. Something new.&lt;br /&gt;
&lt;br /&gt;
Something usable - can do Photoshop, but easy to learn. The Gimp can nearly do photoshop, but who can use it?&lt;br /&gt;
&lt;br /&gt;
It would be great if it consisted of two parts - a very small very useful image viewer/manager (eg gqview) and the actual editor plugin (the big part). So installing image-core would give a very small useful app, then adding image-edit would make it into photoshop.&lt;br /&gt;
&lt;br /&gt;
When opening an image file eg by clicking on it or running image-core thefile.jpg then only the core apps should start, so it starts real quick. If i right-click and choose edit or something .. THEN the other stuff is pulled in.&lt;br /&gt;
&lt;br /&gt;
Or whatever. Just an idea. But makes development path cool. Could also have a vector plugin, or whatever.&lt;br /&gt;
&lt;br /&gt;
Maybe we should wait, when (if?) Gimp gets '[http://gegl.org/ gegl]'ed.&lt;br /&gt;
then having a decent photoshop like app would be as simple as writing a gui for the gegl foundation.&lt;br /&gt;
+ gives us a nice featureset + plugins!&lt;br /&gt;
&lt;br /&gt;
Maliwan project is aiming to achieve the same goal of GEGL. Right now GEGL isn't even half complete but we can still reimplement it base on GEGL's design. lastlife is waiting for you in irc if you want to discuss the idea. Maliwan is planned to be the heart of the BluTulip which is the actual application.&lt;br /&gt;
&lt;br /&gt;
* porting http://seashore.sourceforge.net/ from their website: Seashore is an open source image editor for Cocoa. It features gradients, textures and anti-aliasing for both text and brush strokes. It supports multiple layers and alpha channel editing. It is based around the GIMP's technology and uses the same native file format.&lt;br /&gt;
&lt;br /&gt;
a screenshot is here: [http://seashore.sourceforge.net/screenshot.php] which looks very clean and easy to use.&lt;br /&gt;
&lt;br /&gt;
=== Pixen (Pixel Art Tool) ===&lt;br /&gt;
&lt;br /&gt;
[http://www.pixenapp.com/ Pixen] is a decent, open source pixel art tool and there aren't alot of free or professional programs like it. There is also a compliment tool by the same guys for mapping called Reptile.&lt;br /&gt;
&lt;br /&gt;
A port can be found [http://home.gna.org/gsimageapps/ here].&lt;br /&gt;
&lt;br /&gt;
== MultiMedia ==&lt;br /&gt;
&lt;br /&gt;
=== iTunes/Rhythmbox clone ===&lt;br /&gt;
&lt;br /&gt;
It would be nice to see a music or video player with real music/media management like [https://wiki.gnome.org/Apps/Rhythmbox Rhythmbox] or [http://www.apple.com/itunes/ iTunes]. iTunes has started to support management of movies and videoclips, so maybe media management is the way to go?&lt;br /&gt;
&lt;br /&gt;
=== DivX/XViD/DVD/VCD Player ===&lt;br /&gt;
&lt;br /&gt;
I see that there was at least an attempt to port mplayer at one point but it seems to be dead. Maybe [http://www.videolan.org/ VLC] which does have an OSX version, could be ported.&lt;br /&gt;
&lt;br /&gt;
: ''Looks cool, but requires CoreFoundation'' -- cbv&lt;br /&gt;
&lt;br /&gt;
I'd like to see [http://www.dtek.chalmers.se/groups/dvd/ Ogle] (a DVD player) ported. [[User:Martin|Martin]]&lt;br /&gt;
&lt;br /&gt;
: ''As far as I can see, Ogle (the actual player) doesn't really need porting, only Ogle-gui (the user interface add-on), which is GTK2 based'' -- cbv&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&lt;br /&gt;
=== Torrent ===&lt;br /&gt;
A torrent client for GNUstep?&lt;br /&gt;
&lt;br /&gt;
=== ICQ ===&lt;br /&gt;
&lt;br /&gt;
And other instant messengers.&lt;br /&gt;
&lt;br /&gt;
* Check http://freshmeat.net/projects/fireapp/&lt;br /&gt;
* See [[Grouch]].&lt;br /&gt;
&lt;br /&gt;
=== Web browser ===&lt;br /&gt;
&lt;br /&gt;
Seems to be a popular request :).&lt;br /&gt;
&lt;br /&gt;
* Work is on the way to bring [[SimpleWebKit]], a small WebKit compatible library up to working condition.  [[SimpleWebKit]] is part of the GNUstep project and can be found in the SVN.  This library will allow the creation of a simple web browser, such as [[Vespucci.app]].&lt;br /&gt;
&lt;br /&gt;
* The WebKit project has also offered their support to anyone who wishes to port WebKit to GNUstep, [http://lists.gnu.org/archive/html/discuss-gnustep/2007-03/msg00290.html see this e-mail].  This framework would allow the creation of a fully functional web browser.&lt;br /&gt;
&lt;br /&gt;
=== Web services app ===&lt;br /&gt;
A [http://www.karelia.com/watson/ Watson] / Sherlock clone would be useful to me.&lt;br /&gt;
&lt;br /&gt;
=== Video conferencing software ===&lt;br /&gt;
&lt;br /&gt;
There's [http://www.ekiga.org/ Ekiga] (excellent piece of software) which it no longer dependent on the GNOME libraries to work but looses some functionality.&lt;br /&gt;
* Would be nice to have a GNUstep native application that could use the same protocols (SIP and H.323).&lt;br /&gt;
&lt;br /&gt;
== PIM ==&lt;br /&gt;
&lt;br /&gt;
=== Task management app ===&lt;br /&gt;
&lt;br /&gt;
Chronographer (lobbying by ludovic) + libical&lt;br /&gt;
or&lt;br /&gt;
~TaskManager (lobbying by Fabien) + libical&lt;br /&gt;
&lt;br /&gt;
Check SKYRIX libs (Opengroupware)&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
===Keychain===&lt;br /&gt;
I want a better Keychain. I need an architecture and app to securely store not just usernames and passwords, but also other useful data. Think associated email / verification method, SSH passwords and keys, email public and private keys, and user-defined name-value pairs (for unforeseen uses, this facilitates micro-formats, like a standard for voicemail PIN etc). And a pony!&lt;br /&gt;
&lt;br /&gt;
Apple indicates that their KeyChain is derived from the open-source Common Data Security Architecture, so such a project would not have to start from scratch. I'm unsure how useful the third-party open-source [http://sourceforge.net/projects/keychain Keychain Framework] would be.&lt;br /&gt;
&lt;br /&gt;
''The above mentioned keychain on SourceForge depends on Apple's own 'Security' framework. I'm not sure how much of it is publicly available (and if so, portable)'' -- cbv&lt;br /&gt;
&lt;br /&gt;
== Text Processing / Office ==&lt;br /&gt;
&lt;br /&gt;
=== Word Processor ===&lt;br /&gt;
&lt;br /&gt;
A port of the Cocoa version of [http://www.abisource.com/ AbiWord] would be great, considering a word processor is a pretty vital application, and that Abiword is a pretty good one.&lt;br /&gt;
&lt;br /&gt;
Porting Bean from the Macintosh 10.4 is currently done in the [[GAP]] GNUstep application project. It mostly works and the build is done using [[pbxbuild]], but no release to the general public yet.&lt;br /&gt;
&lt;br /&gt;
=== Spreadsheet ===&lt;br /&gt;
&lt;br /&gt;
A spreadsheet application would be great for GNUstep.  A clone of Lotus Improv or Lighthouse Design's Parasheet would be a nice thing for GNUstep to have.&lt;br /&gt;
&lt;br /&gt;
: You could look at porting [http://sourceforge.net/projects/flexisheet/ FlexiSheet]; it's the only Cocoa FOSS spreadsheet I know of. Coincidentally, it has a couple of ideas borrowed from Lotus Improv.&lt;br /&gt;
&lt;br /&gt;
There has been recent progress for a FlexiSheet revival. GNUmakefiles are done. The current application is in [[GAP]] cvs, no release yet to the general public.&lt;br /&gt;
&lt;br /&gt;
=== CSS/html editor ===&lt;br /&gt;
&lt;br /&gt;
A cool html/css editor - emphasis on the css structural side.&lt;br /&gt;
&lt;br /&gt;
Object oriented properties application to CSS element definitions, and insert those properties into HTML in web pages. Don't worry about WYSIWIG - that's what web browsers are for, displaying web pages. Just make a object-oriented CSS/HTML editor.&lt;br /&gt;
&lt;br /&gt;
Maybe port [http://www.w3.org/People/Berners-Lee/WorldWideWeb.html Nexus] for that?&lt;br /&gt;
&lt;br /&gt;
''This might actually be feasible, however, Nexus is based on [http://www.w3.org/Library/ libwww] and its source is, well, very NeXTSTEP'ish...'' -- cbv&lt;br /&gt;
&lt;br /&gt;
=== A simple DTP application ===&lt;br /&gt;
&lt;br /&gt;
A simple frame-based application for desktop publishing. Something like [http://www.calamus.net/ Calamus] ([http://www.calamus.net/man/index_us.htm here] is the documentation of tools and modules). Nothing fancy, just application that can lay out frames, control text flow, use paragraph styles and master pages.&lt;br /&gt;
&lt;br /&gt;
I'd rather see TeXView.app come back myself.... I think it's far more feasible (doing a decent page layout app is _hard_ just as Donald E. Knuth). Perhaps better still would be to take advantage of LyX's ``GUI-independence'' and provide a GNUstep front-end for it, http://www.lyx.org .&lt;br /&gt;
&lt;br /&gt;
No, nothing like LyX or TeX. I have in mind a ''visual'' page layout editing tool with features as described above (similar to PageMaker). LyX and TeX are a bit different approaches and should be alternatives to Frame based DTP application.&lt;br /&gt;
&lt;br /&gt;
 - Stefan&lt;br /&gt;
&lt;br /&gt;
I think a heavy-weight drawing package w/ page layout features would be a better solution here (this is the workflow I'm using on my NeXT Cube now), then it could be tied into an XML-based workflow in a fashion like to Apple's new Keynote, perhaps in a fashion like to Pages-by-Pages. To describe my workflow a bit---I now use Altsys Virtuoso on my NeXT Cube w/ Omega (Unicode-aware TeX variant) for most of my page layout. IME, if a document gets too large to manage w/ Altsys Virtuoso, it might as well go into TeX... Not that I'd mind seeing a replacement for PasteUp.app, I just think that a drawing program is more immediately important / useful.&lt;br /&gt;
&lt;br /&gt;
For simple DTP utility, I'd dearly love to see a re-creation of [http://www.kevra.org/TheBestOfNext/ThirdPartyProducts/ThirdPartySoftware/Utilities/FONTS/AdobeTouchType/AdobeTouchType.html TouchType.app]&lt;br /&gt;
&lt;br /&gt;
 - William&lt;br /&gt;
&lt;br /&gt;
Maybe you should take a look at [http://www.texmacs.org/ TeXmacs]. Looks promising and is in great need of a GNUstep frontend.&lt;br /&gt;
&lt;br /&gt;
 - david.&lt;br /&gt;
&lt;br /&gt;
Interesting. I'd seen TeXMacs mentioned on comp.text.tex quite often, but hadn't realized it had gotten as far as it had. Interesting counterpoint to LyX.&lt;br /&gt;
 - William&lt;br /&gt;
&lt;br /&gt;
One really interesting thing would be to have a fame class which would useful enough so it could be used to put together a simple DTP Application but which would be flexible enough that it could be available to any application - the text control is a standard control for windows managers like MS Windows or Gnome. If there were an equivalent &amp;quot;flowing graphic control&amp;quot;, you'd have a powerful building block indeed (note that in MS windows, the text control is actually poor enough that no credible application can built around besides notepad).&lt;br /&gt;
Also, for a programming text editor, scintilla is great. One thing to consider is that for DTP/HTML editor, what you would want would be a *superset* of the scintilla interface. It would be great to add all the different features in such a way that you didn't have interfaces duplicating each other's functionalities.&lt;br /&gt;
&lt;br /&gt;
-- JosephSolbrig&lt;br /&gt;
&lt;br /&gt;
=== Digital Librarian-like ===&lt;br /&gt;
&lt;br /&gt;
I would really, really like a Digital Librarian for GNUstep. Basically, imagine an application that manage your documents the same way iTunes manage your music or iPhoto your photos... (to take well-known OSX apps as example ;-)&lt;br /&gt;
&lt;br /&gt;
It would provide 1) automatic management of the documents by projects/ideas/whatever metadata 2) index your documents to let you search quickly in it 3) handles bibliography&lt;br /&gt;
As a postgrad student I have a LOT of articles in PDF/PS/DVI/html on my hard drive, and such an application would be really nice to help managing that.&lt;br /&gt;
&lt;br /&gt;
* How about something like [http://debian.uni-essen.de/misc/GNUstep/Apps/GNUlibrarian/ GNULibrarian]?  I was just browsing the other day and found it! [[User:Stefanbidi|Stefanbidi]]&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
=== Old NeXTSTEP/OPENSTEP apps ===&lt;br /&gt;
See [http://www.levenez.com/NeXTSTEP/meApps.html this side (in French)] for a list.&lt;br /&gt;
&lt;br /&gt;
=== Frontend for different platform to [http://www.granddictionnaire.com/ Grand Dictionnaire (in French)] ===&lt;br /&gt;
&lt;br /&gt;
=== Keyboard switcher application ===&lt;br /&gt;
&lt;br /&gt;
=== Google.app ===&lt;br /&gt;
&lt;br /&gt;
* Complete with ApplicationServices&lt;br /&gt;
* WebBrowser integration&lt;br /&gt;
* Using proper NS* classes for HTML retrieval&lt;br /&gt;
* Ability to select which Google server (www.google.ca, www.google.co.jp)&lt;br /&gt;
* Google News, Google Groups, Google Images too.&lt;br /&gt;
&lt;br /&gt;
Hns: his looks more like a general WebBrowser than a special Google.app&lt;br /&gt;
&lt;br /&gt;
=== DMG.app? ===&lt;br /&gt;
&lt;br /&gt;
* Installer/extractor/viewer for DMG images.&lt;br /&gt;
* Create DMG packages&lt;br /&gt;
* Useful for OSX source packages&lt;br /&gt;
&lt;br /&gt;
''Note:'' The DMG format is Apple proprietary and undocumented. Basically, DMG support is only available under OSX and its unlikely to change.&lt;br /&gt;
&lt;br /&gt;
=== CronniX - A cron front end ===&lt;br /&gt;
&lt;br /&gt;
http://www.abstracture.de/projects-en/cronnix&lt;br /&gt;
&lt;br /&gt;
That won't be easily portable, as different OSs use a different cron setup. Eg. BSD has (and uses) both, /etc/crontab __and__ /var/cron/tabs/&amp;lt;username&amp;gt; ...&lt;br /&gt;
&lt;br /&gt;
=== PfaEdit - A font editor ===&lt;br /&gt;
&lt;br /&gt;
PfaEdit has its name changed to [http://fontforge.sourceforge.net/ FontForge].&lt;br /&gt;
&lt;br /&gt;
Actually, Cenon (see above) is able to do some limited font editing. Not to knock pfaedit, I use it a lot and think it's a way cool program. Wonder if the two could be merged somehow.&lt;br /&gt;
&lt;br /&gt;
=== GuileServices / StepTalk Services ===&lt;br /&gt;
&lt;br /&gt;
On NeXTSTEP there was an application (service?) called [http://www.doubleu.com/TickleServices.html TickleServices] that allowed you to write your own services in the Tcl language. Something along these lines, but using guile/steptalk would be a nice addition to gnustep.&lt;br /&gt;
&lt;br /&gt;
=== Printer.app ===&lt;br /&gt;
&lt;br /&gt;
An application/framework for managing printers, printer properties and print queues. (CUPS frontend?) (NOTE: To an extent, GNUstep already has CUPS support, and has number of builtin classes and panels for managing printers and printer settings. They may just need to be extended a little for different uses and environments.)&lt;br /&gt;
&lt;br /&gt;
=== Growl! (Global notification system) ===&lt;br /&gt;
&lt;br /&gt;
[http://growl.info/ Growl!] uses distributed notification center to display a graphic message on screen. Every application can send messages to it, for example, when new emails arrive, buddies sign in the instant messager, a task end, etc. It is very easy to implement.&lt;br /&gt;
&lt;br /&gt;
''Parts require CoreFoundation and/or WebKit'' -- cbv&lt;br /&gt;
&lt;br /&gt;
Perhaps the CoreFoundation bits could be handled by [http://developer.apple.com/opensource/cflite.html CF-Lite].&lt;br /&gt;
&lt;br /&gt;
''Since about version 299 CoreFoundation doesn't compile properly anymore on systems other than Darwin.'' -- [[User:Cbv|cbv]]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Main_Page&amp;diff=6808</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Main_Page&amp;diff=6808"/>
		<updated>2015-02-19T22:19:46Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.gnustep.wordpress.com Spanish]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid black; background-color:lavender; padding:10pt; width:100%&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''[http://www.gnustep.org GNUstep]''' is a [[Portability|cross-platform]], object-oriented set of [[Frameworks|frameworks]] for desktop application [[Development tools|development]].&amp;lt;br&amp;gt;This set of frameworks, based on [[Cocoa]] (previously [[OpenStep]]), enables developers to rapidly build sophisticated software by employing a large library of reusable software components. GNUstep is already used [[GNUstep in production|in production]] environments at several organizations.&lt;br /&gt;
&lt;br /&gt;
Sounds interesting? Have a look at the more in-depth [[Introduction to GNUstep|introduction]]!&lt;br /&gt;
&lt;br /&gt;
* '''Download Stable Core Packages :''' [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-make-2.6.6.tar.gz Make v2.6.6], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-base-1.24.6.tar.gz Base v1.24.6], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-gui-0.24.0.tar.gz GUI v0.24.0], [http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-back-0.24.0.tar.gz Back v0.24.0]&lt;br /&gt;
&lt;br /&gt;
* '''Download Unstable Core packages : ''' (NOTE: Now only in the SVN software repository)&lt;br /&gt;
&lt;br /&gt;
* '''Developer applications:''' [[Gorm.app|Gorm 1.2.20]], [[ProjectCenter.app| ProjectCenter 0.6.1]]&lt;br /&gt;
&lt;br /&gt;
New Objective-C 2.0 [[ObjC2_FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
If you find bugs, please refer how to [[ Report_Bugs | report bugs]]. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border:1px solid black; background-color:lavender; padding:10pt; width:100%&amp;quot;&lt;br /&gt;
| All packages are collected in the searchable [http://www.gnustep.org/softwareindex/ Software Index] which also has an [http://www.gnustep.org/softwareindex/rss.php RSS feed].&lt;br /&gt;
There are some [[Themes]] for the GNUstep apps.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:right; vertical-align:top; font-size:10px;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[{{SERVER}}{{localurl:Template:GNUstep_News|action=edit}} '''Add Entry''']&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{GNUstep_News}}&lt;br /&gt;
&lt;br /&gt;
== Older News ==&lt;br /&gt;
&lt;br /&gt;
[[Application_News_2012|2012]],&lt;br /&gt;
[[Application_News_2011|2011]],&lt;br /&gt;
[[Application_News_2010|2010]],&lt;br /&gt;
[[Application_News_2009|2009]],&lt;br /&gt;
[[Application_News_2008|2008]],&lt;br /&gt;
[[Application_News_2007|2007]],&lt;br /&gt;
[[Application_News_2006|2006]],&lt;br /&gt;
[[Application_News_2005|2005]],&lt;br /&gt;
[[Application_News_2004|2004]],&lt;br /&gt;
[[Application_News_2003|2003]],&lt;br /&gt;
[[Application_News_2002|2002]]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background: #ff958e;&amp;quot;&lt;br /&gt;
| If you want to participate, you need to [[Special:Userlogin|create an account]] and send an e-mail with your user name to [mailto:gnustep-webmasters@gnu.org gnustep-webmasters@gnu.org] to request write-access. We are sorry for the inconvenience, but this procedure has become necessary to prevent spamming of this site.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Pyobjc&amp;diff=6807</id>
		<title>Pyobjc</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Pyobjc&amp;diff=6807"/>
		<updated>2015-02-19T22:15:15Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Framework|&lt;br /&gt;
shortdescription = Bridge between the Python and Objective-C |&lt;br /&gt;
currentversion = [https://bitbucket.org/ronaldoussoren/pyobjc/get/pyobjc-2.5.1.tar.gz 2.5.1] |&lt;br /&gt;
releasedate = Jun 17, 2006 |&lt;br /&gt;
license = MIT |&lt;br /&gt;
overview = &amp;lt; ... &amp;gt; |&lt;br /&gt;
features = &amp;lt; ... &amp;gt; |&lt;br /&gt;
maintainer = Bill Bumgarner, Ronald Oussoren, Steve Majewski, Lele Gaifax |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://pyobjc.sourceforge.net/ |&lt;br /&gt;
category = [[Category:Scripting Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Development_tools&amp;diff=6806</id>
		<title>Development tools</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Development_tools&amp;diff=6806"/>
		<updated>2015-02-19T22:09:48Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;More about development tools: http://www.gnustep.org/experience/DeveloperTools.html&lt;br /&gt;
&lt;br /&gt;
== Gorm - Graphical Object Relationship Modeller ==&lt;br /&gt;
&lt;br /&gt;
Gorm stands for &amp;quot;Graphical Object Relationship Modeller&amp;quot; and is GNUstep's easy-to-use interface designer. &lt;br /&gt;
&lt;br /&gt;
With Gorm designing tough and complex graphical interfaces for your applications can be done easily and quickl, using drag &amp;amp; drop, powerful inspectors and teamwork with ProjectCenter.&lt;br /&gt;
&lt;br /&gt;
Gorm allows developers to quickly create and edit graphical application interfaces using a whole lot of GUI elements: windows, menus, buttons, labels, sliders, tables, textfields, browsers, images, altert panels and more. Custom palettes can be dynamically loaded to add additional elements or functionality.&lt;br /&gt;
&lt;br /&gt;
After creating the interface, objects can be linked using mouse operations. Also Gorm features interactive testing of interfaces.&lt;br /&gt;
&lt;br /&gt;
Please see the following wiki sections to learn tips on how to effectively utilize Gorm:&lt;br /&gt;
&lt;br /&gt;
* [[Gorm Manual]]&lt;br /&gt;
* [[Gorm FAQ]]&lt;br /&gt;
* [[Gorm Installation On Windows]]&lt;br /&gt;
&lt;br /&gt;
Also see the following external links:&lt;br /&gt;
&lt;br /&gt;
* ''' [http://www.gnustep.org/experience/Gorm.html Official Gorm page] '''&lt;br /&gt;
&lt;br /&gt;
* '''[https://packages.debian.org/search?suite=default&amp;amp;section=all&amp;amp;arch=any&amp;amp;searchon=names&amp;amp;keywords=gorm  Debian Offical Release]'''&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.freshports.org/devel/gorm FreeBSD Ports]'''&lt;br /&gt;
&lt;br /&gt;
== Project Center ==&lt;br /&gt;
''' [http://www.gnustep.org/experience/ProjectCenter.html Project Center] '''&lt;br /&gt;
&lt;br /&gt;
ProjectCenter is GNUstep's integrated developement environment (IDE). It is based in part on NeXT's original Project Builder. It assists you in starting new projects and lets you manage your project files using a intuitive and well ordered graphical user interface.&lt;br /&gt;
&lt;br /&gt;
* [[ProjectCenter FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Unit Testing ===&lt;br /&gt;
&lt;br /&gt;
GNUstep is blessed with a number of unit test frameworks: &lt;br /&gt;
&lt;br /&gt;
* Traditionally, it has provided a [http://www.gnustep.org/resources/documentation/testdoc_toc.html testing environment] based around Guile, an implementation of Scheme that has been blessed as the preferred GNU scripting language. It has been hard to convince Objective-C programmers to write tests in this language, and the utility of the package has not lived up to expectations.&lt;br /&gt;
&lt;br /&gt;
* GNUstep now also contains a unit testing framework intended as general framework for testing the core GNUstep libraries, called [http://lists.gnu.org/archive/html/gnustep-dev/2005-06/msg00050.html Testsuite]. This may not be suitable for more general unit testing of applications as it's been designed to operate with little of the GNUstep environment actually running. ''Tip: use this if you're describing or fixing bugs or features in base, gui etc.''&lt;br /&gt;
&lt;br /&gt;
* [https://gna.org/projects/etoile Étoilé] contains a port to GNUstep of [https://github.com/etoile/UnitKit UnitKit 1.5]. This is a straight-forward unit testing environment, suited to the needs of application developers. It also works under X-code on MacOS X.&lt;br /&gt;
&lt;br /&gt;
* [http://www.sente.ch/ Sen:te] have provided a unit testing environment called [http://www.sente.ch/software/ocunit/ OCUnit] which apparently works under GNUstep, although there are comments in the mailing lists about difficulty getting it working.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[:Category:Frameworks|Official Development Frameworks]]&lt;br /&gt;
* [[:Category:Development Frameworks|Development Frameworks]]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=KoKit&amp;diff=6805</id>
		<title>KoKit</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=KoKit&amp;diff=6805"/>
		<updated>2015-02-19T22:04:16Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = KoKit is a framework collection, that extends the functionality of GNUstep's [[Foundation]] and [[AppKit]]. |&lt;br /&gt;
&lt;br /&gt;
currentversion = 0.3.2 |&lt;br /&gt;
&lt;br /&gt;
releasedate = June 29, 2006 |&lt;br /&gt;
&lt;br /&gt;
license = Dual BSD/LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = This is a dead project, but the CVS repo files might be able to be grabbed from the the archive links. |&lt;br /&gt;
&lt;br /&gt;
features = It currently consists of the following frameworks:&lt;br /&gt;
* '''[https://web.archive.org/web/20040806133438/http://www.knuddel.org/Projects/Kits/KoBase/ KoBase]''' is the low-level framework in the KoKit framework collection. It provides some simple to use debugging aids, instance counting to discover and track memory leaks, an [[HOM]] implementation and functions for easy C string manipulation.&lt;br /&gt;
&lt;br /&gt;
* '''[https://web.archive.org/web/20040806190531/http://www.knuddel.org/Projects/Kits/KoFoundation/ KoFoundation]''' is an extension to GNUstep's [[Foundation]] framework. It adds additional containers, such as LIFO (stack) and FIFO (queue), a signal handler and more.&lt;br /&gt;
&lt;br /&gt;
* '''KoAppKit''' is an extension to GNUstep's [[AppKit]] framework. It adds a collection of useful extensions and widgets that make GUI development a bit easier.&lt;br /&gt;
&lt;br /&gt;
* '''[https://web.archive.org/web/20040806133902/http://www.knuddel.org/Projects/Kits/KoCrypt/ KoCrypt]''' provides a collection of classes of cryptographic algorithms and categories for quick and easy access.&lt;br /&gt;
&lt;br /&gt;
* '''KoNet''' is a collection of classes that deal with BSD socket programming. |&lt;br /&gt;
&lt;br /&gt;
maintainer = * [mailto:cbv@gmx.net Chris Vetter] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category =&lt;br /&gt;
[[Category:Development_Frameworks]]&lt;br /&gt;
[[Category:Networking_Frameworks]]&lt;br /&gt;
[[Category:Security_Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Writing_documentation&amp;diff=6804</id>
		<title>Writing documentation</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Writing_documentation&amp;diff=6804"/>
		<updated>2015-02-19T21:49:36Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GNUstep documentation is produced by a variety of methods, but the main class reference documentation (i.e. the stuff you are concerned with if you are implementing new library code) is generated automatically from the Objective-C header files.&lt;br /&gt;
&lt;br /&gt;
The gnustep-make system supports automatic generation of documentation, and the gnustep-base library includes the autogsdoc tool used to produce the documentation.  Autogsdoc is similar tools like Doxygen or Javadoc, but was written before these tools were generally available and was designed specifically for Objective-C documentation.  it has the advantages of (relative) simplicity and no external dependencies ... if you have gnustep-base installed then you have the ability to generate GNUstep documentation.&lt;br /&gt;
&lt;br /&gt;
Basically, to provide documentation for a class, you place a comment immediately before the class in the header file, and start the comment with an extra asterisk ('/**' rather than '/*') to tell autogsdoc that the comment is part of the documentation.&lt;br /&gt;
&lt;br /&gt;
To provide documentation for an individual method, you place a comment immediately before the declaration of that method in the header.&lt;br /&gt;
&lt;br /&gt;
The autogsdoc tool takes the content of the comments an produces an intermediate XML representation which is then converted to HTML.  You can thereof use familiar markup like &amp;lt;br /&amp;gt; to force a line break in the documentation, but you must also be careful to escape &amp;lt; and &amp;amp; characters using 'lt' and 'amp' in your comments if you do not want them to be treated as markup.&lt;br /&gt;
&lt;br /&gt;
Autogsdoc also handles automatic cross referencing and formatting to a large extent, but the full details are beyond the scope of a small wikipedia article ... you should look at the autogsdoc documentation and the gsdoc markup language documentation for full information.&lt;br /&gt;
&lt;br /&gt;
What do you need to document?  Well, for each class or protocol you should provide an overview of what that class or protocol is intended to be used for, and should ideally provide example use cases and simple example code.  For each method in the class you should provide a description of what the method does, what effect different arguments have, what possible return values are, and what exceptions might be raised (if any).&lt;br /&gt;
&lt;br /&gt;
What you ''don't'' need to do is provide information about API versioning in the comments ... there are macros you should use in the header to define visibility of methods in different versions of the API, and autogsdoc should detect those automatically and insert information into the documentation to tell the reader which versions of the API the method is present in.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
See also&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/Developer/Tools/Reference/autogsdoc.html autogsdoc documentation]&lt;br /&gt;
* [http://linux.die.net/man/1/autogsdoc autogsdoc man page]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6803</id>
		<title>Objective-C Compiler and Runtime FAQ</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Objective-C_Compiler_and_Runtime_FAQ&amp;diff=6803"/>
		<updated>2015-02-19T01:02:22Z</updated>

		<summary type="html">&lt;p&gt;Mitchell-riley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objective-C Compiler and Runtime FAQ ==&lt;br /&gt;
&lt;br /&gt;
An Objective-C implementation comes in two components:&lt;br /&gt;
* '''Compiler''' - responsible for parsing the source code and produces a binary that contains calls to the functions in the runtime library&lt;br /&gt;
* '''Runtime Library''' - responsible for things like message sending and introspection&lt;br /&gt;
&lt;br /&gt;
=== How Many Runtimes Are there? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
If you have used Objective-C on Mac OS X, then you will have used one or both of Apple's two Objective-C runtimes.  The Apple legacy runtime is based on the version implemented by NeXT back in the '80s, although it has seen some improvements since that time and is often referred to as the NeXT runtime.  Apple's modern runtime is a complete rewrite, introduced with OS X 10.5.  The modern runtime is required for Objective-C 2 and is the default on 64-bit platforms.&lt;br /&gt;
&lt;br /&gt;
The implementation of Objective-C produced by NeXT was based on GCC and as such NeXT was required to release the relevant compiler changes.  The NeXT Objective-C runtime was not open sourced (it was later, after Apple bought NeXT, but the code is not particularly portable and so is not used on platforms other than Darwin) and so the GNU project created a new one, generally referred to as the GNU runtime.&lt;br /&gt;
&lt;br /&gt;
In 2009, a fork of this was committed to GNUstep subversion repository as libobjc2.  This contains a lot of new features and removes a lot of legacy code, but is not yet considered production ready.  Unlike the original GNU runtime (which will be referred to as the GCC runtime, for differentiation), this can be built outside of the GCC tree and distributed independently.  The GNUstep runtime supports two ABIs.  One is compatible with the GCC runtime, the other is new and is designed to support Objective-C 2.&lt;br /&gt;
&lt;br /&gt;
=== Which Runtime Should I use? ===&lt;br /&gt;
---------------------------&lt;br /&gt;
&lt;br /&gt;
If you are using a recent version of GCC to compile your code then you should have a copy of the Objective-C runtime library that came with your compiler.&lt;br /&gt;
&lt;br /&gt;
If you are using a very old version of GCC then you may need to use a newer version of GNU runtime.  If you experience problems with the version of runtime that came with your compiler, then you should install libobjc from GNUstep subversion (libs/libobjc/trunk).  This is a copy of version 1.6 of the GCC runtime which is modified to build outside the GCC tree.&lt;br /&gt;
&lt;br /&gt;
For more advanced features, currently only supported if you compile with Clang, you will need the GNUstep runtime.  This is not currently considered production ready.  It should work as a drop-in replacement for the GCC runtime, but some of the advanced features are not well-tested.&lt;br /&gt;
&lt;br /&gt;
=== What is or was the Étoilé Runtime? ===&lt;br /&gt;
----------------------------------&lt;br /&gt;
&lt;br /&gt;
The Étoilé Runtime is a research prototype that was originally intended to succeed the GNU runtime.  After some time, it was determined that porting GNUstep to a completely new - and radically differently designed - runtime would be a massive undertaking, as would providing all of the related compiler support.  It was also decided that two incompatible ABIs would not benefit anyone.  The author of the Étoilé runtime is the maintainer of the GNUstep runtime and has back-ported most of the improvements from the Étoilé runtime to the GNUstep runtime.&lt;br /&gt;
&lt;br /&gt;
=== Which Compiler Should I Use? ===&lt;br /&gt;
----------------------------&lt;br /&gt;
&lt;br /&gt;
The history of Objective-C in GCC is somewhat complicated.  Originally, NeXT was forced to release the original Objective-C front end in order to comply with the GPL.  This code was not quite compatible with the GNU runtime and so it was modified.  NeXT did not adopt these modifications and so each release of GCC by NeXT, and then Apple, contained changes that needed back-porting to the main branch of GCC.&lt;br /&gt;
&lt;br /&gt;
For a long time, GCC was the only compiler that worked with GNUstep.  Unfortunately, the GCC team has not invested much effort in Objective-C in the last few years and it currently lags behind Apple's version by a significant amount.&lt;br /&gt;
&lt;br /&gt;
As of version 4.3, the Free Software Foundation changed the license of GCC to version 3 of the GNU General Public License.  This means that future versions will not be shipped by Apple.  OS X 10.6 ships with three compilers:&lt;br /&gt;
&lt;br /&gt;
* Apple's fork of GCC 4.2.1&lt;br /&gt;
* LLVM-GCC&lt;br /&gt;
* Clang&lt;br /&gt;
&lt;br /&gt;
The latter two use the Low-Level Virtual Machine ([http://llvm.org/ LLVM]) for code generation.  This is a BSD-licensed compiler infrastructure used by several other projects.  LLVM-GCC is a hybrid, using Apple's version of GCC for parsing and LLVM for optimisation and native code generation.  Clang is a new front end for LLVM.&lt;br /&gt;
&lt;br /&gt;
Currently, LLVM-GCC is based on Apple's GCC and so does not support the GNU runtime.  There is an effort underway to rewrite LLVM-GCC as a plugin for GCC 4.5, at which point it should support as much Objective-C as GCC currently does.&lt;br /&gt;
&lt;br /&gt;
Unlike GCC, Clang features a clean abstraction layer between the runtime-specific and runtime-agnostic parts of the compiler.  This means that adding support for new features on the GNU runtime is simply a matter of implementing the relevant methods in the CGObjCGNU class.  This means that Clang is able to support almost everything on the GNUstep runtime that it does on either of the Apple runtimes.&lt;br /&gt;
&lt;br /&gt;
=== Which Bits of Objective-C 2 Work? ===&lt;br /&gt;
---------------------------------&lt;br /&gt;
&lt;br /&gt;
The answer to this question depends on the combination of compiler and runtime library that you are using.  Currently, no features of Objective-C 2 work with GCC.&lt;br /&gt;
&lt;br /&gt;
If you compile with Clang then you have access to declared properties, fast enumeration, and blocks.  Note that both of these require some support from the runtime.  This must be provided either by the GNUstep runtime or by the ObjectiveC2 framework, which you can acquire from Étoilé subversion.  For blocks to work, you must also compile with -fblocks.&lt;br /&gt;
&lt;br /&gt;
If you link with the -fobjc-nonfragile-abi flag then you will use the new ABI.  This is only supported with the GNUstep runtime.  This adds:&lt;br /&gt;
&lt;br /&gt;
* Property introspection&lt;br /&gt;
* Introspection on optional protocol methods&lt;br /&gt;
* Non-fragile instance variables&lt;br /&gt;
* Forwarding proxy support&lt;br /&gt;
&lt;br /&gt;
Unlike Apple's non-fragile ABI, it is possible to mix code compiled for our fragile and non-fragile ABIs with some caveats.  Message sending from code compiled with the fragile ABI will not be able to take advantage of forwarding proxies.  If you subclass a non-fragile ABI class with a class compiled with the fragile ABI then you will not receive any benefits; the class compiled with the fragile ABI must be able to see all of the instance variables in the superclass at compile time or things will break.  Some benefits will be obtained the other way around, however.  A class compiled for the fragile ABI will always be able to access its own instance variables safely when the superclass changes, even if the superclass layout changes.  It will, however, only be able to safely access instance variables declared in superclasses safely if the superclass is also compiled with the non-fragile ABI or if the superclass instance variable layout does not change.&lt;br /&gt;
&lt;br /&gt;
=== Can I use Apple's Runtime APIs? ===&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
You not only can, but should!&lt;br /&gt;
&lt;br /&gt;
With OS X 10.5, Apple introduced a new set of APIs for interacting with the runtime.  These hid the implementation details - previously all public - behind a set of public functions, implemented on both the modern and legacy runtimes.&lt;br /&gt;
&lt;br /&gt;
These functions are supported by the GNUstep runtime and can also be used with the GCC runtime if you link against Étoilé's ObjectiveC2 framework.&lt;br /&gt;
&lt;br /&gt;
From release 1.20.0 of the base library onwards the new runtime APIs are built in to the GNUstep base library (the Étoilé ObjectiveC2 framework is incorporated into base and extended/improved) so that the new APIs can be used with both old and new runtimes.&lt;br /&gt;
&lt;br /&gt;
=== What About Garbage Collection? ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
GNUstep has supported garbage collection via the [http://www.hboehm.info/gc/ Boehm GC] for some years.  Efforts are underway to bring this to closer compatibility with Apple's new implementation.&lt;br /&gt;
&lt;br /&gt;
=== Where can I get it ===&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
You may obtain the code for the modern Objective-C runtime from subversion at the following&lt;br /&gt;
subversion branch:&lt;br /&gt;
&lt;br /&gt;
svn://svn.gna.org/svn/gnustep/libs/libobjc2/releases/1.7&lt;br /&gt;
&lt;br /&gt;
Alternatively, a tarball is available from:&lt;br /&gt;
&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.txz txz]&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.tar.bz2 bz2]&lt;br /&gt;
[http://download.gna.org/gnustep/libobjc2-1.7.tgz tgz]&lt;/div&gt;</summary>
		<author><name>Mitchell-riley</name></author>
	</entry>
</feed>