<?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=Buzzdee</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=Buzzdee"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php/Special:Contributions/Buzzdee"/>
	<updated>2026-04-12T17:13:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7382</id>
		<title>Document based app with Gorm and PC</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7382"/>
		<updated>2024-09-07T21:10:53Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
As a result of learning about document based applications, and how to implement&lt;br /&gt;
them with PC and Gorm, I ended up with this, not overly useful, but working test application: https://github.com/buzzdeee/TestDocument&lt;br /&gt;
&lt;br /&gt;
It features:&lt;br /&gt;
* following MVC pattern&lt;br /&gt;
* built with PC and Gorm&lt;br /&gt;
* separate AppController and AppDelegate&lt;br /&gt;
* support for multiple document types&lt;br /&gt;
** separate .gorm files for each supported document type&lt;br /&gt;
* KVC/KVO&lt;br /&gt;
* ARC&lt;br /&gt;
* using some modern syntax&lt;br /&gt;
* Localization&lt;br /&gt;
** and switched default language to something else than English&lt;br /&gt;
&lt;br /&gt;
I'll cover some topics here, that will help understanding the application, and it's workflow.&lt;br /&gt;
&lt;br /&gt;
== MVC and document based apps ==&lt;br /&gt;
&lt;br /&gt;
Cocoa MVC (Model-View-Controller) is a design pattern used in Apple's Cocoa framework to separate concerns in an application. The Model represents the data and business logic, the View displays the data and handles user interface elements, and the Controller manages communication between the Model and View, updating the UI based on changes in the data. This separation promotes modularity, making the code more maintainable and reusable.&lt;br /&gt;
&lt;br /&gt;
In a Cocoa (or GNUstep) document-based app that supports multiple documents, the classes involved can be mapped to the Model-View-Controller (MVC) pattern. Here’s how the various components like NSDocument, NSDocumentController, NSWindowController, document model classes, and UI built with Gorm fit into MVC:&lt;br /&gt;
&lt;br /&gt;
# '''Model (M)''' The model represents the application's data and business logic. In a document-based app, the following components are part of the model:&lt;br /&gt;
## '''Plain classes for the document models''': These are your custom classes that contain the data and logic specific to your document. These classes are independent of the UI and are responsible for holding the document's data, performing any processing, and managing state.&lt;br /&gt;
## For example, if you’re building a text editor, the model class might store the text, keep track of formatting, and manage metadata (like the document title or file path).&lt;br /&gt;
## '''NSDocument''': While NSDocument primarily fits into the '''controller''' part of MVC, it also has some aspects of the '''model''' in Cocoa’s architecture. NSDocument handles saving, loading, and managing the undo functionality, so it acts as a mediator between the model data and persistence (reading/writing the file). It interacts closely with the document model classes to manage the actual content.&lt;br /&gt;
# '''View (V)''' The view is responsible for displaying the data and handling user input.&lt;br /&gt;
## '''UI built with Gorm''': Gorm is used to build the UI components in the app, which form the view. These include:&lt;br /&gt;
### Windows, menus, buttons, text fields, etc. created in Gorm are part of the '''view''' layer. They display the content of your document and allow users to interact with it.&lt;br /&gt;
### For example, if you're using a text editor, the NSTextView or custom views to display text are part of the view layer.&lt;br /&gt;
## '''NSWindowController''': The NSWindowController is responsible for managing the app’s windows and handling the interaction between the '''view''' and the document (controller). It loads the interface from a .gorm file (which contains the window and its views) and binds the UI elements to the document data. In strict MVC, it is part of the controller, but because it manages UI and views, it has aspects of both the '''controller''' and '''view''' layers.&lt;br /&gt;
# '''Controller (C)''' The '''controller''' manages the interactions between the '''model''' and the '''view''', mediating user input, updating the view, and manipulating the model as needed.&lt;br /&gt;
## '''NSDocument''': As mentioned, NSDocument serves as the document controller in this architecture. It communicates with the model (plain document classes) to retrieve and save the document data and updates the view when necessary. It also handles document-specific tasks like managing undo/redo, saving, and opening documents. It doesn't directly manage the UI but works closely with the NSWindowController to coordinate the display of the document.&lt;br /&gt;
## '''NSDocumentController''': This class is responsible for managing all documents in the application. It keeps track of which documents are open, handles creating new documents, and ensures that the correct document is presented in the appropriate window. NSDocumentController also manages interactions like opening recent files, handling document lifecycle events (new, open, close), and interacting with NSDocument objects. It plays a key role in coordinating the flow between the user’s actions and the document management.&lt;br /&gt;
## '''NSWindowController''': Though it has a close relationship with the view, NSWindowController also has controller responsibilities. It coordinates with NSDocument to ensure that the correct data is presented in the view. It manages the window’s lifecycle and keeps the UI in sync with the document data.&lt;br /&gt;
&lt;br /&gt;
=== Breakdown of the MVC components ===&lt;br /&gt;
&lt;br /&gt;
* '''Model''': Plain document classes (contain the data and business logic).&lt;br /&gt;
* '''View''': UI components built with Gorm, which display the document’s data.&lt;br /&gt;
* '''Controller''': &lt;br /&gt;
** ''NSDocument'': Bridges the model and the view, managing document-specific tasks (loading, saving, undo/redo).&lt;br /&gt;
** ''NSWindowController'': Manages windows and interfaces with NSDocument to update the views.&lt;br /&gt;
** ''NSDocumentController'': Oversees multiple documents, handles document creation, and ensures that the correct documents are open/active.&lt;br /&gt;
&lt;br /&gt;
=== Workflow example in MVC context ===&lt;br /&gt;
&lt;br /&gt;
# '''User Action''': A user opens an existing document from the File menu (View).&lt;br /&gt;
# '''Controller Response''': The NSDocumentController coordinates opening the file by creating or loading the corresponding NSDocument object (Controller).&lt;br /&gt;
# '''Model Interaction''': The NSDocument interacts with the plain document model class to load the data from the file (Model).&lt;br /&gt;
# '''UI Update''': The NSWindowController ensures that the document’s data is reflected in the views loaded from the Gorm interface file (View).&lt;br /&gt;
# '''User Edits''': The user modifies the document content via the UI (View), and the NSDocument updates the document model class accordingly (Model).&lt;br /&gt;
&lt;br /&gt;
In this way, each class in a Cocoa (GNUstep) document-based app has a clear responsibility within the MVC framework, ensuring separation of concerns and maintainability of the application’s architecture.&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
&lt;br /&gt;
The application was developed on OpenBSD, with just the main GNUstep packages installed. If you're up to it, and it's probably one of the easiest ways to get a a modern GNUstep development environment supporting libobjc2 and ARC up and running ;)&lt;br /&gt;
&lt;br /&gt;
# Install OpenBSD on a spare machine or VM, enable xdm&lt;br /&gt;
# install GNUstep as easy as: ''pkg_add gnustep-desktop''&lt;br /&gt;
# configure your .xsession alike:&lt;br /&gt;
&lt;br /&gt;
 if [ -f /usr/local/share/GNUstep/Makefiles/GNUstep.sh ];then&lt;br /&gt;
        . /usr/local/share/GNUstep/Makefiles/GNUstep.sh&lt;br /&gt;
 fi&lt;br /&gt;
 export GNUSTEP_STRING_ENCODING=NSUTF8StringEncoding&lt;br /&gt;
 export LC_ALL='en_EN.UTF-8'&lt;br /&gt;
 export LC_CTYPE='en_US.UTF-8'&lt;br /&gt;
 if [ -x /usr/local/bin/gpbs ];then&lt;br /&gt;
        /usr/local/bin/gpbs&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -x /usr/local/bin/gdnc ];then&lt;br /&gt;
        /usr/local/bin/gdnc&lt;br /&gt;
 fi&lt;br /&gt;
 wmaker &amp;amp;&lt;br /&gt;
 if [ -x /usr/local/bin/GWorkspace ];then&lt;br /&gt;
        /usr/local/bin/make_services&lt;br /&gt;
        /usr/local/bin/GWorkspace&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
With these simple steps, you'll have a working GNUstep development environment.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
If you want to debug, you may want to install egdb from packages as well.&lt;br /&gt;
To ease debugging, it might make sense to have the gnustep library sources around, and those build with debugging symbols, to do so:&lt;br /&gt;
# add the following to your /etc/doas.conf file:&lt;br /&gt;
           permit nopass keepenv :wsrc&lt;br /&gt;
           permit nopass keepenv :wheel&lt;br /&gt;
## NOTE: this allows passwordless root for the main user&lt;br /&gt;
# echo &amp;quot;echo 'DEBUG=-g -O0'&amp;quot; &amp;gt; /etc/mk.conf&lt;br /&gt;
# echo &amp;quot;echo 'SUDO=doas'&amp;quot; &amp;gt;&amp;gt; /etc/mk.conf&lt;br /&gt;
# doas pkg_delete gnustep-base gnustep-libobjc2 gnustep-make&lt;br /&gt;
# download and extract the ports.tar.gz to /usr/ports&lt;br /&gt;
# cd /usr/ports/x11/gnustep/&lt;br /&gt;
# make install&lt;br /&gt;
# make patch&lt;br /&gt;
&lt;br /&gt;
just reboot, or relogin, then you should have your GNUstep packages around, built with debugging symbols, as well as the sources on disk.&lt;br /&gt;
This will dramatically ease debugging using egdb.&lt;br /&gt;
&lt;br /&gt;
== ProjectCenter and Gorm ==&lt;br /&gt;
&lt;br /&gt;
GNUstep ProjectCenter and Gorm are tools for developing applications using the GNUstep framework.&lt;br /&gt;
&lt;br /&gt;
* '''ProjectCenter''' is an integrated development environment (IDE) that helps developers manage their projects, providing tools to create, organize, and compile GNUstep applications. It simplifies the setup and management of project files, source code, and build configurations, making it easier to develop Objective-C applications.&lt;br /&gt;
* '''Gorm''': (GNUstep Object Relationship Modeler) is a visual interface builder similar to Apple's Interface Builder. It allows developers to design user interfaces by dragging and dropping UI components, connecting them to the application's code, and managing the relationships between UI elements and objects, without writing the UI code manually.&lt;br /&gt;
&lt;br /&gt;
Together, these tools streamline the development of GNUstep-based applications by providing a cohesive environment for both project management and user interface design.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About ARC ==&lt;br /&gt;
&lt;br /&gt;
Automatic Reference Counting (ARC) in Cocoa is a memory management feature that automatically manages the retain and release of objects. ARC ensures that objects are deallocated when they are no longer needed by automatically inserting the necessary memory management calls (retain, release, autorelease) at compile time. This reduces the risk of memory leaks and eliminates the need for developers to manually manage memory, making code cleaner and less error-prone, while improving performance by avoiding manual reference counting.&lt;br /&gt;
&lt;br /&gt;
=== use ARC in your ProjectCenter application ===&lt;br /&gt;
&lt;br /&gt;
GNUstep PC doesn't default to use ARC when creating projects. Therefore you have to tweak the default Application&lt;br /&gt;
a bit:&lt;br /&gt;
&lt;br /&gt;
* Open the ''Project Inspector'' -&amp;gt; ''Build Attributes''&lt;br /&gt;
** ''ObjC Compiler Flags'': -fobjc-arc -g&lt;br /&gt;
* find the ''AppController.m'' in the ''Classes'' and remove the ''[super dealloc];'' line from the dealloc method&lt;br /&gt;
* find the ''&amp;lt;YOUR APPLICATION&amp;gt;_main.m'' in the ''Other Sources'' and add @autoreleasepool to it, so it looks alike:&lt;br /&gt;
&lt;br /&gt;
 int &lt;br /&gt;
 main(int argc, const char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
   @autoreleasepool&lt;br /&gt;
     {&lt;br /&gt;
       return NSApplicationMain (argc, argv);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
With ARC, explicit calls to ''dealloc'' are prohibited, and the ''@autoreleasepool'' context takes care about the memory management within your application.&lt;br /&gt;
&lt;br /&gt;
==== Separate AppDelegate and AppController responsibilities ====&lt;br /&gt;
GNUstep ProjectCenter default applications just provide a AppController class. To separate concerns, it might make sense to&lt;br /&gt;
separate out some life-cycle management from the AppController into the AppDelegate.&lt;br /&gt;
&lt;br /&gt;
In a document-based application, both AppDelegate and AppController play essential roles in the lifecycle and behavior of the app, but they serve different purposes. Let's clarify their jobs:&lt;br /&gt;
&lt;br /&gt;
'''AppDelegate''':&lt;br /&gt;
The AppDelegate class is responsible for handling the high-level app lifecycle and state transitions. It is defined in the Application Kit as a delegate for NSApplication. This class manages events such as the launch, termination, and background/foreground state of the application.&lt;br /&gt;
In a document-based app, the AppDelegate is not directly involved with managing individual documents (that's the job of NSDocument and NSDocumentController), but it coordinates the application-wide behavior.&lt;br /&gt;
&lt;br /&gt;
We'll let the ''AppDelegate'' handle Application Lifecycle Events:&lt;br /&gt;
* ''applicationDidFinishLaunching'': This method is called after the application has launched, and you can use it to perform setup tasks, like initializing application-wide data or settings.&lt;br /&gt;
* ''applicationWillTerminate'': Called before the application terminates, and you can use it to save data or clean up resources.&lt;br /&gt;
&lt;br /&gt;
'''AppController''':&lt;br /&gt;
The ''AppController'' class, though not a part of the default AppKit architecture, is a custom controller you can introduce. Its primary function is to act as the controller in the MVC pattern but on an application-wide level. This class often handles custom application logic that is not tied to a specific document or the app's lifecycle, unlike AppDelegate.&lt;br /&gt;
&lt;br /&gt;
In a document-based app, AppController might:&lt;br /&gt;
&lt;br /&gt;
* ''Coordinate Document Management'': It may interact with NSDocumentController to manage app-wide document-related features, like managing multiple types of documents or integrating additional functionality across all documents.&lt;br /&gt;
* ''Setup Application-Specific Logic'': It could handle custom actions like opening recent documents, setting up application-wide notifications, or dealing with specific app-wide user interface elements.&lt;br /&gt;
* ''Interface with UI Components'': It might be responsible for handling non-document-specific UI components like toolbars, menus, or status indicators that aren't directly tied to an individual document.&lt;br /&gt;
&lt;br /&gt;
=== Custom Document Controller ===&lt;br /&gt;
&lt;br /&gt;
Important facts about the custom NSDocumentController:&lt;br /&gt;
* It should be a subclass of NSDocumentController&lt;br /&gt;
* it's a Singleton, means, there's ever only one NSDocumentController class or subclass thereof in your application&lt;br /&gt;
* You might want to load it early, so the first instantiated NSDocumentController, will be your custom subclas.&lt;br /&gt;
** We're using the ''CustomInitializer'' class to help with that.&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7381</id>
		<title>Document based app with Gorm and PC</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7381"/>
		<updated>2024-09-07T20:53:20Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This tutorial is going to show off how to create a Document based app, it'll cover the following:&lt;br /&gt;
&lt;br /&gt;
* simple overview about MVC and document based apps&lt;br /&gt;
** what classes to be used and how it fits into the MVC model&lt;br /&gt;
** we'll use an ''AppDelegate'' to manage the main lifecycle&lt;br /&gt;
* using ProjectCenter to manage the project and coding&lt;br /&gt;
** simple introduction into PC, and some tips 'n tricks&lt;br /&gt;
** how to enable ARC in ProjectCenter&lt;br /&gt;
* using Gorm to create the UI&lt;br /&gt;
** main .gorm file for the menu&lt;br /&gt;
** separate .gorm files for the document types&lt;br /&gt;
* KVC/KVO to keep the UI in sync with the model&lt;br /&gt;
* the App we're going to create will be localized&lt;br /&gt;
** we'll switch the default language to something else than English ;)&lt;br /&gt;
* the app will handle multiple documents&lt;br /&gt;
&lt;br /&gt;
This tutorial is not meant for long time Mac Cocoa Objective-C developers. It's more for people like me, lacking a Mac, but&lt;br /&gt;
want to give the Cocoa Framework a try. To be honest, I read through &amp;quot;Cocoa Programming Developer's Handbook&amp;quot; by David Chisnall,&lt;br /&gt;
but still, afterward it took me a couple of weeks with the help of ChatGPT to get the test app we're going over here, to finally &lt;br /&gt;
work and being well structured. Reading the book, is very helpful in the first place, and dramatically helps talking to ChatGPT.&lt;br /&gt;
ChatGPT is actually not too bad, it's even aware of some differences between GNUstep and Cocoa, but sometimes hallucinates methods &lt;br /&gt;
that don't exist, or it might guide you into the wrong direction.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
* first there will be an overview about MVC, and the classes we're going to use in the App, and how these fit into the paradigm&lt;br /&gt;
** how things are wiring up&lt;br /&gt;
* then continue with a quick introduction into PC and Gorm&lt;br /&gt;
** some small tips 'n tricks to make using them a bit easier&lt;br /&gt;
* then we'll start implementing the application&lt;br /&gt;
** step by step, dealing with one type of document to be managed in the app&lt;br /&gt;
* at the end, you should be able to implement handling of a second type of document&lt;br /&gt;
&lt;br /&gt;
Code for the example application can be found here: https://github.com/buzzdeee/TestDocument&lt;br /&gt;
&lt;br /&gt;
== MVC and document based apps ==&lt;br /&gt;
&lt;br /&gt;
Cocoa MVC (Model-View-Controller) is a design pattern used in Apple's Cocoa framework to separate concerns in an application. The Model represents the data and business logic, the View displays the data and handles user interface elements, and the Controller manages communication between the Model and View, updating the UI based on changes in the data. This separation promotes modularity, making the code more maintainable and reusable.&lt;br /&gt;
&lt;br /&gt;
In a Cocoa (or GNUstep) document-based app that supports multiple documents, the classes involved can be mapped to the Model-View-Controller (MVC) pattern. Here’s how the various components like NSDocument, NSDocumentController, NSWindowController, document model classes, and UI built with Gorm fit into MVC:&lt;br /&gt;
&lt;br /&gt;
# '''Model (M)''' The model represents the application's data and business logic. In a document-based app, the following components are part of the model:&lt;br /&gt;
## '''Plain classes for the document models''': These are your custom classes that contain the data and logic specific to your document. These classes are independent of the UI and are responsible for holding the document's data, performing any processing, and managing state.&lt;br /&gt;
## For example, if you’re building a text editor, the model class might store the text, keep track of formatting, and manage metadata (like the document title or file path).&lt;br /&gt;
## '''NSDocument''': While NSDocument primarily fits into the '''controller''' part of MVC, it also has some aspects of the '''model''' in Cocoa’s architecture. NSDocument handles saving, loading, and managing the undo functionality, so it acts as a mediator between the model data and persistence (reading/writing the file). It interacts closely with the document model classes to manage the actual content.&lt;br /&gt;
# '''View (V)''' The view is responsible for displaying the data and handling user input.&lt;br /&gt;
## '''UI built with Gorm''': Gorm is used to build the UI components in the app, which form the view. These include:&lt;br /&gt;
### Windows, menus, buttons, text fields, etc. created in Gorm are part of the '''view''' layer. They display the content of your document and allow users to interact with it.&lt;br /&gt;
### For example, if you're using a text editor, the NSTextView or custom views to display text are part of the view layer.&lt;br /&gt;
## '''NSWindowController''': The NSWindowController is responsible for managing the app’s windows and handling the interaction between the '''view''' and the document (controller). It loads the interface from a .gorm file (which contains the window and its views) and binds the UI elements to the document data. In strict MVC, it is part of the controller, but because it manages UI and views, it has aspects of both the '''controller''' and '''view''' layers.&lt;br /&gt;
# '''Controller (C)''' The '''controller''' manages the interactions between the '''model''' and the '''view''', mediating user input, updating the view, and manipulating the model as needed.&lt;br /&gt;
## '''NSDocument''': As mentioned, NSDocument serves as the document controller in this architecture. It communicates with the model (plain document classes) to retrieve and save the document data and updates the view when necessary. It also handles document-specific tasks like managing undo/redo, saving, and opening documents. It doesn't directly manage the UI but works closely with the NSWindowController to coordinate the display of the document.&lt;br /&gt;
## '''NSDocumentController''': This class is responsible for managing all documents in the application. It keeps track of which documents are open, handles creating new documents, and ensures that the correct document is presented in the appropriate window. NSDocumentController also manages interactions like opening recent files, handling document lifecycle events (new, open, close), and interacting with NSDocument objects. It plays a key role in coordinating the flow between the user’s actions and the document management.&lt;br /&gt;
## '''NSWindowController''': Though it has a close relationship with the view, NSWindowController also has controller responsibilities. It coordinates with NSDocument to ensure that the correct data is presented in the view. It manages the window’s lifecycle and keeps the UI in sync with the document data.&lt;br /&gt;
&lt;br /&gt;
=== Breakdown of the MVC components ===&lt;br /&gt;
&lt;br /&gt;
* '''Model''': Plain document classes (contain the data and business logic).&lt;br /&gt;
* '''View''': UI components built with Gorm, which display the document’s data.&lt;br /&gt;
* '''Controller''': &lt;br /&gt;
** ''NSDocument'': Bridges the model and the view, managing document-specific tasks (loading, saving, undo/redo).&lt;br /&gt;
** ''NSWindowController'': Manages windows and interfaces with NSDocument to update the views.&lt;br /&gt;
** ''NSDocumentController'': Oversees multiple documents, handles document creation, and ensures that the correct documents are open/active.&lt;br /&gt;
&lt;br /&gt;
=== Workflow example in MVC context ===&lt;br /&gt;
&lt;br /&gt;
# '''User Action''': A user opens an existing document from the File menu (View).&lt;br /&gt;
# '''Controller Response''': The NSDocumentController coordinates opening the file by creating or loading the corresponding NSDocument object (Controller).&lt;br /&gt;
# '''Model Interaction''': The NSDocument interacts with the plain document model class to load the data from the file (Model).&lt;br /&gt;
# '''UI Update''': The NSWindowController ensures that the document’s data is reflected in the views loaded from the Gorm interface file (View).&lt;br /&gt;
# '''User Edits''': The user modifies the document content via the UI (View), and the NSDocument updates the document model class accordingly (Model).&lt;br /&gt;
&lt;br /&gt;
In this way, each class in a Cocoa (GNUstep) document-based app has a clear responsibility within the MVC framework, ensuring separation of concerns and maintainability of the application’s architecture.&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
&lt;br /&gt;
This tutorial was developed on OpenBSD, with just the main GNUstep packages installed. If you're up to it, and it's probably one of the easiest ways to get a a modern GNUstep development environment supporting libobjc2 and ARC up and running ;)&lt;br /&gt;
&lt;br /&gt;
# Install OpenBSD on a spare machine or VM, enable xdm&lt;br /&gt;
# install GNUstep as easy as: ''pkg_add gnustep-desktop''&lt;br /&gt;
# configure your .xsession alike:&lt;br /&gt;
&lt;br /&gt;
 if [ -f /usr/local/share/GNUstep/Makefiles/GNUstep.sh ];then&lt;br /&gt;
        . /usr/local/share/GNUstep/Makefiles/GNUstep.sh&lt;br /&gt;
 fi&lt;br /&gt;
 export GNUSTEP_STRING_ENCODING=NSUTF8StringEncoding&lt;br /&gt;
 export LC_ALL='en_EN.UTF-8'&lt;br /&gt;
 export LC_CTYPE='en_US.UTF-8'&lt;br /&gt;
 if [ -x /usr/local/bin/gpbs ];then&lt;br /&gt;
        /usr/local/bin/gpbs&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -x /usr/local/bin/gdnc ];then&lt;br /&gt;
        /usr/local/bin/gdnc&lt;br /&gt;
 fi&lt;br /&gt;
 wmaker &amp;amp;&lt;br /&gt;
 if [ -x /usr/local/bin/GWorkspace ];then&lt;br /&gt;
        /usr/local/bin/make_services&lt;br /&gt;
        /usr/local/bin/GWorkspace&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
With these simple steps, you'll have a working GNUstep development environment.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
If you want to debug, you may want to install egdb from packages as well.&lt;br /&gt;
To ease debugging, it might make sense to have the gnustep library sources around, and those build with debugging symbols, to do so:&lt;br /&gt;
# add the following to your /etc/doas.conf file:&lt;br /&gt;
           permit nopass keepenv :wsrc&lt;br /&gt;
           permit nopass keepenv :wheel&lt;br /&gt;
## NOTE: this allows passwordless root for the main user&lt;br /&gt;
# echo &amp;quot;echo 'DEBUG=-g -O0'&amp;quot; &amp;gt; /etc/mk.conf&lt;br /&gt;
# echo &amp;quot;echo 'SUDO=doas'&amp;quot; &amp;gt;&amp;gt; /etc/mk.conf&lt;br /&gt;
# doas pkg_delete gnustep-base gnustep-libobjc2 gnustep-make&lt;br /&gt;
# download and extract the ports.tar.gz to /usr/ports&lt;br /&gt;
# cd /usr/ports/x11/gnustep/&lt;br /&gt;
# make install&lt;br /&gt;
# make patch&lt;br /&gt;
&lt;br /&gt;
just reboot, or relogin, then you should have your GNUstep packages around, built with debugging symbols, as well as the sources on disk.&lt;br /&gt;
This will dramatically ease debugging using egdb.&lt;br /&gt;
&lt;br /&gt;
== ProjectCenter and Gorm ==&lt;br /&gt;
&lt;br /&gt;
GNUstep ProjectCenter and Gorm are tools for developing applications using the GNUstep framework.&lt;br /&gt;
&lt;br /&gt;
* '''ProjectCenter''' is an integrated development environment (IDE) that helps developers manage their projects, providing tools to create, organize, and compile GNUstep applications. It simplifies the setup and management of project files, source code, and build configurations, making it easier to develop Objective-C applications.&lt;br /&gt;
* '''Gorm''': (GNUstep Object Relationship Modeler) is a visual interface builder similar to Apple's Interface Builder. It allows developers to design user interfaces by dragging and dropping UI components, connecting them to the application's code, and managing the relationships between UI elements and objects, without writing the UI code manually.&lt;br /&gt;
&lt;br /&gt;
Together, these tools streamline the development of GNUstep-based applications by providing a cohesive environment for both project management and user interface design.&lt;br /&gt;
&lt;br /&gt;
== Creating your Project ==&lt;br /&gt;
With all that prepared, you're now ready to create the basic project:&lt;br /&gt;
&lt;br /&gt;
=== ProjectCenter ===&lt;br /&gt;
With either just gnustep-desktop package(s) installed, or even built by yourself from ports, you should now be able to just&lt;br /&gt;
start ProjectCenter from the command line, i.e. xterm window.&lt;br /&gt;
&lt;br /&gt;
Once it's started, you want to configure it a bit, to ensure a smooth experience ;)&lt;br /&gt;
&lt;br /&gt;
* Open the '''Preferences''' Build menu&lt;br /&gt;
** ensure '''External Build Tool''' points to ''/usr/local/bin/gmake'' or wherever your GNU Make is when you're not on OpenBSD. A BSD make just won't work.&lt;br /&gt;
* Open the '''Preferences''' Miscellaneous menu&lt;br /&gt;
** ensure '''Debugger''' points to ''/usr/local/bin/egdb'' or whatever is the right one for your platform&lt;br /&gt;
** ensure '''Editor''' is ''ProjectCenter''. That should be the default, you may use others, i.e. Gemas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now Open the ''Project'' -&amp;gt; ''New'' menu, select a suitable place where you want to have your project reside. &lt;br /&gt;
Ensure '''Project Type''' is set to '''Application''' and give it a name. We'll name our project '''DocumentBasedApp''' as you can see in the screenshot below.&lt;br /&gt;
(You may actually not want to choose /tmp as your destination folder ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voila, your first project.&lt;br /&gt;
&lt;br /&gt;
Now do some configurations, to add support for ARC, debugging, multiple languages...&lt;br /&gt;
&lt;br /&gt;
* Open the ''Project Inspector'' -&amp;gt; ''Project Languages'' &lt;br /&gt;
** and add a second language, i.e. ''German''&lt;br /&gt;
* Open the ''Project Inspector'' -&amp;gt; ''Project Attributes'' &lt;br /&gt;
** switch the ''Language'' to ''German''&lt;br /&gt;
** you may specify a bundle identifier, i.e. com.mydomain.documentbasedapp&lt;br /&gt;
** open the ''Document Types...'' button&lt;br /&gt;
*** activate the '''Document-based''' checkbox&lt;br /&gt;
*** enter the fields below (always hit return when finished editing):&lt;br /&gt;
**** ''Type'': MyDoc1&lt;br /&gt;
***** As it's identified throughout the application in code&lt;br /&gt;
**** ''Name'': My Doc 1&lt;br /&gt;
***** Not exactly sure where this is used&lt;br /&gt;
**** ''Icon'': not yet&lt;br /&gt;
***** we don't need it yet&lt;br /&gt;
**** ''Extension'': doc1&lt;br /&gt;
***** the file extension for your document type, without the leading .&lt;br /&gt;
**** ''Role'': Editor&lt;br /&gt;
***** might be ''Editor'' or ''Viewer'' depending on whether your app will edit or only view your documents&lt;br /&gt;
**** ''Class'': MyDoc1&lt;br /&gt;
***** the class in your code, that will handle these types of documents&lt;br /&gt;
*** finally hit the '''+''' sign to add it to the list of document types&lt;br /&gt;
*** you may now do the same for a second document type in a similar way: MyDoc2, or do it later&lt;br /&gt;
* Open the ''Project Inspector'' -&amp;gt; ''Build Attributes''&lt;br /&gt;
** ''ObjC Compiler Flags'': -fobjc-arc -g&lt;br /&gt;
*** to tell it to use ARC and add debugging symbols when building&lt;br /&gt;
** ''Install Domain'': you may change it to ''User''&lt;br /&gt;
* You may Open the ''Project Inspector'' -&amp;gt; ''Project Description''&lt;br /&gt;
** update there as well as you see fit&lt;br /&gt;
&lt;br /&gt;
With that, your project should be well configured.&lt;br /&gt;
&lt;br /&gt;
=== ARC support finished ===&lt;br /&gt;
* find the ''AppController.m'' in the ''Classes'' and remove the ''[super dealloc];'' line from the dealloc method&lt;br /&gt;
* find the ''DocumentBasedApp_main.m'' in the ''Other Sources'' and add @autoreleasepool to it, so it looks alike:&lt;br /&gt;
&lt;br /&gt;
 int &lt;br /&gt;
 main(int argc, const char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
   @autoreleasepool&lt;br /&gt;
     {&lt;br /&gt;
       return NSApplicationMain (argc, argv);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
With ARC, explicit calls to dealloc are prohibited, and the ''@autoreleasepool'' takes care about the memory management within your application.&lt;br /&gt;
&lt;br /&gt;
=== Build the app ===&lt;br /&gt;
&lt;br /&gt;
* open the build window&lt;br /&gt;
** configure the ''Build Options''&lt;br /&gt;
*** enable ''verbose output'''&lt;br /&gt;
** hit the build button&lt;br /&gt;
&lt;br /&gt;
With a bit of luck and no typos, the build should have succeeded!&lt;br /&gt;
&lt;br /&gt;
=== Launch the app ===&lt;br /&gt;
&lt;br /&gt;
* from the main project window, hit the launcher icon to open the launcher window&lt;br /&gt;
** NSLog output will show up here when you add it for your debugging aid&lt;br /&gt;
* hit the launch icon&lt;br /&gt;
&lt;br /&gt;
Voila, your first (quite useless) app is up and running.&lt;br /&gt;
&lt;br /&gt;
=== Add some classes we need ===&lt;br /&gt;
We're going to add some initial classes, put in a number of stub methods, we'll fill in with code later on.&lt;br /&gt;
We won't need all methods, but NSLog messages in them, will show the flow the application takes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Separate AppDelegate and AppController responsibilities ====&lt;br /&gt;
GNUstep ProjectCenter default applications just provide a AppController class. We're going to &lt;br /&gt;
separate out some life-cycle management from the AppController into the AppDelegate.&lt;br /&gt;
&lt;br /&gt;
In a document-based application, both AppDelegate and AppController play essential roles in the lifecycle and behavior of the app, but they serve different purposes. Let's clarify their jobs:&lt;br /&gt;
&lt;br /&gt;
'''AppDelegate''':&lt;br /&gt;
The AppDelegate class is responsible for handling the high-level app lifecycle and state transitions. It is defined in the Application Kit as a delegate for NSApplication. This class manages events such as the launch, termination, and background/foreground state of the application.&lt;br /&gt;
In a document-based app, the AppDelegate is not directly involved with managing individual documents (that's the job of NSDocument and NSDocumentController), but it coordinates the application-wide behavior.&lt;br /&gt;
&lt;br /&gt;
We'll let the ''AppDelegate'' handle Application Lifecycle Events:&lt;br /&gt;
* ''applicationDidFinishLaunching'': This method is called after the application has launched, and you can use it to perform setup tasks, like initializing application-wide data or settings.&lt;br /&gt;
* ''applicationWillTerminate'': Called before the application terminates, and you can use it to save data or clean up resources.&lt;br /&gt;
&lt;br /&gt;
'''AppController''':&lt;br /&gt;
The ''AppController'' class, though not a part of the default AppKit architecture, is a custom controller you can introduce. Its primary function is to act as the controller in the MVC pattern but on an application-wide level. This class often handles custom application logic that is not tied to a specific document or the app's lifecycle, unlike AppDelegate.&lt;br /&gt;
&lt;br /&gt;
In a document-based app, AppController might:&lt;br /&gt;
&lt;br /&gt;
* ''Coordinate Document Management'': It may interact with NSDocumentController to manage app-wide document-related features, like managing multiple types of documents or integrating additional functionality across all documents.&lt;br /&gt;
* ''Setup Application-Specific Logic'': It could handle custom actions like opening recent documents, setting up application-wide notifications, or dealing with specific app-wide user interface elements.&lt;br /&gt;
* ''Interface with UI Components'': It might be responsible for handling non-document-specific UI components like toolbars, menus, or status indicators that aren't directly tied to an individual document.&lt;br /&gt;
&lt;br /&gt;
==== Create AppDelegate ====&lt;br /&gt;
&lt;br /&gt;
* in the main project window select ''Classes''&lt;br /&gt;
* from the ''File'' menu open ''New in Project''&lt;br /&gt;
** select ''Objective-C class''&lt;br /&gt;
** enter the name: ''AppDelegate''&lt;br /&gt;
** activate checkbox: ''Add Header File''&lt;br /&gt;
* click the create&lt;br /&gt;
&lt;br /&gt;
Find and open your AppDelegate.h in the ''Headers''&lt;br /&gt;
&lt;br /&gt;
Update it to include the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#import &amp;lt;AppKit/AppKit.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@class AppController;&lt;br /&gt;
&lt;br /&gt;
// the AppDelegate shall implement the NSApplicationDelegate protocol&lt;br /&gt;
@interface AppDelegate : NSObject &amp;lt;NSApplicationDelegate&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// to link up the AppController&lt;br /&gt;
@property (nonatomic, strong) AppController *appController;&lt;br /&gt;
&lt;br /&gt;
@end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find the corresponding AppDelegate.m file in the ''Classes'' section.&lt;br /&gt;
Update it to include the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#import &amp;quot;AppDelegate.h&amp;quot;&lt;br /&gt;
#import &amp;quot;AppController.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
@implementation AppDelegate&lt;br /&gt;
&lt;br /&gt;
- (void)applicationWillFinishLaunching:(NSNotification *)notification&lt;br /&gt;
{&lt;br /&gt;
  // Initialize app here&lt;br /&gt;
  &lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: applicationWillFinishLaunching: was called&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
- (void)applicationDidFinishLaunching:(NSNotification *)notification&lt;br /&gt;
{&lt;br /&gt;
  // Initialize app here&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: applicationDidFinishLaunching: was called&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // link up the AppController &lt;br /&gt;
  self.appController = [[AppController alloc] init];  &lt;br /&gt;
  [self.appController setupApplication];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Invoked just before the application terminates. &lt;br /&gt;
// Use this method to perform cleanup tasks, save data, or release resources.&lt;br /&gt;
- (void)applicationWillTerminate:(NSNotification *)notification&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: applicationWillTerminate: %@&amp;quot;, notification);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Asks the delegate whether the application should terminate. &lt;br /&gt;
// Useful for prompting the user to save unsaved changes or cancel termination under certain conditions.&lt;br /&gt;
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender&lt;br /&gt;
{&lt;br /&gt;
//    if ([self.appController hasUnsavedChanges]) {&lt;br /&gt;
        // Prompt the user to save changes&lt;br /&gt;
        // Return NSTerminateLater if waiting for user input&lt;br /&gt;
//        return NSTerminateCancel; // Or NSTerminateNow based on user response&lt;br /&gt;
//    }&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: applicationShouldTerminate: %@&amp;quot;, sender);&lt;br /&gt;
  return NSTerminateNow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Determines whether the application should quit when the last window is closed. &lt;br /&gt;
// Returning YES makes the app quit automatically, which is common for utility applications.&lt;br /&gt;
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: applicationShouldTerminateAfterLastWindowClosed: was called&amp;quot;);&lt;br /&gt;
  return NO; // Return YES if the app should quit after the last window closes&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Handles requests to open files, typically when the user double-clicks a &lt;br /&gt;
// file associated with your app or drags a file onto the app icon.&lt;br /&gt;
- (void)application:(NSApplication *)sender openFiles:(NSArray&amp;lt;NSString *&amp;gt; *)filenames&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: openFiles: was called&amp;quot;);&lt;br /&gt;
//    for (NSString *filename in filenames) {&lt;br /&gt;
        // Open each file using your NSDocumentController&lt;br /&gt;
//        [[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:[NSURL fileURLWithPath:filename]&lt;br /&gt;
//                                                                                display:YES&lt;br /&gt;
//                                                                                  error:nil];&lt;br /&gt;
//    }&lt;br /&gt;
//    [sender replyToOpenOrPrint:NSApplicationDelegateReplySuccess];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Handles opening multiple URLs (including files) in response to user actions.&lt;br /&gt;
- (void)application:(NSApplication *)application openURLs:(NSArray&amp;lt;NSURL *&amp;gt; *)urls&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: openURLs: was called&amp;quot;);&lt;br /&gt;
//    for (NSURL *url in urls) {&lt;br /&gt;
        // Open each URL using your NSDocumentController&lt;br /&gt;
//        [[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:url&lt;br /&gt;
//                                                                                display:YES&lt;br /&gt;
//                                                                                  error:nil];&lt;br /&gt;
//    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Called when the user tries to reopen the application (e.g., clicking the app icon in the Dock) &lt;br /&gt;
// while it’s already running. Useful for restoring windows or bringing the app to the foreground.&lt;br /&gt;
- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: applicationShouldHandleReopen: was called&amp;quot;);&lt;br /&gt;
//    if (!flag) {&lt;br /&gt;
        // No visible windows, so open a new document window&lt;br /&gt;
//        [[NSDocumentController sharedDocumentController] newDocument:self];&lt;br /&gt;
//    }&lt;br /&gt;
  return YES;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Called when the application is about to become active. &lt;br /&gt;
// Useful for refreshing UI elements or updating data when the app gains focus.&lt;br /&gt;
- (void)applicationWillBecomeActive:(NSNotification *)notification&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: Application will become active.&amp;quot;);&lt;br /&gt;
  // Prepare for activation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Called when the application has become active. &lt;br /&gt;
// Useful for refreshing UI elements or updating data when the app gains focus.&lt;br /&gt;
- (void)applicationDidBecomeActive:(NSNotification *)notification&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: Application did become active.&amp;quot;);&lt;br /&gt;
  // Refresh UI or data&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Called when the application is about to resign its active status. &lt;br /&gt;
// Useful for pausing ongoing tasks or saving transient state.&lt;br /&gt;
- (void)applicationWillResignActive:(NSNotification *)notification&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: Application will resign active.&amp;quot;);&lt;br /&gt;
  // Pause tasks or disable certain UI elements&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Called when the application has resigned its active status. &lt;br /&gt;
// Useful for pausing ongoing tasks or saving transient state.&lt;br /&gt;
- (void)applicationDidResignActive:(NSNotification *)notification&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: Application did resign active.&amp;quot;);&lt;br /&gt;
  // Perform actions after resigning active status&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Indicates whether the application supports secure state restoration. &lt;br /&gt;
// Returning YES allows your app to participate in state restoration, &lt;br /&gt;
// which can restore windows and their states after the app restarts.&lt;br /&gt;
- (BOOL)applicationSupportsSecureRestorableState:(NSApplication *)app&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: applicationSupportsSecureRestorableState was called&amp;quot;);&lt;br /&gt;
  return NO;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Allows the delegate to encode additional information into the state restoration process.&lt;br /&gt;
- (void)application:(NSApplication *)app willEncodeRestorableState:(NSCoder *)state&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: willEncodeRestorableState was called&amp;quot;);&lt;br /&gt;
  // Encode additional state information&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Allows the delegate to respond after the state has been decoded.&lt;br /&gt;
- (void)application:(NSApplication *)app didDecodeRestorableState:(NSCoder *)state&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: didDecodeRestorableState was called&amp;quot;);&lt;br /&gt;
  // Decode and apply additional state information&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Handles registration for remote notifications (e.g., push notifications). &lt;br /&gt;
// While more common in iOS, macOS applications can also use these for similar purposes.&lt;br /&gt;
- (void)application:(NSApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;Registered for remote notifications with device token: %@&amp;quot;, deviceToken);&lt;br /&gt;
  // Send device token to server&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Handles registration for remote notifications (e.g., push notifications). &lt;br /&gt;
// While more common in iOS, macOS applications can also use these for similar purposes.&lt;br /&gt;
- (void)application:(NSApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;Failed to register for remote notifications: %@&amp;quot;, error);&lt;br /&gt;
  // Handle the failure&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Allows the delegate to customize error presentation to the user.&lt;br /&gt;
- (NSError *)application:(NSApplication *)app willPresentError:(NSError *)error&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: willPresentError&amp;quot;);&lt;br /&gt;
  // Customize error before it’s presented&lt;br /&gt;
  return nil;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Allows the delegate to customize to respond after an error has been presented to the user.&lt;br /&gt;
- (void)application:(NSApplication *)app didPresentError:(NSError *)error&lt;br /&gt;
{&lt;br /&gt;
  NSLog(@&amp;quot;AppDelegate: didPresentError&amp;quot;);&lt;br /&gt;
  // Perform actions after error presentation&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Clean-up and update AppController ====&lt;br /&gt;
&lt;br /&gt;
Open your ''AppController.h'' file, and clean-up methods we don't need, and add ''setupApplication'' method, so it will look like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#import &amp;lt;AppKit/AppKit.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@interface AppController : NSObject&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
+ (void)  initialize;&lt;br /&gt;
&lt;br /&gt;
- (id) init;&lt;br /&gt;
- (void) dealloc;&lt;br /&gt;
&lt;br /&gt;
- (void) showPrefPanel: (id)sender;&lt;br /&gt;
&lt;br /&gt;
// called by the AppDelegate on startup&lt;br /&gt;
- (void)setupApplication;&lt;br /&gt;
&lt;br /&gt;
@end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clean-up and update your AppController.m class file as well, so it's going to look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#import &amp;quot;AppController.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
@implementation AppController&lt;br /&gt;
&lt;br /&gt;
+ (void) initialize&lt;br /&gt;
{&lt;br /&gt;
  NSMutableDictionary *defaults = [NSMutableDictionary dictionary];&lt;br /&gt;
&lt;br /&gt;
  /*&lt;br /&gt;
   * Register your app's defaults here by adding objects to the&lt;br /&gt;
   * dictionary, eg&lt;br /&gt;
   *&lt;br /&gt;
   * [defaults setObject:anObject forKey:keyForThatObject];&lt;br /&gt;
   *&lt;br /&gt;
   */&lt;br /&gt;
  &lt;br /&gt;
  [[NSUserDefaults standardUserDefaults] registerDefaults: defaults];&lt;br /&gt;
  [[NSUserDefaults standardUserDefaults] synchronize];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
- (id) init&lt;br /&gt;
{&lt;br /&gt;
  if ((self = [super init]))&lt;br /&gt;
    {&lt;br /&gt;
    }&lt;br /&gt;
  return self;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
- (void) dealloc&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- (void) showPrefPanel: (id)sender&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
- (void)setupApplication&lt;br /&gt;
{&lt;br /&gt;
  // Setup global settings, preferences, or shared resources here&lt;br /&gt;
  NSLog(@&amp;quot;AppController is setting up the application&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Try building application, eventually it should succeed.&lt;br /&gt;
&lt;br /&gt;
Given that, the AppController will take care of the NSUserDefaults for the application, so the global configuration, taking care of the preferences Panel, and setting up global application specific stuff.&lt;br /&gt;
&lt;br /&gt;
=== Custom Document Controller ===&lt;br /&gt;
Now we need to get our custom document controller into play.&lt;br /&gt;
&lt;br /&gt;
Important facts about the custom NSDocumentController:&lt;br /&gt;
* It should be a subclass of NSDocumentController&lt;br /&gt;
* it's a Singleton, means, there's ever only one NSDocumentController class or subclass thereof in your application&lt;br /&gt;
* You might want to load it early, so the first instantiated NSDocumentController, will be your custom subclas.&lt;br /&gt;
** We're using the ''CustomInitializer'' class to help with that.&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7380</id>
		<title>Document based app with Gorm and PC</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7380"/>
		<updated>2024-09-06T21:37:49Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: /* Creating your Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This tutorial is going to show off how to create a Document based app, it'll cover the following:&lt;br /&gt;
&lt;br /&gt;
* simple overview about MVC and document based apps&lt;br /&gt;
** what classes to be used and how it fits into the MVC model&lt;br /&gt;
* using ProjectCenter and Gorm&lt;br /&gt;
** simple introduction into both tools, some tips 'n tricks&lt;br /&gt;
** how to enable ARC in ProjectCenter&lt;br /&gt;
* KVC/KVO to keep the UI in sync with the model&lt;br /&gt;
* the App we're going to create will be localized&lt;br /&gt;
** we'll switch the default language to something else than English ;)&lt;br /&gt;
* the app will handle multiple documents&lt;br /&gt;
&lt;br /&gt;
This tutorial is not meant for long time Mac Cocoa Objective-C developers. It's more for people like me, lacking a Mac, but&lt;br /&gt;
want to give the Cocoa Framework a try. To be honest, I read through &amp;quot;Cocoa Programming Developer's Handbook&amp;quot; by David Chisnall,&lt;br /&gt;
but still, afterward it took me a couple of weeks with the help of ChatGPT to get the test app we're going over here, to finally &lt;br /&gt;
work and being well structured. Reading the book, is very helpful in the first place, and dramatically helps talking to ChatGPT.&lt;br /&gt;
ChatGPT is actually not too bad, it's even aware of some differences between GNUstep and Cocoa, but sometimes hallucinates methods &lt;br /&gt;
that don't exist, or it might guide you into the wrong direction.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
* first there will be an overview about MVC, and the classes we're going to use in the App, and how these fit into the paradigm&lt;br /&gt;
** how things are wiring up&lt;br /&gt;
* then continue with a quick introduction into PC and Gorm&lt;br /&gt;
** some small tips 'n tricks to make using them a bit easier&lt;br /&gt;
* then we'll start implementing the application&lt;br /&gt;
** step by step, dealing with one type of document to be managed in the app&lt;br /&gt;
* at the end, you should be able to implement handling of a second type of document&lt;br /&gt;
&lt;br /&gt;
Code for the example application can be found here: https://github.com/buzzdeee/DocumentBasedAppTutorial&lt;br /&gt;
&lt;br /&gt;
== MVC and document based apps ==&lt;br /&gt;
&lt;br /&gt;
Cocoa MVC (Model-View-Controller) is a design pattern used in Apple's Cocoa framework to separate concerns in an application. The Model represents the data and business logic, the View displays the data and handles user interface elements, and the Controller manages communication between the Model and View, updating the UI based on changes in the data. This separation promotes modularity, making the code more maintainable and reusable.&lt;br /&gt;
&lt;br /&gt;
In a Cocoa (or GNUstep) document-based app that supports multiple documents, the classes involved can be mapped to the Model-View-Controller (MVC) pattern. Here’s how the various components like NSDocument, NSDocumentController, NSWindowController, document model classes, and UI built with Gorm fit into MVC:&lt;br /&gt;
&lt;br /&gt;
# '''Model (M)''' The model represents the application's data and business logic. In a document-based app, the following components are part of the model:&lt;br /&gt;
## '''Plain classes for the document models''': These are your custom classes that contain the data and logic specific to your document. These classes are independent of the UI and are responsible for holding the document's data, performing any processing, and managing state.&lt;br /&gt;
## For example, if you’re building a text editor, the model class might store the text, keep track of formatting, and manage metadata (like the document title or file path).&lt;br /&gt;
## '''NSDocument''': While NSDocument primarily fits into the '''controller''' part of MVC, it also has some aspects of the '''model''' in Cocoa’s architecture. NSDocument handles saving, loading, and managing the undo functionality, so it acts as a mediator between the model data and persistence (reading/writing the file). It interacts closely with the document model classes to manage the actual content.&lt;br /&gt;
# '''View (V)''' The view is responsible for displaying the data and handling user input.&lt;br /&gt;
## '''UI built with Gorm''': Gorm is used to build the UI components in the app, which form the view. These include:&lt;br /&gt;
### Windows, menus, buttons, text fields, etc. created in Gorm are part of the '''view''' layer. They display the content of your document and allow users to interact with it.&lt;br /&gt;
### For example, if you're using a text editor, the NSTextView or custom views to display text are part of the view layer.&lt;br /&gt;
## '''NSWindowController''': The NSWindowController is responsible for managing the app’s windows and handling the interaction between the '''view''' and the document (controller). It loads the interface from a .gorm file (which contains the window and its views) and binds the UI elements to the document data. In strict MVC, it is part of the controller, but because it manages UI and views, it has aspects of both the '''controller''' and '''view''' layers.&lt;br /&gt;
# '''Controller (C)''' The '''controller''' manages the interactions between the '''model''' and the '''view''', mediating user input, updating the view, and manipulating the model as needed.&lt;br /&gt;
## '''NSDocument''': As mentioned, NSDocument serves as the document controller in this architecture. It communicates with the model (plain document classes) to retrieve and save the document data and updates the view when necessary. It also handles document-specific tasks like managing undo/redo, saving, and opening documents. It doesn't directly manage the UI but works closely with the NSWindowController to coordinate the display of the document.&lt;br /&gt;
## '''NSDocumentController''': This class is responsible for managing all documents in the application. It keeps track of which documents are open, handles creating new documents, and ensures that the correct document is presented in the appropriate window. NSDocumentController also manages interactions like opening recent files, handling document lifecycle events (new, open, close), and interacting with NSDocument objects. It plays a key role in coordinating the flow between the user’s actions and the document management.&lt;br /&gt;
## '''NSWindowController''': Though it has a close relationship with the view, NSWindowController also has controller responsibilities. It coordinates with NSDocument to ensure that the correct data is presented in the view. It manages the window’s lifecycle and keeps the UI in sync with the document data.&lt;br /&gt;
&lt;br /&gt;
=== Breakdown of the MVC components ===&lt;br /&gt;
&lt;br /&gt;
* '''Model''': Plain document classes (contain the data and business logic).&lt;br /&gt;
* '''View''': UI components built with Gorm, which display the document’s data.&lt;br /&gt;
* '''Controller''': &lt;br /&gt;
** ''NSDocument'': Bridges the model and the view, managing document-specific tasks (loading, saving, undo/redo).&lt;br /&gt;
** ''NSWindowController'': Manages windows and interfaces with NSDocument to update the views.&lt;br /&gt;
** ''NSDocumentController'': Oversees multiple documents, handles document creation, and ensures that the correct documents are open/active.&lt;br /&gt;
&lt;br /&gt;
=== Workflow example in MVC context ===&lt;br /&gt;
&lt;br /&gt;
# '''User Action''': A user opens an existing document from the File menu (View).&lt;br /&gt;
# '''Controller Response''': The NSDocumentController coordinates opening the file by creating or loading the corresponding NSDocument object (Controller).&lt;br /&gt;
# '''Model Interaction''': The NSDocument interacts with the plain document model class to load the data from the file (Model).&lt;br /&gt;
# '''UI Update''': The NSWindowController ensures that the document’s data is reflected in the views loaded from the Gorm interface file (View).&lt;br /&gt;
# '''User Edits''': The user modifies the document content via the UI (View), and the NSDocument updates the document model class accordingly (Model).&lt;br /&gt;
&lt;br /&gt;
In this way, each class in a Cocoa (GNUstep) document-based app has a clear responsibility within the MVC framework, ensuring separation of concerns and maintainability of the application’s architecture.&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
&lt;br /&gt;
This tutorial was developed on OpenBSD, with just the main GNUstep packages installed. If you're up to it, and it's probably one of the easiest ways to get a a modern GNUstep development environment supporting libobjc2 and ARC up and running ;)&lt;br /&gt;
&lt;br /&gt;
# Install OpenBSD on a spare machine or VM, enable xdm&lt;br /&gt;
# install GNUstep as easy as: ''pkg_add gnustep-desktop''&lt;br /&gt;
# configure your .xsession alike:&lt;br /&gt;
&lt;br /&gt;
 if [ -f /usr/local/share/GNUstep/Makefiles/GNUstep.sh ];then&lt;br /&gt;
        . /usr/local/share/GNUstep/Makefiles/GNUstep.sh&lt;br /&gt;
 fi&lt;br /&gt;
 export GNUSTEP_STRING_ENCODING=NSUTF8StringEncoding&lt;br /&gt;
 export LC_ALL='en_EN.UTF-8'&lt;br /&gt;
 export LC_CTYPE='en_US.UTF-8'&lt;br /&gt;
 if [ -x /usr/local/bin/gpbs ];then&lt;br /&gt;
        /usr/local/bin/gpbs&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -x /usr/local/bin/gdnc ];then&lt;br /&gt;
        /usr/local/bin/gdnc&lt;br /&gt;
 fi&lt;br /&gt;
 wmaker &amp;amp;&lt;br /&gt;
 if [ -x /usr/local/bin/GWorkspace ];then&lt;br /&gt;
        /usr/local/bin/make_services&lt;br /&gt;
        /usr/local/bin/GWorkspace&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
With these simple steps, you'll have a working GNUstep development environment.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
If you want to debug, you may want to install egdb from packages as well.&lt;br /&gt;
To ease debugging, it might make sense to have the gnustep library sources around, and those build with debugging symbols, to do so:&lt;br /&gt;
# add the following to your /etc/doas.conf file:&lt;br /&gt;
           permit nopass keepenv :wsrc&lt;br /&gt;
           permit nopass keepenv :wheel&lt;br /&gt;
## NOTE: this allows passwordless root for the main user&lt;br /&gt;
# echo &amp;quot;echo 'DEBUG=-g -O0'&amp;quot; &amp;gt; /etc/mk.conf&lt;br /&gt;
# echo &amp;quot;echo 'SUDO=doas'&amp;quot; &amp;gt;&amp;gt; /etc/mk.conf&lt;br /&gt;
# doas pkg_delete gnustep-base gnustep-libobjc2 gnustep-make&lt;br /&gt;
# download and extract the ports.tar.gz to /usr/ports&lt;br /&gt;
# cd /usr/ports/x11/gnustep/&lt;br /&gt;
# make install&lt;br /&gt;
# make patch&lt;br /&gt;
&lt;br /&gt;
just reboot, or relogin, then you should have your GNUstep packages around, built with debugging symbols, as well as the sources on disk.&lt;br /&gt;
This will dramatically ease debugging using egdb.&lt;br /&gt;
&lt;br /&gt;
== ProjectCenter and Gorm ==&lt;br /&gt;
&lt;br /&gt;
GNUstep ProjectCenter and Gorm are tools for developing applications using the GNUstep framework.&lt;br /&gt;
&lt;br /&gt;
* '''ProjectCenter''' is an integrated development environment (IDE) that helps developers manage their projects, providing tools to create, organize, and compile GNUstep applications. It simplifies the setup and management of project files, source code, and build configurations, making it easier to develop Objective-C applications.&lt;br /&gt;
* '''Gorm''': (GNUstep Object Relationship Modeler) is a visual interface builder similar to Apple's Interface Builder. It allows developers to design user interfaces by dragging and dropping UI components, connecting them to the application's code, and managing the relationships between UI elements and objects, without writing the UI code manually.&lt;br /&gt;
&lt;br /&gt;
Together, these tools streamline the development of GNUstep-based applications by providing a cohesive environment for both project management and user interface design.&lt;br /&gt;
&lt;br /&gt;
== Creating your Project ==&lt;br /&gt;
With all that prepared, you're now ready to create the basic project:&lt;br /&gt;
&lt;br /&gt;
=== ProjectCenter ===&lt;br /&gt;
With either just gnustep-desktop package(s) installed, or even built by yourself from ports, you should now be able to just&lt;br /&gt;
start ProjectCenter from the command line, i.e. xterm window.&lt;br /&gt;
&lt;br /&gt;
Once it's started, you want to configure it a bit, to ensure a smooth experience ;)&lt;br /&gt;
&lt;br /&gt;
* Open the '''Preferences''' Build menu&lt;br /&gt;
** ensure '''External Build Tool''' points to ''/usr/local/bin/gmake'' or wherever your GNU Make is when you're not on OpenBSD. A BSD make just won't work.&lt;br /&gt;
* Open the '''Preferences''' Miscellaneous menu&lt;br /&gt;
** ensure '''Debugger''' points to ''/usr/local/bin/egdb'' or whatever is the right one for your platform&lt;br /&gt;
** ensure '''Editor''' is ''ProjectCenter''. That should be the default, you may use others, i.e. Gemas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now Open the ''Project'' -&amp;gt; ''New'' menu, select a suitable place where you want to have your project reside. &lt;br /&gt;
Ensure '''Project Type''' is set to '''Application''' and give it a name. We'll name our project '''DocumentBasedApp''' as you can see in the screenshot below.&lt;br /&gt;
(You may actually not want to choose /tmp as your destination folder ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voila, your first project.&lt;br /&gt;
&lt;br /&gt;
Now do some configurations, to add support for ARC, debugging, multiple languages...&lt;br /&gt;
&lt;br /&gt;
* Open the ''Project Inspector'' -&amp;gt; ''Project Languages'' &lt;br /&gt;
** and add a second language, i.e. ''German''&lt;br /&gt;
* Open the ''Project Inspector'' -&amp;gt; ''Project Attributes'' &lt;br /&gt;
** switch the ''Language'' to ''German''&lt;br /&gt;
** you may specify a bundle identifier, i.e. com.mydomain.documentbasedapp&lt;br /&gt;
** open the ''Document Types...'' button&lt;br /&gt;
*** activate the '''Document-based''' checkbox&lt;br /&gt;
*** enter the fields below (always hit return when finished editing):&lt;br /&gt;
**** ''Type'': MyDoc1&lt;br /&gt;
***** As it's identified throughout the application in code&lt;br /&gt;
**** ''Name'': My Doc 1&lt;br /&gt;
***** Not exactly sure where this is used&lt;br /&gt;
**** ''Icon'': not yet&lt;br /&gt;
***** we don't need it yet&lt;br /&gt;
**** ''Extension'': doc1&lt;br /&gt;
***** the file extension for your document type, without the leading .&lt;br /&gt;
**** ''Role'': Editor&lt;br /&gt;
***** might be ''Editor'' or ''Viewer'' depending on whether your app will edit or only view your documents&lt;br /&gt;
**** ''Class'': MyDoc1&lt;br /&gt;
***** the class in your code, that will handle these types of documents&lt;br /&gt;
*** finally hit the '''+''' sign to add it to the list of document types&lt;br /&gt;
*** you may now do the same for a second document type in a similar way: MyDoc2, or do it later&lt;br /&gt;
* Open the ''Project Inspector'' -&amp;gt; ''Build Attributes''&lt;br /&gt;
** ''ObjC Compiler Flags'': -fobjc-arc -g&lt;br /&gt;
*** to tell it to use ARC and add debugging symbols when building&lt;br /&gt;
** ''Install Domain'': you may change it to ''User''&lt;br /&gt;
* You may Open the ''Project Inspector'' -&amp;gt; ''Project Description''&lt;br /&gt;
** update there as well as you see fit&lt;br /&gt;
&lt;br /&gt;
With that, your project should be well configured.&lt;br /&gt;
&lt;br /&gt;
=== ARC support finished ===&lt;br /&gt;
* find the ''AppController.m'' in the ''Classes'' and remove the ''[super dealloc];'' line from the dealloc method&lt;br /&gt;
* find the ''DocumentBasedApp_main.m'' in the ''Other Sources'' and add @autoreleasepool to it, so it looks alike:&lt;br /&gt;
&lt;br /&gt;
 int &lt;br /&gt;
 main(int argc, const char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
   @autoreleasepool&lt;br /&gt;
     {&lt;br /&gt;
       return NSApplicationMain (argc, argv);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
With ARC, explicit calls to dealloc are prohibited, and the ''@autoreleasepool'' takes care about the memory management within your application.&lt;br /&gt;
&lt;br /&gt;
=== Build the app ===&lt;br /&gt;
&lt;br /&gt;
* open the build window&lt;br /&gt;
** configure the ''Build Options''&lt;br /&gt;
*** enable ''verbose output'''&lt;br /&gt;
** hit the build button&lt;br /&gt;
&lt;br /&gt;
With a bit of luck and no typos, the build should have succeeded!&lt;br /&gt;
&lt;br /&gt;
=== Launch the app ===&lt;br /&gt;
&lt;br /&gt;
* from the main project window, hit the launcher icon to open the launcher window&lt;br /&gt;
** NSLog output will show up here when you add it for your debugging aid&lt;br /&gt;
* hit the launch icon&lt;br /&gt;
&lt;br /&gt;
Voila, your first (quite useless) app is up and running.&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7379</id>
		<title>Document based app with Gorm and PC</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Document_based_app_with_Gorm_and_PC&amp;diff=7379"/>
		<updated>2024-09-06T21:00:47Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: Created page with &amp;quot;== About ==  This tutorial is going to show off how to create a Document based app, it'll cover the following:  * simple overview about MVC and document based apps ** what cla...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This tutorial is going to show off how to create a Document based app, it'll cover the following:&lt;br /&gt;
&lt;br /&gt;
* simple overview about MVC and document based apps&lt;br /&gt;
** what classes to be used and how it fits into the MVC model&lt;br /&gt;
* using ProjectCenter and Gorm&lt;br /&gt;
** simple introduction into both tools, some tips 'n tricks&lt;br /&gt;
** how to enable ARC in ProjectCenter&lt;br /&gt;
* KVC/KVO to keep the UI in sync with the model&lt;br /&gt;
* the App we're going to create will be localized&lt;br /&gt;
** we'll switch the default language to something else than English ;)&lt;br /&gt;
* the app will handle multiple documents&lt;br /&gt;
&lt;br /&gt;
This tutorial is not meant for long time Mac Cocoa Objective-C developers. It's more for people like me, lacking a Mac, but&lt;br /&gt;
want to give the Cocoa Framework a try. To be honest, I read through &amp;quot;Cocoa Programming Developer's Handbook&amp;quot; by David Chisnall,&lt;br /&gt;
but still, afterward it took me a couple of weeks with the help of ChatGPT to get the test app we're going over here, to finally &lt;br /&gt;
work and being well structured. Reading the book, is very helpful in the first place, and dramatically helps talking to ChatGPT.&lt;br /&gt;
ChatGPT is actually not too bad, it's even aware of some differences between GNUstep and Cocoa, but sometimes hallucinates methods &lt;br /&gt;
that don't exist, or it might guide you into the wrong direction.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
* first there will be an overview about MVC, and the classes we're going to use in the App, and how these fit into the paradigm&lt;br /&gt;
** how things are wiring up&lt;br /&gt;
* then continue with a quick introduction into PC and Gorm&lt;br /&gt;
** some small tips 'n tricks to make using them a bit easier&lt;br /&gt;
* then we'll start implementing the application&lt;br /&gt;
** step by step, dealing with one type of document to be managed in the app&lt;br /&gt;
* at the end, you should be able to implement handling of a second type of document&lt;br /&gt;
&lt;br /&gt;
Code for the example application can be found here: https://github.com/buzzdeee/DocumentBasedAppTutorial&lt;br /&gt;
&lt;br /&gt;
== MVC and document based apps ==&lt;br /&gt;
&lt;br /&gt;
Cocoa MVC (Model-View-Controller) is a design pattern used in Apple's Cocoa framework to separate concerns in an application. The Model represents the data and business logic, the View displays the data and handles user interface elements, and the Controller manages communication between the Model and View, updating the UI based on changes in the data. This separation promotes modularity, making the code more maintainable and reusable.&lt;br /&gt;
&lt;br /&gt;
In a Cocoa (or GNUstep) document-based app that supports multiple documents, the classes involved can be mapped to the Model-View-Controller (MVC) pattern. Here’s how the various components like NSDocument, NSDocumentController, NSWindowController, document model classes, and UI built with Gorm fit into MVC:&lt;br /&gt;
&lt;br /&gt;
# '''Model (M)''' The model represents the application's data and business logic. In a document-based app, the following components are part of the model:&lt;br /&gt;
## '''Plain classes for the document models''': These are your custom classes that contain the data and logic specific to your document. These classes are independent of the UI and are responsible for holding the document's data, performing any processing, and managing state.&lt;br /&gt;
## For example, if you’re building a text editor, the model class might store the text, keep track of formatting, and manage metadata (like the document title or file path).&lt;br /&gt;
## '''NSDocument''': While NSDocument primarily fits into the '''controller''' part of MVC, it also has some aspects of the '''model''' in Cocoa’s architecture. NSDocument handles saving, loading, and managing the undo functionality, so it acts as a mediator between the model data and persistence (reading/writing the file). It interacts closely with the document model classes to manage the actual content.&lt;br /&gt;
# '''View (V)''' The view is responsible for displaying the data and handling user input.&lt;br /&gt;
## '''UI built with Gorm''': Gorm is used to build the UI components in the app, which form the view. These include:&lt;br /&gt;
### Windows, menus, buttons, text fields, etc. created in Gorm are part of the '''view''' layer. They display the content of your document and allow users to interact with it.&lt;br /&gt;
### For example, if you're using a text editor, the NSTextView or custom views to display text are part of the view layer.&lt;br /&gt;
## '''NSWindowController''': The NSWindowController is responsible for managing the app’s windows and handling the interaction between the '''view''' and the document (controller). It loads the interface from a .gorm file (which contains the window and its views) and binds the UI elements to the document data. In strict MVC, it is part of the controller, but because it manages UI and views, it has aspects of both the '''controller''' and '''view''' layers.&lt;br /&gt;
# '''Controller (C)''' The '''controller''' manages the interactions between the '''model''' and the '''view''', mediating user input, updating the view, and manipulating the model as needed.&lt;br /&gt;
## '''NSDocument''': As mentioned, NSDocument serves as the document controller in this architecture. It communicates with the model (plain document classes) to retrieve and save the document data and updates the view when necessary. It also handles document-specific tasks like managing undo/redo, saving, and opening documents. It doesn't directly manage the UI but works closely with the NSWindowController to coordinate the display of the document.&lt;br /&gt;
## '''NSDocumentController''': This class is responsible for managing all documents in the application. It keeps track of which documents are open, handles creating new documents, and ensures that the correct document is presented in the appropriate window. NSDocumentController also manages interactions like opening recent files, handling document lifecycle events (new, open, close), and interacting with NSDocument objects. It plays a key role in coordinating the flow between the user’s actions and the document management.&lt;br /&gt;
## '''NSWindowController''': Though it has a close relationship with the view, NSWindowController also has controller responsibilities. It coordinates with NSDocument to ensure that the correct data is presented in the view. It manages the window’s lifecycle and keeps the UI in sync with the document data.&lt;br /&gt;
&lt;br /&gt;
=== Breakdown of the MVC components ===&lt;br /&gt;
&lt;br /&gt;
* '''Model''': Plain document classes (contain the data and business logic).&lt;br /&gt;
* '''View''': UI components built with Gorm, which display the document’s data.&lt;br /&gt;
* '''Controller''': &lt;br /&gt;
** ''NSDocument'': Bridges the model and the view, managing document-specific tasks (loading, saving, undo/redo).&lt;br /&gt;
** ''NSWindowController'': Manages windows and interfaces with NSDocument to update the views.&lt;br /&gt;
** ''NSDocumentController'': Oversees multiple documents, handles document creation, and ensures that the correct documents are open/active.&lt;br /&gt;
&lt;br /&gt;
=== Workflow example in MVC context ===&lt;br /&gt;
&lt;br /&gt;
# '''User Action''': A user opens an existing document from the File menu (View).&lt;br /&gt;
# '''Controller Response''': The NSDocumentController coordinates opening the file by creating or loading the corresponding NSDocument object (Controller).&lt;br /&gt;
# '''Model Interaction''': The NSDocument interacts with the plain document model class to load the data from the file (Model).&lt;br /&gt;
# '''UI Update''': The NSWindowController ensures that the document’s data is reflected in the views loaded from the Gorm interface file (View).&lt;br /&gt;
# '''User Edits''': The user modifies the document content via the UI (View), and the NSDocument updates the document model class accordingly (Model).&lt;br /&gt;
&lt;br /&gt;
In this way, each class in a Cocoa (GNUstep) document-based app has a clear responsibility within the MVC framework, ensuring separation of concerns and maintainability of the application’s architecture.&lt;br /&gt;
&lt;br /&gt;
== Development Environment ==&lt;br /&gt;
&lt;br /&gt;
This tutorial was developed on OpenBSD, with just the main GNUstep packages installed. If you're up to it, and it's probably one of the easiest ways to get a a modern GNUstep development environment supporting libobjc2 and ARC up and running ;)&lt;br /&gt;
&lt;br /&gt;
# Install OpenBSD on a spare machine or VM, enable xdm&lt;br /&gt;
# install GNUstep as easy as: ''pkg_add gnustep-desktop''&lt;br /&gt;
# configure your .xsession alike:&lt;br /&gt;
&lt;br /&gt;
 if [ -f /usr/local/share/GNUstep/Makefiles/GNUstep.sh ];then&lt;br /&gt;
        . /usr/local/share/GNUstep/Makefiles/GNUstep.sh&lt;br /&gt;
 fi&lt;br /&gt;
 export GNUSTEP_STRING_ENCODING=NSUTF8StringEncoding&lt;br /&gt;
 export LC_ALL='en_EN.UTF-8'&lt;br /&gt;
 export LC_CTYPE='en_US.UTF-8'&lt;br /&gt;
 if [ -x /usr/local/bin/gpbs ];then&lt;br /&gt;
        /usr/local/bin/gpbs&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -x /usr/local/bin/gdnc ];then&lt;br /&gt;
        /usr/local/bin/gdnc&lt;br /&gt;
 fi&lt;br /&gt;
 wmaker &amp;amp;&lt;br /&gt;
 if [ -x /usr/local/bin/GWorkspace ];then&lt;br /&gt;
        /usr/local/bin/make_services&lt;br /&gt;
        /usr/local/bin/GWorkspace&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
With these simple steps, you'll have a working GNUstep development environment.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
If you want to debug, you may want to install egdb from packages as well.&lt;br /&gt;
To ease debugging, it might make sense to have the gnustep library sources around, and those build with debugging symbols, to do so:&lt;br /&gt;
# add the following to your /etc/doas.conf file:&lt;br /&gt;
           permit nopass keepenv :wsrc&lt;br /&gt;
           permit nopass keepenv :wheel&lt;br /&gt;
## NOTE: this allows passwordless root for the main user&lt;br /&gt;
# echo &amp;quot;echo 'DEBUG=-g -O0'&amp;quot; &amp;gt; /etc/mk.conf&lt;br /&gt;
# echo &amp;quot;echo 'SUDO=doas'&amp;quot; &amp;gt;&amp;gt; /etc/mk.conf&lt;br /&gt;
# doas pkg_delete gnustep-base gnustep-libobjc2 gnustep-make&lt;br /&gt;
# download and extract the ports.tar.gz to /usr/ports&lt;br /&gt;
# cd /usr/ports/x11/gnustep/&lt;br /&gt;
# make install&lt;br /&gt;
# make patch&lt;br /&gt;
&lt;br /&gt;
just reboot, or relogin, then you should have your GNUstep packages around, built with debugging symbols, as well as the sources on disk.&lt;br /&gt;
This will dramatically ease debugging using egdb.&lt;br /&gt;
&lt;br /&gt;
== ProjectCenter and Gorm ==&lt;br /&gt;
&lt;br /&gt;
GNUstep ProjectCenter and Gorm are tools for developing applications using the GNUstep framework.&lt;br /&gt;
&lt;br /&gt;
* '''ProjectCenter''' is an integrated development environment (IDE) that helps developers manage their projects, providing tools to create, organize, and compile GNUstep applications. It simplifies the setup and management of project files, source code, and build configurations, making it easier to develop Objective-C applications.&lt;br /&gt;
* '''Gorm''': (GNUstep Object Relationship Modeler) is a visual interface builder similar to Apple's Interface Builder. It allows developers to design user interfaces by dragging and dropping UI components, connecting them to the application's code, and managing the relationships between UI elements and objects, without writing the UI code manually.&lt;br /&gt;
&lt;br /&gt;
Together, these tools streamline the development of GNUstep-based applications by providing a cohesive environment for both project management and user interface design.&lt;br /&gt;
&lt;br /&gt;
== Creating your Project ==&lt;br /&gt;
With all that prepared, you're now ready to create the basic project:&lt;br /&gt;
&lt;br /&gt;
=== ProjectCenter ===&lt;br /&gt;
With either just gnustep-desktop package(s) installed, or even built by yourself from ports, you should now be able to just&lt;br /&gt;
start ProjectCenter from the command line, i.e. xterm window.&lt;br /&gt;
&lt;br /&gt;
Once it's started, you want to configure it a bit, to ensure a smooth experience ;)&lt;br /&gt;
&lt;br /&gt;
* Open the '''Preferences''' Build menu&lt;br /&gt;
** ensure '''External Build Tool''' points to ''/usr/local/bin/gmake'' or wherever your GNU Make is when you're not on OpenBSD. A BSD make just won't work.&lt;br /&gt;
* Open the '''Preferences''' Miscellaneous menu&lt;br /&gt;
** ensure '''Debugger''' points to ''/usr/local/bin/egdb'' or whatever is the right one for your platform&lt;br /&gt;
** ensure '''Editor''' is ''ProjectCenter''. That should be the default, you may use others, i.e. Gemas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now Open the ''Project'' -&amp;gt; ''New'' menu, select a suitable place where you want to have your project reside. &lt;br /&gt;
Ensure '''Project Type''' is set to '''Application''' and give it a name. We'll name our project '''DocumentBasedApp''' as you can see in the screenshot below.&lt;br /&gt;
(You may actually not want to choose /tmp as your destination folder ;)&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6607</id>
		<title>MPDCon.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6607"/>
		<updated>2013-12-10T16:18:44Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = A GNUstep MPD client. |&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/MPDCon-1.5.1.tar.gz 1.5.1] |&lt;br /&gt;
releasedate = December 10, 2013 |&lt;br /&gt;
license = GPLv2 |&lt;br /&gt;
overview = A client for the Music Player Daemon (MPD) |&lt;br /&gt;
features = &lt;br /&gt;
* connects to an MPD server&lt;br /&gt;
* Playlist and Collections&lt;br /&gt;
  * browse collection by tag or filesystem layout&lt;br /&gt;
* Lyrics Inspector connecting to lyrics.wikia.com&lt;br /&gt;
  * retrieved lyrics are cached in local SQLite3 database&lt;br /&gt;
* Song Inspector&lt;br /&gt;
* Rating of songs in the Playlist&lt;br /&gt;
  * ratings are saved in SQLite3 database&lt;br /&gt;
* Playlist Inspector&lt;br /&gt;
  * allows configuring a random feed to the playlist&lt;br /&gt;
  * the random feed may be based on the song ratings&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
maintainer = Daniel Luederwald (initial Author), now GAP Team |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://mpd.wikia.com/wiki/Client:MPDCon |&lt;br /&gt;
category = [[Category:Audio Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6601</id>
		<title>MPDCon.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6601"/>
		<updated>2013-12-03T06:27:59Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = A GNUstep MPD client. |&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/MPDCon-1.5.tar.gz 1.5] |&lt;br /&gt;
releasedate = December 03, 2013 |&lt;br /&gt;
license = GPLv2 |&lt;br /&gt;
overview = A client for the Music Player Daemon (MPD) |&lt;br /&gt;
features = &lt;br /&gt;
* connects to an MPD server&lt;br /&gt;
* Playlist and Collections&lt;br /&gt;
  * browse collection by tag or filesystem layout&lt;br /&gt;
* Lyrics Inspector connecting to lyrics.wikia.com&lt;br /&gt;
  * retrieved lyrics are cached in local SQLite3 database&lt;br /&gt;
* Song Inspector&lt;br /&gt;
* Rating of songs in the Playlist&lt;br /&gt;
  * ratings are saved in SQLite3 database&lt;br /&gt;
* Playlist Inspector&lt;br /&gt;
  * allows configuring a random feed to the playlist&lt;br /&gt;
  * the random feed may be based on the song ratings&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
maintainer = Daniel Luederwald (initial Author), now GAP Team |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://mpd.wikia.com/wiki/Client:MPDCon |&lt;br /&gt;
category = [[Category:Audio Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Zipper.app&amp;diff=6538</id>
		<title>Zipper.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Zipper.app&amp;diff=6538"/>
		<updated>2013-04-21T14:35:10Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Application|&lt;br /&gt;
&lt;br /&gt;
shortdescription = Tool for inspecting the contents of a compressed archive. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/Zipper-1.5.tar.gz 1.5] |&lt;br /&gt;
&lt;br /&gt;
releasedate = April 21, 2013 |&lt;br /&gt;
&lt;br /&gt;
license = GPL v2 or later |&lt;br /&gt;
&lt;br /&gt;
overview = Zipper consists only of a single window, displaying the contents of the selected archive. Currently, you can view and extract .tar, .tar.gz, .tar.bz2, .rar, .lha, .lhz and .zip archives. &lt;br /&gt;
&lt;br /&gt;
Since Version 1.4, Zipper moved to GAP in accordance to the original Author and changed its license to GPL v2+&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
&lt;br /&gt;
* Multi-document&lt;br /&gt;
* ZIP, TAR (and BSD tar), LHA, 7Zip, ACE, ARJ, ZOO&lt;br /&gt;
* TAR, LHA, 7Zip, ZIP and ZOO creation&lt;br /&gt;
* GWorkspace integration|&lt;br /&gt;
&lt;br /&gt;
maintainer = GNUstep Application Project team |&lt;br /&gt;
&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://gap.nongnu.org/zipper/index.html |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Archiver Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Zipper.app&amp;diff=6537</id>
		<title>Zipper.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Zipper.app&amp;diff=6537"/>
		<updated>2013-04-21T14:34:52Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Application|&lt;br /&gt;
&lt;br /&gt;
shortdescription = Tool for inspecting the contents of a compressed archive. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/Zipper-1.5.tar.gz 1.5] |&lt;br /&gt;
&lt;br /&gt;
releasedate = April 21, 2013 |&lt;br /&gt;
&lt;br /&gt;
license = GPL v2 or later |&lt;br /&gt;
&lt;br /&gt;
overview = Zipper consists only of a single window, displaying the contents of the selected archive. Currently, you can view and extract .tar, .tar.gz, .tar.bz2, .rar, .lha, .lhz and .zip archives. &lt;br /&gt;
&lt;br /&gt;
Sinve Version 1.4, Zipper moved to GAP in accordance to the original Author and changed its license to GPL v2+&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
&lt;br /&gt;
* Multi-document&lt;br /&gt;
* ZIP, TAR (and BSD tar), LHA, 7Zip, ACE, ARJ, ZOO&lt;br /&gt;
* TAR, LHA, 7Zip, ZIP and ZOO creation&lt;br /&gt;
* GWorkspace integration|&lt;br /&gt;
&lt;br /&gt;
maintainer = GNUstep Application Project team |&lt;br /&gt;
&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://gap.nongnu.org/zipper/index.html |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Archiver Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Template:GNUstep_News&amp;diff=6536</id>
		<title>Template:GNUstep News</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Template:GNUstep_News&amp;diff=6536"/>
		<updated>2013-04-21T14:31:39Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Apr 21 2013 ===&lt;br /&gt;
* '''[[Zipper.app]] 1.5'''&lt;br /&gt;
: ([http://gap.nongnu.org/zipper Zipper Homepage])&lt;br /&gt;
&lt;br /&gt;
=== Apr 02 2013 ===&lt;br /&gt;
* '''GNUstep [[Gui]]  0.23.1 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-0.23.1.tar.gz Download Gui])&lt;br /&gt;
* '''GNUstep [[Make]]  2.6.4 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-2.6.4.tar.gz Download Make])&lt;br /&gt;
* '''GNUstep [[Base]]  1.24.4 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-1.24.4.tar.gz Download Base])&lt;br /&gt;
&lt;br /&gt;
=== Mar 02 2013 ===&lt;br /&gt;
* '''GNUstep [[Gui]]  0.23.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-0.23.0.tar.gz Download Gui])&lt;br /&gt;
* '''GNUstep [[Back]]  0.23.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-0.23.0.tar.gz Download Back])&lt;br /&gt;
* '''GNUstep [[Make]]  2.6.3 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-2.6.3.tar.gz Download Make])&lt;br /&gt;
* '''GNUstep [[Base]]  1.24.3 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-1.24.3.tar.gz Download Base])&lt;br /&gt;
&lt;br /&gt;
=== Oct 21 2012 ===&lt;br /&gt;
* '''[[MPDCon.app]]  1.3'''&lt;br /&gt;
: ([http://gap.nongnu.org/mpdcon MPDCon Homepage])&lt;br /&gt;
&lt;br /&gt;
=== Oct 2 2012 ===&lt;br /&gt;
* '''[[FisicaLab.app]]  0.3.0'''&lt;br /&gt;
: ([http://www.nongnu.org/fisicalab/descargas_eng.html Download FisicaLab])&lt;br /&gt;
&lt;br /&gt;
=== Sep 4 2012 ===&lt;br /&gt;
* '''GNUstep CoreBase  0.1.1 release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/libs/gnustep-corebase-0.1.1.tar.gz Download CoreBase])&lt;br /&gt;
&lt;br /&gt;
=== Aug 21 2012 ===&lt;br /&gt;
* '''Windows Installer snapshot (unstable) update'''&lt;br /&gt;
: ([http://www.gnustep.org/experience/Windows.html 0.31.0 Release])&lt;br /&gt;
&lt;br /&gt;
=== Jul 27 2012 ===&lt;br /&gt;
* '''GNUstep CoreBase  0.1.0 initial release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/libs/gnustep-corebase-0.1.tar.gz Download CoreBase])&lt;br /&gt;
&lt;br /&gt;
=== Jul 27 2012 ===&lt;br /&gt;
* '''[[AddressManager.app]] 0.4.8''' &lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== Jul 14 2012 ===&lt;br /&gt;
* '''Windows Installer update'''&lt;br /&gt;
: ([http://www.gnustep.org/experience/Windows.html 0.30.0 Release])&lt;br /&gt;
&lt;br /&gt;
=== Jun 30 2012 ===&lt;br /&gt;
* '''[[Grr]] 1.0.0''' and RSSkit&lt;br /&gt;
: New releases&lt;br /&gt;
&lt;br /&gt;
=== Jun 20 2012 ===&lt;br /&gt;
* '''[[PDFKit]] 0.9.2'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== Jun 13 2012 ===&lt;br /&gt;
* '''[[ProjectCenter.app]] 0.6.1'''&lt;br /&gt;
: Minor update release&lt;br /&gt;
&lt;br /&gt;
=== Jun 09 2012 ===&lt;br /&gt;
* '''[[MPDCon.app]] 1.2'''&lt;br /&gt;
: First release from GAP&lt;br /&gt;
&lt;br /&gt;
=== Jun 03 2012 ===&lt;br /&gt;
* '''[[GSPdf.app]] 0.5'''&lt;br /&gt;
: New maintenance release&lt;br /&gt;
&lt;br /&gt;
* '''[[Terminal.app]] 0.9.8'''&lt;br /&gt;
: Maintenance release&lt;br /&gt;
&lt;br /&gt;
=== May 31 2012 ===&lt;br /&gt;
* '''[[GWorkspace.app]] 0.9.1'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== May 24 2012 ===&lt;br /&gt;
* '''[[DataBasin.app]] 0.5'''&lt;br /&gt;
: New release, improved functions and bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== May 10 2012 ===&lt;br /&gt;
* '''[[Zipper.app]] 1.4'''&lt;br /&gt;
: First release from the GAP team.&lt;br /&gt;
&lt;br /&gt;
=== May 01 2012 ===&lt;br /&gt;
* '''[[Graphos.app]] 0.3'''&lt;br /&gt;
: New release (modeless inspector, new improved file format...)&lt;br /&gt;
&lt;br /&gt;
=== Apr 23 2012 ===&lt;br /&gt;
* '''[[PRICE.app]] 1.1.0'''&lt;br /&gt;
: New release (new filters, enhancements, bug and portability fixes)&lt;br /&gt;
&lt;br /&gt;
=== Apr 09 2012 ===&lt;br /&gt;
* '''[[FisicaLab.app]] 0.2.2'''&lt;br /&gt;
: New release (bugfix for latest GNUstep packages)&lt;br /&gt;
&lt;br /&gt;
=== Apr 06 2012 ===&lt;br /&gt;
* '''[[FTP.app]] 0.3'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== Mar 29 2012 ===&lt;br /&gt;
* '''GNUstep participates in Google Summer of Code 2012'''&lt;br /&gt;
: ([[Summer of Code 2012]])&lt;br /&gt;
&lt;br /&gt;
=== Feb 17 2012 ===&lt;br /&gt;
* '''Windows Installer update'''&lt;br /&gt;
: ([http://www.gnustep.org/experience/Windows.html GNUstep-Core 0.29.1])&lt;br /&gt;
&lt;br /&gt;
=== Feb 14 2012 ===&lt;br /&gt;
* '''Silver theme  2.5'''&lt;br /&gt;
: ([http://wiki.gnustep.org/images/6/6d/Silver.theme.tar.bz2 Silver theme])&lt;br /&gt;
&lt;br /&gt;
=== Feb 14 2012 ===&lt;br /&gt;
* '''[[Gemas.app]]  0.3'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/Gemas-0.3.tar.gz Download Gemas])&lt;br /&gt;
* '''[[HighlighterKit]]  0.1.2'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/HighlighterKit-0.1.2.tar.gz Download HighlighterKit])&lt;br /&gt;
* '''HKThemes  1.0'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/HKThemes-1.0.tar.gz Download HKThemes])&lt;br /&gt;
&lt;br /&gt;
=== Feb 03 2012 ===&lt;br /&gt;
* '''GNUstep [[Gui]]  0.22.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-0.22.0.tar.gz Download Gui])&lt;br /&gt;
* '''GNUstep [[Back]]  0.22.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-0.22.0.tar.gz Download Back])&lt;br /&gt;
* '''GNUstep [[Make]]  2.6.2 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-2.6.2.tar.gz Download Make])&lt;br /&gt;
* '''GNUstep [[Base]]  1.24.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-1.24.0.tar.gz Download Base])&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Platform:BSD&amp;diff=6503</id>
		<title>Platform:BSD</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Platform:BSD&amp;diff=6503"/>
		<updated>2013-02-06T17:40:46Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: /* OpenBSD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Darwin =&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
Currently tested on Darwin 7.x&lt;br /&gt;
&lt;br /&gt;
'''Recommended compiler'''&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 3.3.2 or greater 3.3.* versions. Older versions will not compile on Darwin and 3.4.* versions don't support GNU runtime compilation on Darwin currently (The GCC bug report is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 4.0.3 or greater 4.* versions (the bug mentioned above has been fixed for 4.0.3 and newer)&lt;br /&gt;
&lt;br /&gt;
Default compiler (Apple GCC) has unknown problems. Download the FSF GCC compiler (mirrors at http://gcc.gnu.org/mirrors.html) and configure it with -enable-threads=posix. You don't need binutils or anything else. Use the GNU runtime. Make sure to add&lt;br /&gt;
&lt;br /&gt;
  export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)&lt;br /&gt;
&lt;br /&gt;
so that the correct compiler is found&lt;br /&gt;
&lt;br /&gt;
'''Extra libs needed'''&lt;br /&gt;
&amp;lt;br&amp;gt;Use libffi from http://sourceware.org/libffi/ or the older ffcall if this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
'''Special Instructions'''&lt;br /&gt;
&amp;lt;br&amp;gt;Read the README.Darwin file in the gnustep-make/Documentation directory for complete instructions.&lt;br /&gt;
&lt;br /&gt;
=== PowerPC ===&lt;br /&gt;
This section is for building the complete GNUstep system. This system will not interact at all with Mac OS X/Cocoa. It uses different complilers, different display systems, etc. For building GNUstep extensions to be used with Mac OS X (for instance, if you want to build something based on GNUstep, such as GSWeb or GNUMail), see the MacOSX/PowerPC section.&lt;br /&gt;
&lt;br /&gt;
Currently tested on Darwin 6.x, 7.x, 8.x&lt;br /&gt;
&lt;br /&gt;
'''Recommended compiler'''&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 3.3.2 or greater 3.3.* versions. Older versions will not compile on Darwin and 3.4.* versions don't support GNU runtime compilation on Darwin currently (The GCC bug report is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 4.0.3 or greater 4.* versions (the bug mentioned above has been fixed for 4.0.3 and newer)&lt;br /&gt;
&amp;lt;br&amp;gt;Apple GCC with Xcode 2.5. &lt;br /&gt;
&lt;br /&gt;
'''Extra libs needed'''&lt;br /&gt;
&amp;lt;br&amp;gt;Use libffi (not ffcall). This should be enabled by default in gnustep-base so you don't have to type --enable-libffi. For 6.x, you need the dlcompat library (from www.opendarwin.org) to load bundles (not needed for 7.x).&lt;br /&gt;
&lt;br /&gt;
'''Special Instructions'''&lt;br /&gt;
&amp;lt;br&amp;gt;Read the README.Darwin file in the gnustep-make/Documentation directory for complete instructions.&lt;br /&gt;
&lt;br /&gt;
See also the [[Platform:BSD#Mac_OS_X|Mac OSX / PowerPC]] section&lt;br /&gt;
&lt;br /&gt;
= FreeBSD-based systems =&lt;br /&gt;
&lt;br /&gt;
== DesktopBSD ==&lt;br /&gt;
[http://desktopbsd.sourceforge.net/ DesktopBSD] joins the ranks of [[#PC-BSD|PC-BSD]] and [[#FreeSBIE|FreeSBIE]] as a desktop-ready version of [[#FreeBSD|FreeBSD]]. However, their desktop is based on [http://www.kde.org KDE].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DragonFly ==&lt;br /&gt;
[http://www.dragonflybsd.org/main/ DragonFly] is an operating system and environment designed to be the logical continuation of the [[#FreeBSD|FreeBSD]]-4.x OS series.&lt;br /&gt;
&lt;br /&gt;
I have mostly ported GNUstep to DragonFly, I just need to submit patches now for both GNUstep and DragonFly. To know more, you can contact me. ''[[user:Qmathe | Quentin Mathé]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FreeBSD ==&lt;br /&gt;
You can install GNUstep using the ''[http://www.freebsd.org/cgi/url.cgi?ports/devel/gnustep/pkg-descr /usr/ports/devel/gnustep/]'' meta port.&amp;lt;br/&amp;gt;To automatically install GNUstep '''and''' (literally) tons of GNUstep-related applications, take a look at the ''[http://www.freebsd.org/cgi/url.cgi?ports/x11/gnustep-app/pkg-descr /usr/ports/x11/gnustep-app/]'' meta port.&lt;br /&gt;
&lt;br /&gt;
These ports should now install all dependencies -- a complete list can [[Dependencies|be found here]].&lt;br /&gt;
&lt;br /&gt;
'''Note'''&lt;br /&gt;
: Prior to FreeBSD-6.0, there is a bug in ''kvm(3)'' that '''requires''' a mounted ''/proc'' for GNUstep to work properly. Until this bug is fixed, make sure you have an entry for ''/proc'' in your ''/etc/fstab'':&lt;br /&gt;
&lt;br /&gt;
 proc                    /proc           procfs  rw              0       0&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
[http://www.freebsd.org/cgi/ports.cgi?query=gnustep&amp;amp;stype=all FreeBSD GNUstep ports], &lt;br /&gt;
[http://www.freshports.org/search.php?stype=longdescription&amp;amp;method=match&amp;amp;query=gnustep&amp;amp;num=10&amp;amp;orderby=category&amp;amp;orderbyupdown=asc&amp;amp;search=Search Freshports GNUstep]&lt;br /&gt;
&lt;br /&gt;
== FreeBSD-Kernel w/ GNU userland, and GNU C library ==&lt;br /&gt;
It was reported that this runs GNUstep as well. For more details see the topic of&lt;br /&gt;
the IRC channel #gnu-kbsd on irc.gnu.org&lt;br /&gt;
&lt;br /&gt;
== FreeSBIE ==&lt;br /&gt;
[http://www.freesbie.org/ FreeSBIE] is a Live-CD Version of FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MidnightBSD ==&lt;br /&gt;
[http://www.midnightbsd.org/ MidnightBSD] is based on FreeBSD 6.1 pre-release. The goal of the project is to create a BSD with ease of use and simplicity in mind.&lt;br /&gt;
&lt;br /&gt;
The most intriguing thing about MidnightBSD is their integration of GNUstep into the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PicoBSD ==&lt;br /&gt;
[http://people.freebsd.org/~picobsd/picobsd.html PicoBSD] is a one floppy version of [[#FreeBSD|FreeBSD]] 3.0-current. You won't be able to use it as a platform for GNUstep.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PC-BSD ==&lt;br /&gt;
[http://www.pcbsd.org/ PC-BSD] has as its goals to be an easy to install and use desktop OS, which is built on the [[#FreeBSD|FreeBSD]] operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Mac OS X =&lt;br /&gt;
&lt;br /&gt;
=== Full Install ===&lt;br /&gt;
&lt;br /&gt;
GNUstep *does* work on OS X 10.4 and later, too, but it will not work out of the box with the dependencies built from MacPorts (and I guess from fink either). The problem is not the Apple linker per se, but rather that many of our dependencies nowadays depend directly or indirectly on CoreFoundation on OS X and, unfortunately, CoreFoundation started to depend on Apple's libobjc in 10.4.&lt;br /&gt;
&lt;br /&gt;
To successfully build and run GNUstep on Mac OS X 10.4 and later, you need (at least) to configure aspell with --disable-nls (the nonls variant of aspell should do for MacPorts). Next, you need a freetype configured with --without-old-mac-fonts (unfortunately no help from MacPorts here and the freetype shipped with Mac OS X 10.5 will not work either). Apart from that, configure GNUstep-base with --disable-tls and GNUstep-back with --disable-glx and use either the libart (the default) or xlib backend. Eventually, I may have forgotten some other libraries in this list, but you will notice that when looking at the crash report being produced in ~/Library/Logs/CrashReporter. Look for a line containing /usr/lib/libobjc.A.dylib.&lt;br /&gt;
&lt;br /&gt;
=== Extensions Install ===&lt;br /&gt;
This section is for building the GNUstep extensions only. Use this if, for instance, if you want to build something based on GNUstep, such as GSWeb or GNUMail. If you want to build the complete GNUstep system independant of Mac OS X, see the Full Install section above or Darwin/PowerPC section.&lt;br /&gt;
&lt;br /&gt;
Currently tested on MacOSX 10.1.5, 10.2, 10.3&lt;br /&gt;
&lt;br /&gt;
'''Recommended compiler'''&lt;br /&gt;
&amp;lt;br&amp;gt;Default. For 10.1.5, you need to add -no-cpp-precomp to CFLAGS (For instance, ./configure CFLAGS=&amp;quot;-no-cpp-precomp&amp;quot; ...)&lt;br /&gt;
&lt;br /&gt;
'''Extra libs needed'''&lt;br /&gt;
&amp;lt;br&amp;gt;None.&lt;br /&gt;
&lt;br /&gt;
'''Special Instructions'''&lt;br /&gt;
&amp;lt;br&amp;gt;Warning ! To know how to install a complete GNUstep system on Mac OS X, read the Darwin/PowerPC section. By default, on Mac OS X, only the GNUstep extensions are built. Read the README.Darwin file in the gnustep-make/Documentation directory for complete instructions.&lt;br /&gt;
&lt;br /&gt;
To build the GNUstep extensions only is useful, when you want to build on Mac OS X, GNUstep related projects like gdl2, etc linked to Cocoa. Xcode project files exist, but they may not be up-to-date. Make sure /usr/sbin is in your path:&lt;br /&gt;
&lt;br /&gt;
  PATH=$PATH:/usr/sbin&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&lt;br /&gt;
  cd make&lt;br /&gt;
  ./configure --with-library-combo=apple-apple-apple&lt;br /&gt;
  make install&lt;br /&gt;
  . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh&lt;br /&gt;
  cd ../base&lt;br /&gt;
  ./configure --with-xml-prefix=/usr --disable-xmltest&lt;br /&gt;
  make debug=yes install&lt;br /&gt;
&lt;br /&gt;
On Mac OS X 10.1.5, there is no libxml. Either install libxml2 or configure base with --disable-xml. &lt;br /&gt;
&lt;br /&gt;
See also the [[Platform:BSD#Darwin|Darwin / PowerPC]] section.&lt;br /&gt;
&lt;br /&gt;
= NetBSD =&lt;br /&gt;
Installing GNUstep from pkgsrc is really straight-forward for NetBSD if you're using a recent pkgsrc distribution. NetBSD/i386 has no known problems right now, however there are reports of crashout problems for gdomap on NetBSD/sparc which may be related to ffi/ffcall issues.&lt;br /&gt;
&lt;br /&gt;
In terms of pre-requisites, ensure you've got a working X11 environment on your system and preferrably are using WindowMaker as your window manager. &lt;br /&gt;
&lt;br /&gt;
'''Build instructions'''&lt;br /&gt;
&lt;br /&gt;
To install GNUstep, you need to cd to your pkgsrc tree and then cd to the right package directory, on my system:&lt;br /&gt;
&lt;br /&gt;
  cd /usr/pkgsrc&lt;br /&gt;
&lt;br /&gt;
then go to the package you wish to install, for example:&lt;br /&gt;
&lt;br /&gt;
  cd meta-pkgs/gnustep&lt;br /&gt;
&lt;br /&gt;
and issue the command:&lt;br /&gt;
&lt;br /&gt;
  make install&lt;br /&gt;
&lt;br /&gt;
This command will download source code and whatever dependencies and compile and install them. The version of the meta-packages I used (released with NetBSD 2.0 and called gnustep-1.10.0nb2) installs the following GNUstep components as parts of the meta-package:&lt;br /&gt;
&lt;br /&gt;
* gnustep-make-1.10.0&lt;br /&gt;
* gnustep-base-1.10.1&lt;br /&gt;
* gnustep-ssl-1.10.1&lt;br /&gt;
* gnustep-gui-0.9.4&lt;br /&gt;
* gnustep-back-0.9.4&lt;br /&gt;
* gnustep-examples-1.0.0&lt;br /&gt;
* ImageViewer-0.6.3&lt;br /&gt;
* Pantomime-1.1.2&lt;br /&gt;
* Addresses-0.4.6&lt;br /&gt;
* GNUMail-1.1.2&lt;br /&gt;
* Gorm-0.8.0&lt;br /&gt;
* ProjectCenter-0.4.0&lt;br /&gt;
* GWLib-0.6.5&lt;br /&gt;
* Renaissance-0.8.0&lt;br /&gt;
* gworkspace-0.6.5&lt;br /&gt;
&lt;br /&gt;
A number of dependency packages are also installed.&lt;br /&gt;
&lt;br /&gt;
This may be overkill - if you don't need all the applications etc, you can install the packages individually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OpenBSD =&lt;br /&gt;
&lt;br /&gt;
Since many years, GNUstep is available in the OpenBSD ports tree. Packages are available for amd64, i386, and powerpc.&lt;br /&gt;
The packages are based on the latest releases. Since some time, using libobjc2, but compiled with the system gcc.&lt;br /&gt;
For easy installation, a meta package is provided. &lt;br /&gt;
&lt;br /&gt;
    sudo pkg_add -i gnustep-desktop&lt;br /&gt;
&lt;br /&gt;
Above command will install the meta package, and all the packages from the [http://www.openbsd.org/cgi-bin/cvsweb/ports/x11/gnustep/ x11/gnustep] part of the ports tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Platform:BSD&amp;diff=6502</id>
		<title>Platform:BSD</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Platform:BSD&amp;diff=6502"/>
		<updated>2013-02-06T05:35:07Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: /* OpenBSD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Darwin =&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
Currently tested on Darwin 7.x&lt;br /&gt;
&lt;br /&gt;
'''Recommended compiler'''&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 3.3.2 or greater 3.3.* versions. Older versions will not compile on Darwin and 3.4.* versions don't support GNU runtime compilation on Darwin currently (The GCC bug report is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 4.0.3 or greater 4.* versions (the bug mentioned above has been fixed for 4.0.3 and newer)&lt;br /&gt;
&lt;br /&gt;
Default compiler (Apple GCC) has unknown problems. Download the FSF GCC compiler (mirrors at http://gcc.gnu.org/mirrors.html) and configure it with -enable-threads=posix. You don't need binutils or anything else. Use the GNU runtime. Make sure to add&lt;br /&gt;
&lt;br /&gt;
  export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)&lt;br /&gt;
&lt;br /&gt;
so that the correct compiler is found&lt;br /&gt;
&lt;br /&gt;
'''Extra libs needed'''&lt;br /&gt;
&amp;lt;br&amp;gt;Use libffi from http://sourceware.org/libffi/ or the older ffcall if this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
'''Special Instructions'''&lt;br /&gt;
&amp;lt;br&amp;gt;Read the README.Darwin file in the gnustep-make/Documentation directory for complete instructions.&lt;br /&gt;
&lt;br /&gt;
=== PowerPC ===&lt;br /&gt;
This section is for building the complete GNUstep system. This system will not interact at all with Mac OS X/Cocoa. It uses different complilers, different display systems, etc. For building GNUstep extensions to be used with Mac OS X (for instance, if you want to build something based on GNUstep, such as GSWeb or GNUMail), see the MacOSX/PowerPC section.&lt;br /&gt;
&lt;br /&gt;
Currently tested on Darwin 6.x, 7.x, 8.x&lt;br /&gt;
&lt;br /&gt;
'''Recommended compiler'''&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 3.3.2 or greater 3.3.* versions. Older versions will not compile on Darwin and 3.4.* versions don't support GNU runtime compilation on Darwin currently (The GCC bug report is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).&lt;br /&gt;
&amp;lt;br&amp;gt;gcc 4.0.3 or greater 4.* versions (the bug mentioned above has been fixed for 4.0.3 and newer)&lt;br /&gt;
&amp;lt;br&amp;gt;Apple GCC with Xcode 2.5. &lt;br /&gt;
&lt;br /&gt;
'''Extra libs needed'''&lt;br /&gt;
&amp;lt;br&amp;gt;Use libffi (not ffcall). This should be enabled by default in gnustep-base so you don't have to type --enable-libffi. For 6.x, you need the dlcompat library (from www.opendarwin.org) to load bundles (not needed for 7.x).&lt;br /&gt;
&lt;br /&gt;
'''Special Instructions'''&lt;br /&gt;
&amp;lt;br&amp;gt;Read the README.Darwin file in the gnustep-make/Documentation directory for complete instructions.&lt;br /&gt;
&lt;br /&gt;
See also the [[Platform:BSD#Mac_OS_X|Mac OSX / PowerPC]] section&lt;br /&gt;
&lt;br /&gt;
= FreeBSD-based systems =&lt;br /&gt;
&lt;br /&gt;
== DesktopBSD ==&lt;br /&gt;
[http://desktopbsd.sourceforge.net/ DesktopBSD] joins the ranks of [[#PC-BSD|PC-BSD]] and [[#FreeSBIE|FreeSBIE]] as a desktop-ready version of [[#FreeBSD|FreeBSD]]. However, their desktop is based on [http://www.kde.org KDE].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DragonFly ==&lt;br /&gt;
[http://www.dragonflybsd.org/main/ DragonFly] is an operating system and environment designed to be the logical continuation of the [[#FreeBSD|FreeBSD]]-4.x OS series.&lt;br /&gt;
&lt;br /&gt;
I have mostly ported GNUstep to DragonFly, I just need to submit patches now for both GNUstep and DragonFly. To know more, you can contact me. ''[[user:Qmathe | Quentin Mathé]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FreeBSD ==&lt;br /&gt;
You can install GNUstep using the ''[http://www.freebsd.org/cgi/url.cgi?ports/devel/gnustep/pkg-descr /usr/ports/devel/gnustep/]'' meta port.&amp;lt;br/&amp;gt;To automatically install GNUstep '''and''' (literally) tons of GNUstep-related applications, take a look at the ''[http://www.freebsd.org/cgi/url.cgi?ports/x11/gnustep-app/pkg-descr /usr/ports/x11/gnustep-app/]'' meta port.&lt;br /&gt;
&lt;br /&gt;
These ports should now install all dependencies -- a complete list can [[Dependencies|be found here]].&lt;br /&gt;
&lt;br /&gt;
'''Note'''&lt;br /&gt;
: Prior to FreeBSD-6.0, there is a bug in ''kvm(3)'' that '''requires''' a mounted ''/proc'' for GNUstep to work properly. Until this bug is fixed, make sure you have an entry for ''/proc'' in your ''/etc/fstab'':&lt;br /&gt;
&lt;br /&gt;
 proc                    /proc           procfs  rw              0       0&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
[http://www.freebsd.org/cgi/ports.cgi?query=gnustep&amp;amp;stype=all FreeBSD GNUstep ports], &lt;br /&gt;
[http://www.freshports.org/search.php?stype=longdescription&amp;amp;method=match&amp;amp;query=gnustep&amp;amp;num=10&amp;amp;orderby=category&amp;amp;orderbyupdown=asc&amp;amp;search=Search Freshports GNUstep]&lt;br /&gt;
&lt;br /&gt;
== FreeBSD-Kernel w/ GNU userland, and GNU C library ==&lt;br /&gt;
It was reported that this runs GNUstep as well. For more details see the topic of&lt;br /&gt;
the IRC channel #gnu-kbsd on irc.gnu.org&lt;br /&gt;
&lt;br /&gt;
== FreeSBIE ==&lt;br /&gt;
[http://www.freesbie.org/ FreeSBIE] is a Live-CD Version of FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MidnightBSD ==&lt;br /&gt;
[http://www.midnightbsd.org/ MidnightBSD] is based on FreeBSD 6.1 pre-release. The goal of the project is to create a BSD with ease of use and simplicity in mind.&lt;br /&gt;
&lt;br /&gt;
The most intriguing thing about MidnightBSD is their integration of GNUstep into the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PicoBSD ==&lt;br /&gt;
[http://people.freebsd.org/~picobsd/picobsd.html PicoBSD] is a one floppy version of [[#FreeBSD|FreeBSD]] 3.0-current. You won't be able to use it as a platform for GNUstep.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PC-BSD ==&lt;br /&gt;
[http://www.pcbsd.org/ PC-BSD] has as its goals to be an easy to install and use desktop OS, which is built on the [[#FreeBSD|FreeBSD]] operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Mac OS X =&lt;br /&gt;
&lt;br /&gt;
=== Full Install ===&lt;br /&gt;
&lt;br /&gt;
GNUstep *does* work on OS X 10.4 and later, too, but it will not work out of the box with the dependencies built from MacPorts (and I guess from fink either). The problem is not the Apple linker per se, but rather that many of our dependencies nowadays depend directly or indirectly on CoreFoundation on OS X and, unfortunately, CoreFoundation started to depend on Apple's libobjc in 10.4.&lt;br /&gt;
&lt;br /&gt;
To successfully build and run GNUstep on Mac OS X 10.4 and later, you need (at least) to configure aspell with --disable-nls (the nonls variant of aspell should do for MacPorts). Next, you need a freetype configured with --without-old-mac-fonts (unfortunately no help from MacPorts here and the freetype shipped with Mac OS X 10.5 will not work either). Apart from that, configure GNUstep-base with --disable-tls and GNUstep-back with --disable-glx and use either the libart (the default) or xlib backend. Eventually, I may have forgotten some other libraries in this list, but you will notice that when looking at the crash report being produced in ~/Library/Logs/CrashReporter. Look for a line containing /usr/lib/libobjc.A.dylib.&lt;br /&gt;
&lt;br /&gt;
=== Extensions Install ===&lt;br /&gt;
This section is for building the GNUstep extensions only. Use this if, for instance, if you want to build something based on GNUstep, such as GSWeb or GNUMail. If you want to build the complete GNUstep system independant of Mac OS X, see the Full Install section above or Darwin/PowerPC section.&lt;br /&gt;
&lt;br /&gt;
Currently tested on MacOSX 10.1.5, 10.2, 10.3&lt;br /&gt;
&lt;br /&gt;
'''Recommended compiler'''&lt;br /&gt;
&amp;lt;br&amp;gt;Default. For 10.1.5, you need to add -no-cpp-precomp to CFLAGS (For instance, ./configure CFLAGS=&amp;quot;-no-cpp-precomp&amp;quot; ...)&lt;br /&gt;
&lt;br /&gt;
'''Extra libs needed'''&lt;br /&gt;
&amp;lt;br&amp;gt;None.&lt;br /&gt;
&lt;br /&gt;
'''Special Instructions'''&lt;br /&gt;
&amp;lt;br&amp;gt;Warning ! To know how to install a complete GNUstep system on Mac OS X, read the Darwin/PowerPC section. By default, on Mac OS X, only the GNUstep extensions are built. Read the README.Darwin file in the gnustep-make/Documentation directory for complete instructions.&lt;br /&gt;
&lt;br /&gt;
To build the GNUstep extensions only is useful, when you want to build on Mac OS X, GNUstep related projects like gdl2, etc linked to Cocoa. Xcode project files exist, but they may not be up-to-date. Make sure /usr/sbin is in your path:&lt;br /&gt;
&lt;br /&gt;
  PATH=$PATH:/usr/sbin&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&lt;br /&gt;
  cd make&lt;br /&gt;
  ./configure --with-library-combo=apple-apple-apple&lt;br /&gt;
  make install&lt;br /&gt;
  . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh&lt;br /&gt;
  cd ../base&lt;br /&gt;
  ./configure --with-xml-prefix=/usr --disable-xmltest&lt;br /&gt;
  make debug=yes install&lt;br /&gt;
&lt;br /&gt;
On Mac OS X 10.1.5, there is no libxml. Either install libxml2 or configure base with --disable-xml. &lt;br /&gt;
&lt;br /&gt;
See also the [[Platform:BSD#Darwin|Darwin / PowerPC]] section.&lt;br /&gt;
&lt;br /&gt;
= NetBSD =&lt;br /&gt;
Installing GNUstep from pkgsrc is really straight-forward for NetBSD if you're using a recent pkgsrc distribution. NetBSD/i386 has no known problems right now, however there are reports of crashout problems for gdomap on NetBSD/sparc which may be related to ffi/ffcall issues.&lt;br /&gt;
&lt;br /&gt;
In terms of pre-requisites, ensure you've got a working X11 environment on your system and preferrably are using WindowMaker as your window manager. &lt;br /&gt;
&lt;br /&gt;
'''Build instructions'''&lt;br /&gt;
&lt;br /&gt;
To install GNUstep, you need to cd to your pkgsrc tree and then cd to the right package directory, on my system:&lt;br /&gt;
&lt;br /&gt;
  cd /usr/pkgsrc&lt;br /&gt;
&lt;br /&gt;
then go to the package you wish to install, for example:&lt;br /&gt;
&lt;br /&gt;
  cd meta-pkgs/gnustep&lt;br /&gt;
&lt;br /&gt;
and issue the command:&lt;br /&gt;
&lt;br /&gt;
  make install&lt;br /&gt;
&lt;br /&gt;
This command will download source code and whatever dependencies and compile and install them. The version of the meta-packages I used (released with NetBSD 2.0 and called gnustep-1.10.0nb2) installs the following GNUstep components as parts of the meta-package:&lt;br /&gt;
&lt;br /&gt;
* gnustep-make-1.10.0&lt;br /&gt;
* gnustep-base-1.10.1&lt;br /&gt;
* gnustep-ssl-1.10.1&lt;br /&gt;
* gnustep-gui-0.9.4&lt;br /&gt;
* gnustep-back-0.9.4&lt;br /&gt;
* gnustep-examples-1.0.0&lt;br /&gt;
* ImageViewer-0.6.3&lt;br /&gt;
* Pantomime-1.1.2&lt;br /&gt;
* Addresses-0.4.6&lt;br /&gt;
* GNUMail-1.1.2&lt;br /&gt;
* Gorm-0.8.0&lt;br /&gt;
* ProjectCenter-0.4.0&lt;br /&gt;
* GWLib-0.6.5&lt;br /&gt;
* Renaissance-0.8.0&lt;br /&gt;
* gworkspace-0.6.5&lt;br /&gt;
&lt;br /&gt;
A number of dependency packages are also installed.&lt;br /&gt;
&lt;br /&gt;
This may be overkill - if you don't need all the applications etc, you can install the packages individually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OpenBSD =&lt;br /&gt;
&lt;br /&gt;
Since many years, GNUstep is available in the OpenBSD ports tree. Packages are available for amd64, i386, and powerpc.&lt;br /&gt;
The packages are based on the latest releases. Since some time, using libobjc2, but compiled with the system gcc.&lt;br /&gt;
For easy installation, a meta package is provided. &lt;br /&gt;
&lt;br /&gt;
    sudo pkg_add -i gnustep-desktop&lt;br /&gt;
&lt;br /&gt;
Above command will install the meta package, and all the packages from the x11/gnustep part of the ports tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6500</id>
		<title>MPDCon.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6500"/>
		<updated>2012-12-30T16:49:22Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = A GNUstep MPD client. |&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/MPDCon-1.4.tar.gz 1.4] |&lt;br /&gt;
releasedate = December 30, 2012 |&lt;br /&gt;
license = GPLv2 |&lt;br /&gt;
overview = A client for the Music Player Daemon (MPD) |&lt;br /&gt;
features = &lt;br /&gt;
* connects to an MPD server&lt;br /&gt;
* Playlist and Collections&lt;br /&gt;
* Lyrics Inspector connecting to lyrics.wikia.com&lt;br /&gt;
  * retrieved lyrics are cached in local SQLite3 database&lt;br /&gt;
* Song Inspector&lt;br /&gt;
* Rating of songs in the Playlist&lt;br /&gt;
  * ratings are saved in SQLite3 database&lt;br /&gt;
* Playlist Inspector&lt;br /&gt;
  * allows configuring a random feed to the playlist&lt;br /&gt;
  * the random feed may be based on the song ratings&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
maintainer = Daniel Luederwald (initial Author), now GAP Team |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://mpd.wikia.com/wiki/Client:MPDCon |&lt;br /&gt;
category = [[Category:Audio Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6499</id>
		<title>MPDCon.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6499"/>
		<updated>2012-12-30T16:29:36Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = A GNUstep MPD client. |&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/MPDCon-1.4.tar.gz 1.4] |&lt;br /&gt;
releasedate = December 30, 2012 |&lt;br /&gt;
license = GPLv2 |&lt;br /&gt;
overview = A client for the Music Player Daemon (MPD) |&lt;br /&gt;
features = &lt;br /&gt;
* connects to an MPD server&lt;br /&gt;
* Playlist and Collections&lt;br /&gt;
* Lyrics Inspector connecting to lyrics.wikia.com&lt;br /&gt;
  * retrieved lyrics are cached in local SQLite3 database&lt;br /&gt;
* Song Inspector&lt;br /&gt;
* Rating of songs in the Playlist&lt;br /&gt;
  * ratings are saved in SQLite3 database&lt;br /&gt;
* Playlist Inspector&lt;br /&gt;
  * allows configuring a random feed to the playlist&lt;br /&gt;
  * the random feed may be based on the song ratings&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
maintainer = Daniel Luederwald (initial Author), now GAP Team |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://www.musicpd.org/MPDCon.shtml |&lt;br /&gt;
category = [[Category:Audio Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=SQLClient&amp;diff=6498</id>
		<title>SQLClient</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=SQLClient&amp;diff=6498"/>
		<updated>2012-12-30T16:05:54Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
&lt;br /&gt;
shortdescription = Lightweight database abstraction layer. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/libs/SQLClient-1.6.0.tar.gz 1.6.0] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Nov 10, 2012 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = The SQLClient library is designed to provide a simple interface to SQL&lt;br /&gt;
databases for GNUstep applications. It does not attempt the sort of&lt;br /&gt;
abstraction provided by the much more sophisticated GDL2 library&lt;br /&gt;
but rather allows applications to directly execute SQL queries and statements.&lt;br /&gt;
&lt;br /&gt;
SQLClient provides for the Objective-C programmer much the same thing that&lt;br /&gt;
JDBC provides for the Java programmer (though SQLClient is a bit faster,&lt;br /&gt;
easier to use, and easier to add new database backends for than JDBC). |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Simple API for executing queries and statements... a variable length sequence of comma separated strings and other objects (NSNumber, NSDate, NSData) are concatenated into a single SQL statement and executed.&lt;br /&gt;
* Simple API for combining multiple SQL statements into a single transaction which can be used to minimise client-server interactions to get the best possible performance from your database.&lt;br /&gt;
* Supports multiple simultaneous named connections to a database server in a thread-safe manner.&lt;br /&gt;
* Supports multiple simultaneous connections to different database servers with backend driver bundles loaded for different database engines. Clear, simple subclassing of the abstract base class to enable easy implementation of new backend bundles.&lt;br /&gt;
* Configuration for all connections held in one place and referenced by connection name for ease of configuration control. Changes via NSUserDefaults can even allow reconfiguration of client instances within a running application.&lt;br /&gt;
* Thread safe operation... The base class supports locking such that a single instance can be shared between multiple threads. &lt;br /&gt;
* Supports batching of statements into a single transaction to minimise client-server interaction overheads.&lt;br /&gt;
* Has backends for PostgreSQL, MySQL, SQLite and JDBC (the latter allowing you to use any database for which JDBC drivers exist , but suffering from the performance overhead of going through Java). |&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Database Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Template:GNUstep_News&amp;diff=6462</id>
		<title>Template:GNUstep News</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Template:GNUstep_News&amp;diff=6462"/>
		<updated>2012-10-21T10:32:05Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: new version 1.3 of MPDCon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Oct 21 2012 ===&lt;br /&gt;
* '''[[MPDCon.app]]  1.3'''&lt;br /&gt;
: ([http://gap.nongnu.org/mpdcon MPDCon Homepage])&lt;br /&gt;
&lt;br /&gt;
=== Oct 2 2012 ===&lt;br /&gt;
* '''[[FisicaLab.app]]  0.3.0'''&lt;br /&gt;
: ([http://www.nongnu.org/fisicalab/descargas_eng.html Download FisicaLab])&lt;br /&gt;
&lt;br /&gt;
=== Sep 4 2012 ===&lt;br /&gt;
* '''GNUstep CoreBase  0.1.1 release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/libs/gnustep-corebase-0.1.1.tar.gz Download CoreBase])&lt;br /&gt;
&lt;br /&gt;
=== Aug 21 2012 ===&lt;br /&gt;
* '''Windows Installer snapshot (unstable) update'''&lt;br /&gt;
: ([http://www.gnustep.org/experience/Windows.html 0.31.0 Release])&lt;br /&gt;
&lt;br /&gt;
=== Jul 27 2012 ===&lt;br /&gt;
* '''GNUstep CoreBase  0.1.0 initial release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/libs/gnustep-corebase-0.1.tar.gz Download CoreBase])&lt;br /&gt;
&lt;br /&gt;
=== Jul 27 2012 ===&lt;br /&gt;
* '''[[AddressManager.app]] 0.4.8''' &lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== Jul 14 2012 ===&lt;br /&gt;
* '''Windows Installer update'''&lt;br /&gt;
: ([http://www.gnustep.org/experience/Windows.html 0.30.0 Release])&lt;br /&gt;
&lt;br /&gt;
=== Jun 30 2012 ===&lt;br /&gt;
* '''[[Grr]] 1.0.0''' and RSSkit&lt;br /&gt;
: New releases&lt;br /&gt;
&lt;br /&gt;
=== Jun 20 2012 ===&lt;br /&gt;
* '''[[PDFKit]] 0.9.2'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== Jun 13 2012 ===&lt;br /&gt;
* '''[[ProjectCenter.app]] 0.6.1'''&lt;br /&gt;
: Minor update release&lt;br /&gt;
&lt;br /&gt;
=== Jun 09 2012 ===&lt;br /&gt;
* '''[[MPDCon.app]] 1.2'''&lt;br /&gt;
: First release from GAP&lt;br /&gt;
&lt;br /&gt;
=== Jun 03 2012 ===&lt;br /&gt;
* '''[[GSPdf.app]] 0.5'''&lt;br /&gt;
: New maintenance release&lt;br /&gt;
&lt;br /&gt;
* '''[[Terminal.app]] 0.9.8'''&lt;br /&gt;
: Maintenance release&lt;br /&gt;
&lt;br /&gt;
=== May 31 2012 ===&lt;br /&gt;
* '''[[GWorkspace.app]] 0.9.1'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== May 24 2012 ===&lt;br /&gt;
* '''[[DataBasin.app]] 0.5'''&lt;br /&gt;
: New release, improved functions and bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== May 10 2012 ===&lt;br /&gt;
* '''[[Zipper.app]] 1.4'''&lt;br /&gt;
: First release from the GAP team.&lt;br /&gt;
&lt;br /&gt;
=== May 01 2012 ===&lt;br /&gt;
* '''[[Graphos.app]] 0.3'''&lt;br /&gt;
: New release (modeless inspector, new improved file format...)&lt;br /&gt;
&lt;br /&gt;
=== Apr 23 2012 ===&lt;br /&gt;
* '''[[PRICE.app]] 1.1.0'''&lt;br /&gt;
: New release (new filters, enhancements, bug and portability fixes)&lt;br /&gt;
&lt;br /&gt;
=== Apr 09 2012 ===&lt;br /&gt;
* '''[[FisicaLab.app]] 0.2.2'''&lt;br /&gt;
: New release (bugfix for latest GNUstep packages)&lt;br /&gt;
&lt;br /&gt;
=== Apr 06 2012 ===&lt;br /&gt;
* '''[[FTP.app]] 0.3'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== Mar 29 2012 ===&lt;br /&gt;
* '''GNUstep participates in Google Summer of Code 2012'''&lt;br /&gt;
: ([[Summer of Code 2012]])&lt;br /&gt;
&lt;br /&gt;
=== Feb 17 2012 ===&lt;br /&gt;
* '''Windows Installer update'''&lt;br /&gt;
: ([http://www.gnustep.org/experience/Windows.html GNUstep-Core 0.29.1])&lt;br /&gt;
&lt;br /&gt;
=== Feb 14 2012 ===&lt;br /&gt;
* '''Silver theme  2.5'''&lt;br /&gt;
: ([http://wiki.gnustep.org/images/6/6d/Silver.theme.tar.bz2 Silver theme])&lt;br /&gt;
&lt;br /&gt;
=== Feb 14 2012 ===&lt;br /&gt;
* '''[[Gemas.app]]  0.3'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/Gemas-0.3.tar.gz Download Gemas])&lt;br /&gt;
* '''[[HighlighterKit]]  0.1.2'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/HighlighterKit-0.1.2.tar.gz Download HighlighterKit])&lt;br /&gt;
* '''HKThemes  1.0'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/HKThemes-1.0.tar.gz Download HKThemes])&lt;br /&gt;
&lt;br /&gt;
=== Feb 03 2012 ===&lt;br /&gt;
* '''GNUstep [[Gui]]  0.22.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-0.22.0.tar.gz Download Gui])&lt;br /&gt;
* '''GNUstep [[Back]]  0.22.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-0.22.0.tar.gz Download Back])&lt;br /&gt;
* '''GNUstep [[Make]]  2.6.2 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-2.6.2.tar.gz Download Make])&lt;br /&gt;
* '''GNUstep [[Base]]  1.24.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-1.24.0.tar.gz Download Base])&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6461</id>
		<title>MPDCon.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6461"/>
		<updated>2012-10-21T10:30:06Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: new version 1.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = A GNUstep MPD client. |&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/MPDCon-1.3.tar.gz 1.3] |&lt;br /&gt;
releasedate = October 21, 2012 |&lt;br /&gt;
license = GPLv2 |&lt;br /&gt;
overview = A client for the Music Player Daemon (MPD) |&lt;br /&gt;
features = &lt;br /&gt;
* connects to an MPD server&lt;br /&gt;
* Playlist and Collections&lt;br /&gt;
* Lyrics Inspector connecting to lyrics.wikia.com&lt;br /&gt;
* Song Inspector&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
maintainer = Daniel Luederwald (initial Author), now GAP Team |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://www.musicpd.org/MPDCon.shtml |&lt;br /&gt;
category = [[Category:Audio Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Paje.app&amp;diff=6359</id>
		<title>Paje.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Paje.app&amp;diff=6359"/>
		<updated>2012-06-19T18:05:11Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: Update Version and download link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = Pajé is an interactive and scalable trace-based visualization tool which can be used for a large variety of visualizations including performance monitoring of parallel applications, monitoring the execution of processors in a large scale PC cluster or representing the behavior of distributed applications. |&lt;br /&gt;
currentversion = [http://downloads.sourceforge.net/project/paje/Releases/Paje-1.98.tar.gz 1.98] |&lt;br /&gt;
releasedate = December 20, 2011 |&lt;br /&gt;
license = LGPL |&lt;br /&gt;
overview = Users of Pajé can tailor the visualization to their needs, without having to know any insight nor to modify any component of Pajé. This can be done by defining the type hierarchy of objects to be visualized as well as how these objects should be visualized. This feature allows the use of Pajé for a wide variety of visualizations such as the use of resources by applications in a large-size cluster or the behavior of distributed Java applications. |&lt;br /&gt;
features = |&lt;br /&gt;
maintainer = &lt;br /&gt;
* Benhur Stein&lt;br /&gt;
* Vincent Danjean&lt;br /&gt;
* Edmar Pessoa Araújo Neto&lt;br /&gt;
* Geovani Ricardo Wiedenhoft&lt;br /&gt;
* Gregory Mounie |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* [http://www-id.imag.fr/Logiciels/paje/index.html Paje's Official Web Site]&lt;br /&gt;
* [http://www-id.imag.fr/Logiciels/paje/usermanual.html Paje User Manual] |&lt;br /&gt;
category = [[Category:Science_Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6355</id>
		<title>MPDCon.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6355"/>
		<updated>2012-06-09T17:55:50Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: Release 1.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = A GNUstep MPD client. |&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/MPDCon-1.2.tar.gz 1.2] |&lt;br /&gt;
releasedate = June 09, 2012 |&lt;br /&gt;
license = GPL2 |&lt;br /&gt;
overview = A client for the Music Player Daemon (MPD) |&lt;br /&gt;
features = &lt;br /&gt;
* connects to an MPD server&lt;br /&gt;
* Playlist and Collections &lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
maintainer = Daniel Luederwald (initial Author), now GAP Team |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://www.musicpd.org/MPDCon.shtml |&lt;br /&gt;
category = [[Category:Audio Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Template:GNUstep_News&amp;diff=6354</id>
		<title>Template:GNUstep News</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Template:GNUstep_News&amp;diff=6354"/>
		<updated>2012-06-09T17:51:15Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: Added MPDCon release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jun 09 2012 ===&lt;br /&gt;
* '''[[MPDCon.app]] 1.2'''&lt;br /&gt;
: First release from GAP&lt;br /&gt;
&lt;br /&gt;
=== Jun 03 2012 ===&lt;br /&gt;
* '''[[GSPdf.app]] 0.5'''&lt;br /&gt;
: New maintenance release&lt;br /&gt;
&lt;br /&gt;
* '''[[Terminal.app]] 0.9.8'''&lt;br /&gt;
: Maintenance release&lt;br /&gt;
&lt;br /&gt;
=== May 31 2012 ===&lt;br /&gt;
* '''[[GWorkspace.app]] 0.9.1'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== May 24 2012 ===&lt;br /&gt;
* '''[[DataBasin.app]] 0.5'''&lt;br /&gt;
: New release, improved functions and bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== May 10 2012 ===&lt;br /&gt;
* '''[[Zipper.app]] 1.4'''&lt;br /&gt;
: First release from the GAP team.&lt;br /&gt;
&lt;br /&gt;
=== May 01 2012 ===&lt;br /&gt;
* '''[[Graphos.app]] 0.3'''&lt;br /&gt;
: New release (modeless inspector, new improved file format...)&lt;br /&gt;
&lt;br /&gt;
=== Apr 23 2012 ===&lt;br /&gt;
* '''[[PRICE.app]] 1.1.0'''&lt;br /&gt;
: New release (new filters, enhancements, bug and portability fixes)&lt;br /&gt;
&lt;br /&gt;
=== Apr 09 2012 ===&lt;br /&gt;
* '''[[FisicaLab.app]] 0.2.2'''&lt;br /&gt;
: New release (bugfix for latest GNUstep packages)&lt;br /&gt;
&lt;br /&gt;
=== Apr 06 2012 ===&lt;br /&gt;
* '''[[FTP.app]] 0.3'''&lt;br /&gt;
: New release&lt;br /&gt;
&lt;br /&gt;
=== Mar 29 2012 ===&lt;br /&gt;
* '''GNUstep participates in Google Summer of Code 2012'''&lt;br /&gt;
: ([[Summer of Code 2012]])&lt;br /&gt;
&lt;br /&gt;
=== Feb 17 2012 ===&lt;br /&gt;
* '''Windows Installer update'''&lt;br /&gt;
: ([http://www.gnustep.org/experience/Windows.html GNUstep-Core 0.29.1])&lt;br /&gt;
&lt;br /&gt;
=== Feb 14 2012 ===&lt;br /&gt;
* '''Silver theme  2.5'''&lt;br /&gt;
: ([http://wiki.gnustep.org/images/6/6d/Silver.theme.tar.bz2 Silver theme])&lt;br /&gt;
&lt;br /&gt;
=== Feb 14 2012 ===&lt;br /&gt;
* '''[[Gemas.app]]  0.3'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/Gemas-0.3.tar.gz Download Gemas])&lt;br /&gt;
* '''[[HighlighterKit]]  0.1.2'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/HighlighterKit-0.1.2.tar.gz Download HighlighterKit])&lt;br /&gt;
* '''HKThemes  1.0'''&lt;br /&gt;
: ([http://download.gna.org/gnustep-nonfsf/HKThemes-1.0.tar.gz Download HKThemes])&lt;br /&gt;
&lt;br /&gt;
=== Feb 03 2012 ===&lt;br /&gt;
* '''GNUstep [[Gui]]  0.22.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-gui-0.22.0.tar.gz Download Gui])&lt;br /&gt;
* '''GNUstep [[Back]]  0.22.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-back-0.22.0.tar.gz Download Back])&lt;br /&gt;
* '''GNUstep [[Make]]  2.6.2 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-2.6.2.tar.gz Download Make])&lt;br /&gt;
* '''GNUstep [[Base]]  1.24.0 stable release'''&lt;br /&gt;
: ([ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-base-1.24.0.tar.gz Download Base])&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6291</id>
		<title>FOSDEM 2012</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6291"/>
		<updated>2012-02-13T08:08:46Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FOSDEM 2012 Announcement ==&lt;br /&gt;
&lt;br /&gt;
[http://fosdem.org/2012/ FOSDEM 2012] will take place at at the '''Université Libre de Bruxelles''', in '''Brussels''' on '''Saturday 4 and Sunday 5 February 2012'''.&lt;br /&gt;
&lt;br /&gt;
This page is for organizing GNUstep's participation in the event. This includes the organization of a developer meeting&lt;br /&gt;
the Friday before FOSDEM.&lt;br /&gt;
&lt;br /&gt;
== Organizer(s) ==&lt;br /&gt;
&lt;br /&gt;
* Lars Sonchocky-Helldorf (lars dot sonchocky dash helldorf at hamburg dot de)&lt;br /&gt;
* is somebody else interested in lending me a hand?&lt;br /&gt;
&lt;br /&gt;
== Who will attend FOSDEM ==&lt;br /&gt;
&lt;br /&gt;
One of the main reasons people attend the event is that you can meet, and talk directly to, other developers, whom you would otherwise meet only virtually (on mailing lists, emails, newsgroups, IRC etc.). We expect many lead developers and contributors to be present, so if you have never met them, you shouldn't miss this occasion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following is a list of people of GNUstep fame who have confirmed (or denied) that they will be able to join us at the GNUstep meeting at FOSDEM 2012:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Friday&lt;br /&gt;
3. Feb&lt;br /&gt;
! Saturday&lt;br /&gt;
4. Feb&lt;br /&gt;
! Sunday&lt;br /&gt;
5. Feb&lt;br /&gt;
! Monday&lt;br /&gt;
6. Feb&lt;br /&gt;
! Special comments / topics&lt;br /&gt;
! Hotel&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Lars S.-Helldorf ||| Yes || Yes || Yes || No || event organizer || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Nikolaus Schaller || No || Yes || Yes || No  || QuantumSTEP + Openmoko / GTA04.org || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Quentin Mathé  || Yes || Yes || Yes ||  No || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Niels Grewe  || || || ||   || Étoilé, DBusKit || &lt;br /&gt;
|-&lt;br /&gt;
| David Chisnall  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Reitenbach || Yes || Yes || Yes || No || OpenBSD packages, GAP, OpenGroupware || Hotel The Moon&lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Roard  || || || || ?  || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Fred Kiefer  || Yes || Yes || Yes || No  || GNUstep (GUI, Cairo) || Hotel Aqua&lt;br /&gt;
|-&lt;br /&gt;
| Riccardo Mottola  || || || || ?  || GNUstep, GAP || &lt;br /&gt;
|-&lt;br /&gt;
| Gerold Rupprecht || ? || Yes || Yes || ?  || GNUstep || &lt;br /&gt;
|-&lt;br /&gt;
| Richard Frith-Macdonald || Late  ||  Yes || Yes || No  || GNUstep || Argus&lt;br /&gt;
|-&lt;br /&gt;
| N.N. ||  t.b.d. || t.b.d. || t.b.d. || t.b.d. || t.b.d. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dev-Room Presentations and Events ==&lt;br /&gt;
&lt;br /&gt;
The room at out disposal will be '''AW1.126''' (capacity is 72 seats (this is more than twice of what we had the years ago); in the building &amp;quot;AW&amp;quot;),&lt;br /&gt;
-- on '''Saturday 2011-02-04''' from (to be confirmed) '''11:00''' to '''19:00'''&lt;br /&gt;
&lt;br /&gt;
=== Call for participation ===&lt;br /&gt;
&lt;br /&gt;
We are looking for people who want to give a talk, moderate a discussion, hold a hand ons (practice) / hacking session or organize a code sprint. Please send your proposals to [mailto:discuss-gnustep@gnu.org GNUstep discussion list], the organizers mentioned [[FOSDEM_2011#Organizers|above]] or - if you've got a wiki account - enter them right [http://wiki.gnustep.org/index.php?title=FOSDEM_2011&amp;amp;action=edit&amp;amp;section=6 here]. At first a title, a short summary, proposed duration and a preffered time slot would do, so we can start scheduling as soon as possible.&lt;br /&gt;
&lt;br /&gt;
'''deadline for filing is t.b.d., deadline for the papers is t.b.d.'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The FOSDEM organizers strongly recommend a '''granularity of 15 minute blocks'''. So if a talk is just 15 (lightning talk), 30 or 45 minutes long - fine! But we should have 15 minutes breaks between the talks so that the visitors have enough time to find a seat and the presenters have enough time to get ready.&lt;br /&gt;
&lt;br /&gt;
=== List of submitted talk/discussion/session proposals ===&lt;br /&gt;
&lt;br /&gt;
Please submit through *[mailto:discuss-gnustep@gnu.org GNUstep discussion list]* until *2011-12-31*&lt;br /&gt;
&lt;br /&gt;
=== Wishlist for talks/discussions/sessions ===&lt;br /&gt;
&lt;br /&gt;
Enter talks/discussions/sessions here you would be interested in.&lt;br /&gt;
&lt;br /&gt;
* GNUstep Progresses and Roadmap&lt;br /&gt;
* CoreBase and CoreGraphics/Opal in GNUstep&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!width=&amp;quot;65pt&amp;quot;| Time Slot !! width=&amp;quot;130pt&amp;quot;| Author !! width=&amp;quot;360pt&amp;quot;| Title / Abstract !! width=&amp;quot;130pt&amp;quot;| Kind !! width=&amp;quot;40pt&amp;quot; | Slides&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#ddd;&amp;quot; | '''Saturday, Feb 04, 2012'''&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 - 11:15 || GNUstep Developers || '''GNUstep Developer's Meeting'''&lt;br /&gt;
&lt;br /&gt;
Meet the GNUstep developers face to face, discuss current afairs of GNUstep, share news about the latest development and plans on GNUstep, improve collaboration between the several GNUstep related projects&lt;br /&gt;
&lt;br /&gt;
|| meeting, discussion || -&lt;br /&gt;
|-&lt;br /&gt;
| 11:15 - 11:45 || Sebastian Reitenbach || '''OpenBSD GNUstep ports update'''&lt;br /&gt;
&lt;br /&gt;
Topics covered:&lt;br /&gt;
* Why the hell on OpenBSD&lt;br /&gt;
* How easy it is to create a new GNUstep port&lt;br /&gt;
* What's new compared to last year&lt;br /&gt;
* Problems I encountered over the last year&lt;br /&gt;
* Goals for the next year&lt;br /&gt;
&lt;br /&gt;
|| talk || [[Image:OpenBSD-ports-FOSDEM-2012.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
| 12:00 - 12:30 || Sebastian Reitenbach || '''OpenGroupware - Phoenix from the ashes'''&lt;br /&gt;
&lt;br /&gt;
Topics covered:&lt;br /&gt;
* short history of OpenGroupware, overview of its features&lt;br /&gt;
* porting effort from gnustep-make 1 to gnustep-make 2, and from libFoundation to gnustep-base&lt;br /&gt;
* OpenGroupware is now based on SOPE fork from the SOGo team, lots of bugs in SOPE got fixed&lt;br /&gt;
* talk about some new features&lt;br /&gt;
* OpenGroupware-5.5rc1 (I hope to agree with Adam to release it even before the FOSDEM)&lt;br /&gt;
* short Demo&lt;br /&gt;
&lt;br /&gt;
|| talk || [[Image:OpenGroupware-FOSDEM-2012.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
| 12:45 - 13:30 || Sebastian Reitenbach || '''A GNUstep Applications Overview'''&lt;br /&gt;
&lt;br /&gt;
* it will feature GAP (GNUstep Application Project)&lt;br /&gt;
** introduce the project, and its goals&lt;br /&gt;
** cover some of the applications found there&lt;br /&gt;
* it will also include the usual known suspects: GWorkspace, ProjectCenter, Gorm, ...&lt;br /&gt;
* it will also cover some other nice GNUstep applications found scattered all over the web, for example:&lt;br /&gt;
** CDPlayer, Burn, GNUMail, SimpleAgenda, Zipper and more&lt;br /&gt;
* show/demonstrate some of the applications live&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 13:45 - 14:15 || Fred Kiefer || '''GNUstep GUI: Recent Developments - Graphics and Text'''&lt;br /&gt;
&lt;br /&gt;
* New features in the text system this year&lt;br /&gt;
* Resolution Independence/scale factor support&lt;br /&gt;
* Other graphics improvements&lt;br /&gt;
* Demo&lt;br /&gt;
&lt;br /&gt;
|| talk || [[Image:Gnustep-gui-FOSDEM-2012.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
| 14:30 - 15:00 || Quentin Mathé || '''Étoilé: What has been done over the past year and what's next?'''&lt;br /&gt;
&lt;br /&gt;
In this presentation, we will take a look at the Étoilé progresses over the past year. We will summarize our work on both our core frameworks and GNUstep. We will also discuss the project status in a broader way, and what can be expected in 2012.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 15:15 - 16:00 || Richard Frith-Macdonald || '''Enterprise Control, Configuration and Logging/Alarming using GNUstep-base'''&lt;br /&gt;
&lt;br /&gt;
1. An overview of the problem of dealing with multiple server processes on multiple hosts and sites.  How to provide fault tolerance and how to scale up without losing control.&lt;br /&gt;
2. A discussion of the use of the basic technologies such as Distributed Objects and property lists etc to implement these systems.&lt;br /&gt;
3. Control ... how we start/stop server processes, prevent duplication of processes, support automated restart, and query the state of processes.&lt;br /&gt;
4. Configuration ... how we provide specific configuration to each process under central control, yet allow those servers to operate independently.&lt;br /&gt;
5. Logging/Alarming ... how we provide and manage simple and consistent audit/debug logging facilities for server processes, and how we integrate with SNMP.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 16:15 - 17:00 || Quentin Mathé || '''CoreObject : An Object Store built for Revision Control and Desktop Environment Needs'''&lt;br /&gt;
&lt;br /&gt;
This talk will introduce CoreObject, an Object Store built from the ground up to support features such as selective undo, live collaboration without locking, branching, etc. not found in Object-Oriented Databases until now. CoreObject is not based on Operational Transformations but a new Object Graph Diffing and Merging model, that makes possible to integrate these revision control features into a database and ensure they scale to large object histories.&lt;br /&gt;
From a desktop environment perspective, revision tracks are available to create interactive views on the history and support multiple undo/redo granularity levels. CoreObject also comes with a collection of reusable object models to solve recurrent use cases in document management, organization and edition.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 17:15 - 18:00 || David Chisnall || '''New Features of Objective-C'''&lt;br /&gt;
&lt;br /&gt;
With iOS 5 and OS X 10.7, Apple introduced a number of new Objective-C features.  With the release of version 1.6 of the GNUstep Objective-C runtime and version 3.0 of clang these are now all available to GNUstep developers.  The new features include better data hiding, automatic reference counting, and a number of other features.  This talk will cover these features, as well as some of the extensions beyond Apple's version and the improvements in Objective-C performance since FOSDEM last year.&lt;br /&gt;
&lt;br /&gt;
|| talk || [http://www.fosdem.org/2012/schedule/event/new_objc_features link to slides]&lt;br /&gt;
|-&lt;br /&gt;
| 18:15 - 19:00 || Dr. H. Nikolaus Schaller || '''QuantumSTEP: new frameworks and future directions'''&lt;br /&gt;
&lt;br /&gt;
QuantumSTEP is a technology study framework and application&lt;br /&gt;
suite that is partially based on GNUstep. It aims at consequently&lt;br /&gt;
using Objective-C on embedded and portable devices. This talk&lt;br /&gt;
describes the latest additions to the frameworks: CoreLocation,&lt;br /&gt;
MKMapKit, CoreWLAN, CoreTelephony and demonstrates how&lt;br /&gt;
they work on the new GTA04 hardware.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Suggested Hotels ==&lt;br /&gt;
&lt;br /&gt;
last year Sebastian Reitenbach and Nikolaus Schaller have booked here. Ask them on the mailing list on their Experience:&lt;br /&gt;
&lt;br /&gt;
=== Louise Hotel ===&lt;br /&gt;
* 40, rue Veydt&lt;br /&gt;
* 1050 Bruxelles&lt;br /&gt;
* http://www.louisehotel.com/&lt;br /&gt;
* Sebastian Reitenbach says:&lt;br /&gt;
** book via: http://www.hotelreservierungen.de , which is cheaper than the offer on the hotel site. The reservation includes breakfast.&lt;br /&gt;
** free WiFi is available&lt;br /&gt;
** it costs only about half the price of the Argus hotel from last year. &lt;br /&gt;
** Its near avenue louise, only a foot walk away from the university campus.&lt;br /&gt;
&lt;br /&gt;
NOTE Dec 2011: appears to have changed owner and is no longer listed in online booking portals&lt;br /&gt;
&lt;br /&gt;
=== Argus Hotel Brussels (Belguim) (good experiences from past years) ===&lt;br /&gt;
*6, Rue Capitaine Crespel &lt;br /&gt;
*B-1050 Bruxelles, Belgique&lt;br /&gt;
*Tel +32 2 514 07 70&lt;br /&gt;
*Fax +32 2  514 12 22&lt;br /&gt;
*reception@hotel-argus.be&lt;br /&gt;
*Rate: 65/night - but you have to ask for the 'GNUstep/FOSDEM' discount&lt;br /&gt;
*has free Internet ;-)&lt;br /&gt;
&lt;br /&gt;
Normal prices are here:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukrates.htm&lt;br /&gt;
&lt;br /&gt;
but there are discounts available:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukpromotions.htm&lt;br /&gt;
&lt;br /&gt;
and we'll ask for even better discounts for a group booking (we need to know who's will be there for that!)&lt;br /&gt;
&lt;br /&gt;
Some people booked that hotel in the last years: Nicolas, Marcus, Helge ,Lars.&lt;br /&gt;
&lt;br /&gt;
=== Sun Hotel in Brussels (Belguim)  (not recommended) ===&lt;br /&gt;
*Rue du Berger, 38 &lt;br /&gt;
*1050 Brussels (near Porte de Namur)&lt;br /&gt;
*Tel : +32(0)2 511 21 19&lt;br /&gt;
*Fax : +32(0)2 512 32 71&lt;br /&gt;
*sunhotel@skynet.be&lt;br /&gt;
*www.hotels-belgium.com/brussel-al/sunhotel.htm&lt;br /&gt;
&lt;br /&gt;
*50 EUR/Single room with breakfast&lt;br /&gt;
*22 rooms total&lt;br /&gt;
*3km distance to University&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
has internet access, will make breakfast room available for developers after 11:00 am. Two electrical plugs for breakfast room, so need extension cord with  additional plugs. Ask for first or second floor rooms close to reception for good wifi connections.&lt;br /&gt;
&lt;br /&gt;
=== Hotel Sabina in Brussels (Belgium)===&lt;br /&gt;
*Rue du Nord 78&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel: (32)2 218 26 37&lt;br /&gt;
*Fax: (32)2 219 32 39&lt;br /&gt;
(very good rating by visitors)&lt;br /&gt;
63 EUR/Single with breakfast&lt;br /&gt;
8 single only + 16 double rooms&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
=== Hotel Mozart in Bruxelles (Belgium)===&lt;br /&gt;
*Rue Marché aux Fromages 23&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel +32 2 502 66 61&lt;br /&gt;
*Fax +32 2 502 77 58&lt;br /&gt;
*Email Hotel.mozart@skynet.be&lt;br /&gt;
http://www.hotels-belgium.com/brussel-center/mozart.htm&lt;br /&gt;
&lt;br /&gt;
70 EUR/Single room NO breakfast&lt;br /&gt;
WLAN&lt;br /&gt;
&lt;br /&gt;
51 rooms total&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are open to other suggestions. Please take into account distance to the University and access to public transportation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A quick introduction to Brussels:&lt;br /&gt;
http://wikitravel.org/en/Brussel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:FOSDEM]]&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 a mail with your user name to ''&amp;lt;tt&amp;gt;gnustep-webmasters [AT] gnu.org&amp;lt;/tt&amp;gt;'' to request write-access. We are sorry for the inconvenience, but this procedure has become necessary to prevent SPAM'ing of this site.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=File:Gnustep-gui-FOSDEM-2012.pdf&amp;diff=6290</id>
		<title>File:Gnustep-gui-FOSDEM-2012.pdf</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=File:Gnustep-gui-FOSDEM-2012.pdf&amp;diff=6290"/>
		<updated>2012-02-13T08:05:03Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: GUI improvements talk FOSDEM 2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GUI improvements talk FOSDEM 2012&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=File:OpenGroupware-FOSDEM-2012.pdf&amp;diff=6289</id>
		<title>File:OpenGroupware-FOSDEM-2012.pdf</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=File:OpenGroupware-FOSDEM-2012.pdf&amp;diff=6289"/>
		<updated>2012-02-13T08:04:11Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: Slides of the OpenGroupware talk FOSDEM 2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides of the OpenGroupware talk FOSDEM 2012&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=File:OpenBSD-ports-FOSDEM-2012.pdf&amp;diff=6288</id>
		<title>File:OpenBSD-ports-FOSDEM-2012.pdf</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=File:OpenBSD-ports-FOSDEM-2012.pdf&amp;diff=6288"/>
		<updated>2012-02-13T08:03:20Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: FOSDEM 2012 slides for OpenBSD ports update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FOSDEM 2012 slides for OpenBSD ports update&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6253</id>
		<title>FOSDEM 2012</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6253"/>
		<updated>2012-01-26T18:20:01Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: /* Who will attend FOSDEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FOSDEM 2012 Announcement ==&lt;br /&gt;
&lt;br /&gt;
[http://fosdem.org/2012/ FOSDEM 2012] will take place at at the '''Université Libre de Bruxelles''', in '''Brussels''' on '''Saturday 4 and Sunday 5 February 2012'''.&lt;br /&gt;
&lt;br /&gt;
This page is for organizing GNUstep's participation in the event. This includes the organization of a developer meeting&lt;br /&gt;
the Friday before FOSDEM.&lt;br /&gt;
&lt;br /&gt;
== Organizer(s) ==&lt;br /&gt;
&lt;br /&gt;
* Lars Sonchocky-Helldorf (lars dot sonchocky dash helldorf at hamburg dot de)&lt;br /&gt;
* is somebody else interested in lending me a hand?&lt;br /&gt;
&lt;br /&gt;
== Who will attend FOSDEM ==&lt;br /&gt;
&lt;br /&gt;
One of the main reasons people attend the event is that you can meet, and talk directly to, other developers, whom you would otherwise meet only virtually (on mailing lists, emails, newsgroups, IRC etc.). We expect many lead developers and contributors to be present, so if you have never met them, you shouldn't miss this occasion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following is a list of people of GNUstep fame who have confirmed (or denied) that they will be able to join us at the GNUstep meeting at FOSDEM 2012:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Friday&lt;br /&gt;
3. Feb&lt;br /&gt;
! Saturday&lt;br /&gt;
4. Feb&lt;br /&gt;
! Sunday&lt;br /&gt;
5. Feb&lt;br /&gt;
! Monday&lt;br /&gt;
6. Feb&lt;br /&gt;
! Special comments / topics&lt;br /&gt;
! Hotel&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Lars S.-Helldorf ||| Yes || Yes || Yes || No || event organizer || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Nikolaus Schaller || No || Yes || Yes || No  || QuantumSTEP + Openmoko / GTA04.org || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Quentin Mathé  || Yes || Yes || Yes ||  No || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Niels Grewe  || || || ||   || Étoilé, DBusKit || &lt;br /&gt;
|-&lt;br /&gt;
| David Chisnall  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Reitenbach || Yes || Yes || Yes || No || OpenBSD packages, GAP, OpenGroupware || Hotel The Moon&lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Roard  || || || || ?  || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Fred Kiefer  || YES || YES || YES || NO  || GNUstep (GUI, Cairo) || Hotel Aqua&lt;br /&gt;
|-&lt;br /&gt;
| Riccardo Mottola  || || || || ?  || GNUstep, GAP || &lt;br /&gt;
|-&lt;br /&gt;
| Gerold Rupprecht || || || || ?  || GNUstep || &lt;br /&gt;
|-&lt;br /&gt;
| Richard Frith-Macdonald || Yes  ||  Yes || Yes || No  || GNUstep || Argus&lt;br /&gt;
|-&lt;br /&gt;
| N.N. ||  t.b.d. || t.b.d. || t.b.d. || t.b.d. || t.b.d. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dev-Room Presentations and Events ==&lt;br /&gt;
&lt;br /&gt;
The room at out disposal will be '''AW1.126''' (capacity is 72 seats (this is more than twice of what we had the years ago); in the building &amp;quot;AW&amp;quot;),&lt;br /&gt;
-- on '''Saturday 2011-02-04''' from (to be confirmed) '''11:00''' to '''19:00'''&lt;br /&gt;
&lt;br /&gt;
=== Call for participation ===&lt;br /&gt;
&lt;br /&gt;
We are looking for people who want to give a talk, moderate a discussion, hold a hand ons (practice) / hacking session or organize a code sprint. Please send your proposals to [mailto:discuss-gnustep@gnu.org GNUstep discussion list], the organizers mentioned [[FOSDEM_2011#Organizers|above]] or - if you've got a wiki account - enter them right [http://wiki.gnustep.org/index.php?title=FOSDEM_2011&amp;amp;action=edit&amp;amp;section=6 here]. At first a title, a short summary, proposed duration and a preffered time slot would do, so we can start scheduling as soon as possible.&lt;br /&gt;
&lt;br /&gt;
'''deadline for filing is t.b.d., deadline for the papers is t.b.d.'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The FOSDEM organizers strongly recommend a '''granularity of 15 minute blocks'''. So if a talk is just 15 (lightning talk), 30 or 45 minutes long - fine! But we should have 15 minutes breaks between the talks so that the visitors have enough time to find a seat and the presenters have enough time to get ready.&lt;br /&gt;
&lt;br /&gt;
=== List of submitted talk/discussion/session proposals ===&lt;br /&gt;
&lt;br /&gt;
Please submit through *[mailto:discuss-gnustep@gnu.org GNUstep discussion list]* until *2011-12-31*&lt;br /&gt;
&lt;br /&gt;
=== Wishlist for talks/discussions/sessions ===&lt;br /&gt;
&lt;br /&gt;
Enter talks/discussions/sessions here you would be interested in.&lt;br /&gt;
&lt;br /&gt;
* GNUstep Progresses and Roadmap&lt;br /&gt;
* CoreBase and CoreGraphics/Opal in GNUstep&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!width=&amp;quot;65pt&amp;quot;| Time Slot !! width=&amp;quot;130pt&amp;quot;| Author !! width=&amp;quot;360pt&amp;quot;| Title / Abstract !! width=&amp;quot;130pt&amp;quot;| Kind !! width=&amp;quot;40pt&amp;quot; | Slides&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#ddd;&amp;quot; | '''Saturday, Feb 04, 2012'''&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 - 11:15 || GNUstep Developers || '''GNUstep Developer's Meeting'''&lt;br /&gt;
&lt;br /&gt;
Meet the GNUstep developers face to face, discuss current afairs of GNUstep, share news about the latest development and plans on GNUstep, improve collaboration between the several GNUstep related projects&lt;br /&gt;
&lt;br /&gt;
|| meeting, discussion || -&lt;br /&gt;
|-&lt;br /&gt;
| 11:15 - 11:45 || Sebastian Reitenbach || '''OpenBSD GNUstep ports update'''&lt;br /&gt;
&lt;br /&gt;
Topics covered:&lt;br /&gt;
* Why the hell on OpenBSD&lt;br /&gt;
* How easy it is to create a new GNUstep port&lt;br /&gt;
* What's new compared to last year&lt;br /&gt;
* Problems I encountered over the last year&lt;br /&gt;
* Goals for the next year&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 12:00 - 12:30 || Sebastian Reitenbach || '''OpenGroupware - Phoenix from the ashes'''&lt;br /&gt;
&lt;br /&gt;
Topics covered:&lt;br /&gt;
* short history of OpenGroupware, overview of its features&lt;br /&gt;
* porting effort from gnustep-make 1 to gnustep-make 2, and from libFoundation to gnustep-base&lt;br /&gt;
* OpenGroupware is now based on SOPE fork from the SOGo team, lots of bugs in SOPE got fixed&lt;br /&gt;
* talk about some new features&lt;br /&gt;
* OpenGroupware-5.5rc1 (I hope to agree with Adam to release it even before the FOSDEM)&lt;br /&gt;
* short Demo&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 12:45 - 13:30 || Sebastian Reitenbach || '''A GNUstep Applications Overview'''&lt;br /&gt;
&lt;br /&gt;
* it will feature GAP (GNUstep Application Project)&lt;br /&gt;
** introduce the project, and its goals&lt;br /&gt;
** cover some of the applications found there&lt;br /&gt;
* it will also include the usual known suspects: GWorkspace, ProjectCenter, Gorm, ...&lt;br /&gt;
* it will also cover some other nice GNUstep applications found scattered all over the web, for example:&lt;br /&gt;
** CDPlayer, Burn, GNUMail, SimpleAgenda, Zipper and more&lt;br /&gt;
* show/demonstrate some of the applications live&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 13:45 - 14:15 || Fred Kiefer || '''GNUstep GUI: Recent Developments - Graphics and Text'''&lt;br /&gt;
&lt;br /&gt;
* New features in the text system this year&lt;br /&gt;
* Resolution Independence/scale factor support&lt;br /&gt;
* Other graphics improvements&lt;br /&gt;
* Demo&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 14:30 - 15:00 || Quentin Mathé || '''Étoilé: What has been done over the past year and what's next?'''&lt;br /&gt;
&lt;br /&gt;
In this presentation, we will take a look at the Étoilé progresses over the past year. We will summarize our work on both our core frameworks and GNUstep. We will also discuss the project status in a broader way, and what can be expected in 2012.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 15:15 - 16:00 || Richard Frith-Macdonald || '''Enterprise Control, Configuration and Logging/Alarming using GNUstep-base'''&lt;br /&gt;
&lt;br /&gt;
1. An overview of the problem of dealing with multiple server processes on multiple hosts and sites.  How to provide fault tolerance and how to scale up without losing control.&lt;br /&gt;
2. A discussion of the use of the basic technologies such as Distributed Objects and property lists etc to implement these systems.&lt;br /&gt;
3. Control ... how we start/stop server processes, prevent duplication of processes, support automated restart, and query the state of processes.&lt;br /&gt;
4. Configuration ... how we provide specific configuration to each process under central control, yet allow those servers to operate independently.&lt;br /&gt;
5. Logging/Alarming ... how we provide and manage simple and consistent audit/debug logging facilities for server processes, and how we integrate with SNMP.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 16:15 - 17:00 || Quentin Mathé || '''CoreObject : An Object Store built for Revision Control and Desktop Environment Needs'''&lt;br /&gt;
&lt;br /&gt;
This talk will introduce CoreObject, an Object Store built from the ground up to support features such as selective undo, live collaboration without locking, branching, etc. not found in Object-Oriented Databases until now. CoreObject is not based on Operational Transformations but a new Object Graph Diffing and Merging model, that makes possible to integrate these revision control features into a database and ensure they scale to large object histories.&lt;br /&gt;
From a desktop environment perspective, revision tracks are available to create interactive views on the history and support multiple undo/redo granularity levels. CoreObject also comes with a collection of reusable object models to solve recurrent use cases in document management, organization and edition.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 17:15 - 18:00 || David Chisnall || '''New Features of Objective-C'''&lt;br /&gt;
&lt;br /&gt;
With iOS 5 and OS X 10.7, Apple introduced a number of new Objective-C features.  With the release of version 1.6 of the GNUstep Objective-C runtime and version 3.0 of clang these are now all available to GNUstep developers.  The new features include better data hiding, automatic reference counting, and a number of other features.  This talk will cover these features, as well as some of the extensions beyond Apple's version and the improvements in Objective-C performance since FOSDEM last year.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| 18:15 - 19:00 || Dr. H. Nikolaus Schaller || '''QuantumSTEP: new frameworks and future directions'''&lt;br /&gt;
&lt;br /&gt;
QuantumSTEP is a technology study framework and application&lt;br /&gt;
suite that is partially based on GNUstep. It aims at consequently&lt;br /&gt;
using Objective-C on embedded and portable devices. This talk&lt;br /&gt;
describes the latest additions to the frameworks: CoreLocation,&lt;br /&gt;
MKMapKit, CoreWLAN, CoreTelephony and demonstrates how&lt;br /&gt;
they work on the new GTA04 hardware.&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d. link to slides&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Suggested Hotels ==&lt;br /&gt;
&lt;br /&gt;
last year Sebastian Reitenbach and Nikolaus Schaller have booked here. Ask them on the mailing list on their Experience:&lt;br /&gt;
&lt;br /&gt;
=== Louise Hotel ===&lt;br /&gt;
* 40, rue Veydt&lt;br /&gt;
* 1050 Bruxelles&lt;br /&gt;
* http://www.louisehotel.com/&lt;br /&gt;
* Sebastian Reitenbach says:&lt;br /&gt;
** book via: http://www.hotelreservierungen.de , which is cheaper than the offer on the hotel site. The reservation includes breakfast.&lt;br /&gt;
** free WiFi is available&lt;br /&gt;
** it costs only about half the price of the Argus hotel from last year. &lt;br /&gt;
** Its near avenue louise, only a foot walk away from the university campus.&lt;br /&gt;
&lt;br /&gt;
NOTE Dec 2011: appears to have changed owner and is no longer listed in online booking portals&lt;br /&gt;
&lt;br /&gt;
=== Argus Hotel Brussels (Belguim) (good experiences from past years) ===&lt;br /&gt;
*6, Rue Capitaine Crespel &lt;br /&gt;
*B-1050 Bruxelles, Belgique&lt;br /&gt;
*Tel +32 2 514 07 70&lt;br /&gt;
*Fax +32 2  514 12 22&lt;br /&gt;
*reception@hotel-argus.be&lt;br /&gt;
*Rate: 65/night - but you have to ask for the 'GNUstep/FOSDEM' discount&lt;br /&gt;
*has free Internet ;-)&lt;br /&gt;
&lt;br /&gt;
Normal prices are here:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukrates.htm&lt;br /&gt;
&lt;br /&gt;
but there are discounts available:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukpromotions.htm&lt;br /&gt;
&lt;br /&gt;
and we'll ask for even better discounts for a group booking (we need to know who's will be there for that!)&lt;br /&gt;
&lt;br /&gt;
Some people booked that hotel in the last years: Nicolas, Marcus, Helge ,Lars.&lt;br /&gt;
&lt;br /&gt;
=== Sun Hotel in Brussels (Belguim)  (not recommended) ===&lt;br /&gt;
*Rue du Berger, 38 &lt;br /&gt;
*1050 Brussels (near Porte de Namur)&lt;br /&gt;
*Tel : +32(0)2 511 21 19&lt;br /&gt;
*Fax : +32(0)2 512 32 71&lt;br /&gt;
*sunhotel@skynet.be&lt;br /&gt;
*www.hotels-belgium.com/brussel-al/sunhotel.htm&lt;br /&gt;
&lt;br /&gt;
*50 EUR/Single room with breakfast&lt;br /&gt;
*22 rooms total&lt;br /&gt;
*3km distance to University&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
has internet access, will make breakfast room available for developers after 11:00 am. Two electrical plugs for breakfast room, so need extension cord with  additional plugs. Ask for first or second floor rooms close to reception for good wifi connections.&lt;br /&gt;
&lt;br /&gt;
=== Hotel Sabina in Brussels (Belgium)===&lt;br /&gt;
*Rue du Nord 78&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel: (32)2 218 26 37&lt;br /&gt;
*Fax: (32)2 219 32 39&lt;br /&gt;
(very good rating by visitors)&lt;br /&gt;
63 EUR/Single with breakfast&lt;br /&gt;
8 single only + 16 double rooms&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
=== Hotel Mozart in Bruxelles (Belgium)===&lt;br /&gt;
*Rue Marché aux Fromages 23&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel +32 2 502 66 61&lt;br /&gt;
*Fax +32 2 502 77 58&lt;br /&gt;
*Email Hotel.mozart@skynet.be&lt;br /&gt;
http://www.hotels-belgium.com/brussel-center/mozart.htm&lt;br /&gt;
&lt;br /&gt;
70 EUR/Single room NO breakfast&lt;br /&gt;
WLAN&lt;br /&gt;
&lt;br /&gt;
51 rooms total&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are open to other suggestions. Please take into account distance to the University and access to public transportation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A quick introduction to Brussels:&lt;br /&gt;
http://wikitravel.org/en/Brussel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:FOSDEM]]&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 a mail with your user name to ''&amp;lt;tt&amp;gt;webmasters [AT] gnustep.org&amp;lt;/tt&amp;gt;'' to request write-access. We are sorry for the inconvenience, but this procedure has become necessary to prevent SPAM'ing of this site.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=ImageViewer.app&amp;diff=6246</id>
		<title>ImageViewer.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=ImageViewer.app&amp;diff=6246"/>
		<updated>2012-01-19T17:43:46Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Application|&lt;br /&gt;
&lt;br /&gt;
shortdescription = ImageViewer is a small application which display images. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://www.nice.ch/~phip/ImageViewer-0.6.3.tar.gz 0.6.3] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Aug 1, 2003 |&lt;br /&gt;
&lt;br /&gt;
license = GPL 2 |&lt;br /&gt;
&lt;br /&gt;
overview = Image viewing application&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* can open single files&lt;br /&gt;
* or all files in directories (also recursively)&lt;br /&gt;
* &amp;quot;List and view directories Pictures&amp;quot; Service &lt;br /&gt;
* Image Inspector&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
maintainer = Philippe Robert |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = http://www.nice.ch/~phip/softcorner.html#img |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Graphics Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Vespucci.app&amp;diff=6239</id>
		<title>Vespucci.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Vespucci.app&amp;diff=6239"/>
		<updated>2012-01-15T16:30:49Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = Vespucci is a simple Web Browser using WebKit or [[SimpleWebKit]] |&lt;br /&gt;
&lt;br /&gt;
currentversion = 0.1 |&lt;br /&gt;
&lt;br /&gt;
releasedate = not yet released |&lt;br /&gt;
&lt;br /&gt;
license =  GPLv2 or later|&lt;br /&gt;
&lt;br /&gt;
overview = Vespucci is a browser for the World Wide Web. |&lt;br /&gt;
&lt;br /&gt;
features =&lt;br /&gt;
&lt;br /&gt;
* multiple-document support, with recent document list&lt;br /&gt;
* standard back/forward buttons&lt;br /&gt;
* bookmarks, in Safari-compatible format (it can read safari bookmarks directly)&lt;br /&gt;
* Workspace integration&lt;br /&gt;
* webloc link file support (just copy over the file from Mac)&lt;br /&gt;
* Open URL service&lt;br /&gt;
&lt;br /&gt;
Vespucci can be built against Apple's WebKit (currently on Macintosh only) and against GNUstep's [[SimpleWebKit]] |&lt;br /&gt;
&lt;br /&gt;
maintainer = rmottola@users.sf.net |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = &lt;br /&gt;
* [http://gap.nongnu.org/vespucci/index.html Vespucci in GAP] |&lt;br /&gt;
category = [[Category:Network Applications]] [[Category:Workspace Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Ink.app&amp;diff=6238</id>
		<title>Ink.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Ink.app&amp;diff=6238"/>
		<updated>2012-01-15T16:10:04Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Application|&lt;br /&gt;
&lt;br /&gt;
shortdescription = Ink is the GNUstep editor. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-examples-1.3.0.tar.gz GNUStep Examples 1.3.0]|&lt;br /&gt;
&lt;br /&gt;
releasedate = Feb 02, 2010 |&lt;br /&gt;
&lt;br /&gt;
license = GPL 2 |&lt;br /&gt;
&lt;br /&gt;
overview = Ink is a basic editor for rtf(d) and plain text. Its main purpose is to demonstrate how to build a document-centered application by subclassing [[NSDocument]]. |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* printing&lt;br /&gt;
* spell checker&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
maintainer = Fred Kiefer |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = &lt;br /&gt;
*[http://www.gnustep.org/experience/examples.html GNUStep Examples page]&lt;br /&gt;
* [http://gnustep.blogspot.com/2008/01/ink-gnustep-text-editor-and-services.html Ink, a GNUstep text editor, and services]|&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Editor Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Ink.app&amp;diff=6237</id>
		<title>Ink.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Ink.app&amp;diff=6237"/>
		<updated>2012-01-15T16:07:49Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Application|&lt;br /&gt;
&lt;br /&gt;
shortdescription = Ink is the GNUstep editor. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-examples-1.3.0.tar.gz GNUStep Examples 1.3.0]|&lt;br /&gt;
&lt;br /&gt;
releasedate = Feb 02, 2010 |&lt;br /&gt;
&lt;br /&gt;
license = GPL 2 |&lt;br /&gt;
&lt;br /&gt;
overview = Ink is a basic editor for rtf(d) and plain text. Its main purpose is to demonstrate how to build a document-centered application by subclassing [[NSDocument]]. |&lt;br /&gt;
&lt;br /&gt;
features = |&lt;br /&gt;
&lt;br /&gt;
maintainer = Fred Kiefer |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = &lt;br /&gt;
*[http://www.gnustep.org/experience/examples.html GNUStep Examples page]&lt;br /&gt;
* [http://gnustep.blogspot.com/2008/01/ink-gnustep-text-editor-and-services.html Ink, a GNUstep text editor, and services]|&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Editor Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6236</id>
		<title>MPDCon.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MPDCon.app&amp;diff=6236"/>
		<updated>2012-01-15T16:04:04Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = A GNUstep MPD client. |&lt;br /&gt;
currentversion = [http://heanet.dl.sourceforge.net/sourceforge/mpdcon/MPDCon-1.1.99.tar.gz 1.1.99] |&lt;br /&gt;
releasedate = Mar 13, 2006 |&lt;br /&gt;
license = GPL2 |&lt;br /&gt;
overview = A client for the Music Player Daemon (MPD) |&lt;br /&gt;
features = &lt;br /&gt;
* connects to an MPD server&lt;br /&gt;
* Playlist and Collections &lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
maintainer = Daniel Luederwald |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* http://www.musicpd.org/MPDCon.shtml |&lt;br /&gt;
category = [[Category:Audio Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6231</id>
		<title>FOSDEM 2012</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6231"/>
		<updated>2011-12-30T08:51:39Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: /* Who will attend FOSDEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FOSDEM 2012 Announcement ==&lt;br /&gt;
&lt;br /&gt;
[http://fosdem.org/2012/ FOSDEM 2012] will take place at at the '''Université Libre de Bruxelles''', in '''Brussels''' on '''Saturday 4 and Sunday 5 February 2012'''.&lt;br /&gt;
&lt;br /&gt;
This page is for organizing GNUstep's participation in the event. This includes the organization of a developer meeting&lt;br /&gt;
the Friday before FOSDEM.&lt;br /&gt;
&lt;br /&gt;
== Organizer(s) ==&lt;br /&gt;
&lt;br /&gt;
* Lars Sonchocky-Helldorf (lars dot sonchocky dash helldorf at hamburg dot de)&lt;br /&gt;
* is somebody else interested in lending me a hand?&lt;br /&gt;
&lt;br /&gt;
== Who will attend FOSDEM ==&lt;br /&gt;
&lt;br /&gt;
One of the main reasons people attend the event is that you can meet, and talk directly to, other developers, whom you would otherwise meet only virtually (on mailing lists, emails, newsgroups, IRC etc.). We expect many lead developers and contributors to be present, so if you have never met them, you shouldn't miss this occasion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following is a list of people of GNUstep fame who have confirmed (or denied) that they will be able to join us at the GNUstep meeting at FOSDEM 2012:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Friday&lt;br /&gt;
3. Feb&lt;br /&gt;
! Saturday&lt;br /&gt;
4. Feb&lt;br /&gt;
! Sunday&lt;br /&gt;
5. Feb&lt;br /&gt;
! Monday&lt;br /&gt;
6. Feb&lt;br /&gt;
! Special comments / topics&lt;br /&gt;
! Hotel&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Lars S.-Helldorf ||| Yes || Yes || Yes || No || event organizer || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Nikolaus Schaller || No || Yes || Yes || No  || QuantumSTEP + Openmoko / GTA04.org || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Quentin Mathé  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Niels Grewe  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| David Chisnall  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Reitenbach || Yes || Yes || Yes || No || OpenBSD packages || Hotel The Moon&lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Roard  || || || || ?  || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Nicola Pero  || || || || ?  || GNUstep || &lt;br /&gt;
|-&lt;br /&gt;
| Fred Kiefer  || || || || ?  || GNUstep (GUI, Cairo) || &lt;br /&gt;
|-&lt;br /&gt;
| Riccardo Mottola  || || || || ?  || GNUstep, GAP || &lt;br /&gt;
|-&lt;br /&gt;
| Gerold Rupprecht || || || || ?  || GNUstep || &lt;br /&gt;
|-&lt;br /&gt;
| N.N. ||  t.b.d. || t.b.d. || t.b.d. || t.b.d. || t.b.d. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dev-Room Presentations and Events ==&lt;br /&gt;
&lt;br /&gt;
The room at out disposal will be '''AW1.126''' (capacity is 72 seats (this is more than twice of what we had the years ago); in the building &amp;quot;AW&amp;quot;),&lt;br /&gt;
-- on '''Saturday 2011-02-04''' from (to be confirmed) '''11:00''' to '''19:00'''&lt;br /&gt;
&lt;br /&gt;
=== Call for participation ===&lt;br /&gt;
&lt;br /&gt;
We are looking for people who want to give a talk, moderate a discussion, hold a hand ons (practice) / hacking session or organize a code sprint. Please send your proposals to [mailto:discuss-gnustep@gnu.org GNUstep discussion list], the organizers mentioned [[FOSDEM_2011#Organizers|above]] or - if you've got a wiki account - enter them right [http://wiki.gnustep.org/index.php?title=FOSDEM_2011&amp;amp;action=edit&amp;amp;section=6 here]. At first a title, a short summary, proposed duration and a preffered time slot would do, so we can start scheduling as soon as possible.&lt;br /&gt;
&lt;br /&gt;
'''deadline for filing is t.b.d., deadline for the papers is t.b.d.'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The FOSDEM organizers strongly recommend a '''granularity of 15 minute blocks'''. So if a talk is just 15 (lightning talk), 30 or 45 minutes long - fine! But we should have 15 minutes breaks between the talks so that the visitors have enough time to find a seat and the presenters have enough time to get ready.&lt;br /&gt;
&lt;br /&gt;
=== List of submitted talk/discussion/session proposals ===&lt;br /&gt;
&lt;br /&gt;
Please submit through *[mailto:discuss-gnustep@gnu.org GNUstep discussion list]* until *2011-12-31*&lt;br /&gt;
&lt;br /&gt;
=== Wishlist for talks/discussions/sessions ===&lt;br /&gt;
&lt;br /&gt;
Enter talks/discussions/sessions here you would be interested in.&lt;br /&gt;
&lt;br /&gt;
* GNUstep Progresses and Roadmap&lt;br /&gt;
* CoreBase and CoreGraphics/Opal in GNUstep&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!width=&amp;quot;65pt&amp;quot;| Time Slot !! width=&amp;quot;130pt&amp;quot;| Author !! width=&amp;quot;360pt&amp;quot;| Title / Abstract !! width=&amp;quot;130pt&amp;quot;| Kind !! width=&amp;quot;40pt&amp;quot; | Slides&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#ddd;&amp;quot; | '''Saturday, Feb 04, 2011'''&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 - 11:30 || GNUstep Developers || '''GNUstep Developer's Meeting'''&lt;br /&gt;
&lt;br /&gt;
Meet the GNUstep developers face to face, discuss current afairs of GNUstep, share news about the latest development and plans on GNUstep, improve collaboration between the several GNUstep related projects&lt;br /&gt;
&lt;br /&gt;
|| meeting, discussion || -&lt;br /&gt;
|-&lt;br /&gt;
| xx:xx - xx:xx || t.b.d. who is holding the event || '''t.b.d. The Title of the Event'''&lt;br /&gt;
&lt;br /&gt;
t.b.d. some longer description here&lt;br /&gt;
&lt;br /&gt;
|| t.b.d. what is it (talk, discussion, lecture, demo ...) || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| contingency plan || GNUstep Developers || '''Frameworks lightning talks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Suggested Hotels ==&lt;br /&gt;
&lt;br /&gt;
last year Sebastian Reitenbach and Nikolaus Schaller have booked here. Ask them on the mailing list on their Experience:&lt;br /&gt;
&lt;br /&gt;
=== Louise Hotel ===&lt;br /&gt;
* 40, rue Veydt&lt;br /&gt;
* 1050 Bruxelles&lt;br /&gt;
* http://www.louisehotel.com/&lt;br /&gt;
* Sebastian Reitenbach says:&lt;br /&gt;
** book via: http://www.hotelreservierungen.de , which is cheaper than the offer on the hotel site. The reservation includes breakfast.&lt;br /&gt;
** free WiFi is available&lt;br /&gt;
** it costs only about half the price of the Argus hotel from last year. &lt;br /&gt;
** Its near avenue louise, only a foot walk away from the university campus.&lt;br /&gt;
&lt;br /&gt;
NOTE Dec 2011: appears to have changed owner and is no longer listed in online booking portals&lt;br /&gt;
&lt;br /&gt;
=== Argus Hotel Brussels (Belguim) (good experiences from past years) ===&lt;br /&gt;
*6, Rue Capitaine Crespel &lt;br /&gt;
*B-1050 Bruxelles, Belgique&lt;br /&gt;
*Tel +32 2 514 07 70&lt;br /&gt;
*Fax +32 2  514 12 22&lt;br /&gt;
*reception@hotel-argus.be&lt;br /&gt;
*Rate: 65/night - but you have to ask for the 'GNUstep/FOSDEM' discount&lt;br /&gt;
*has free Internet ;-)&lt;br /&gt;
&lt;br /&gt;
Normal prices are here:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukrates.htm&lt;br /&gt;
&lt;br /&gt;
but there are discounts available:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukpromotions.htm&lt;br /&gt;
&lt;br /&gt;
and we'll ask for even better discounts for a group booking (we need to know who's will be there for that!)&lt;br /&gt;
&lt;br /&gt;
Some people booked that hotel in the last years: Nicolas, Marcus, Helge ,Lars.&lt;br /&gt;
&lt;br /&gt;
=== Sun Hotel in Brussels (Belguim)  (not recommended) ===&lt;br /&gt;
*Rue du Berger, 38 &lt;br /&gt;
*1050 Brussels (near Porte de Namur)&lt;br /&gt;
*Tel : +32(0)2 511 21 19&lt;br /&gt;
*Fax : +32(0)2 512 32 71&lt;br /&gt;
*sunhotel@skynet.be&lt;br /&gt;
*www.hotels-belgium.com/brussel-al/sunhotel.htm&lt;br /&gt;
&lt;br /&gt;
*50 EUR/Single room with breakfast&lt;br /&gt;
*22 rooms total&lt;br /&gt;
*3km distance to University&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
has internet access, will make breakfast room available for developers after 11:00 am. Two electrical plugs for breakfast room, so need extension cord with  additional plugs. Ask for first or second floor rooms close to reception for good wifi connections.&lt;br /&gt;
&lt;br /&gt;
=== Hotel Sabina in Brussels (Belgium)===&lt;br /&gt;
*Rue du Nord 78&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel: (32)2 218 26 37&lt;br /&gt;
*Fax: (32)2 219 32 39&lt;br /&gt;
(very good rating by visitors)&lt;br /&gt;
63 EUR/Single with breakfast&lt;br /&gt;
8 single only + 16 double rooms&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
=== Hotel Mozart in Bruxelles (Belgium)===&lt;br /&gt;
*Rue Marché aux Fromages 23&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel +32 2 502 66 61&lt;br /&gt;
*Fax +32 2 502 77 58&lt;br /&gt;
*Email Hotel.mozart@skynet.be&lt;br /&gt;
http://www.hotels-belgium.com/brussel-center/mozart.htm&lt;br /&gt;
&lt;br /&gt;
70 EUR/Single room NO breakfast&lt;br /&gt;
WLAN&lt;br /&gt;
&lt;br /&gt;
51 rooms total&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are open to other suggestions. Please take into account distance to the University and access to public transportation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A quick introduction to Brussels:&lt;br /&gt;
http://wikitravel.org/en/Brussel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:FOSDEM]]&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 a mail with your user name to ''&amp;lt;tt&amp;gt;webmasters [AT] gnustep.org&amp;lt;/tt&amp;gt;'' to request write-access. We are sorry for the inconvenience, but this procedure has become necessary to prevent SPAM'ing of this site.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6230</id>
		<title>FOSDEM 2012</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=FOSDEM_2012&amp;diff=6230"/>
		<updated>2011-12-30T08:49:52Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: /* Who will attend FOSDEM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FOSDEM 2012 Announcement ==&lt;br /&gt;
&lt;br /&gt;
[http://fosdem.org/2012/ FOSDEM 2012] will take place at at the '''Université Libre de Bruxelles''', in '''Brussels''' on '''Saturday 4 and Sunday 5 February 2012'''.&lt;br /&gt;
&lt;br /&gt;
This page is for organizing GNUstep's participation in the event. This includes the organization of a developer meeting&lt;br /&gt;
the Friday before FOSDEM.&lt;br /&gt;
&lt;br /&gt;
== Organizer(s) ==&lt;br /&gt;
&lt;br /&gt;
* Lars Sonchocky-Helldorf (lars dot sonchocky dash helldorf at hamburg dot de)&lt;br /&gt;
* is somebody else interested in lending me a hand?&lt;br /&gt;
&lt;br /&gt;
== Who will attend FOSDEM ==&lt;br /&gt;
&lt;br /&gt;
One of the main reasons people attend the event is that you can meet, and talk directly to, other developers, whom you would otherwise meet only virtually (on mailing lists, emails, newsgroups, IRC etc.). We expect many lead developers and contributors to be present, so if you have never met them, you shouldn't miss this occasion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following is a list of people of GNUstep fame who have confirmed (or denied) that they will be able to join us at the GNUstep meeting at FOSDEM 2012:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Friday&lt;br /&gt;
3. Feb&lt;br /&gt;
! Saturday&lt;br /&gt;
4. Feb&lt;br /&gt;
! Sunday&lt;br /&gt;
5. Feb&lt;br /&gt;
! Monday&lt;br /&gt;
6. Feb&lt;br /&gt;
! Special comments / topics&lt;br /&gt;
! Hotel&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Lars S.-Helldorf ||| Yes || Yes || Yes || No || event organizer || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Nikolaus Schaller || No || Yes || Yes || No  || QuantumSTEP + Openmoko / GTA04.org || Argus&lt;br /&gt;
|-&lt;br /&gt;
| Quentin Mathé  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Niels Grewe  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| David Chisnall  || || || ||   || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Reitenbach || Yes || Yes || Yes || No || OpenBSD packages || &lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Roard  || || || || ?  || Étoilé || &lt;br /&gt;
|-&lt;br /&gt;
| Nicola Pero  || || || || ?  || GNUstep || &lt;br /&gt;
|-&lt;br /&gt;
| Fred Kiefer  || || || || ?  || GNUstep (GUI, Cairo) || &lt;br /&gt;
|-&lt;br /&gt;
| Riccardo Mottola  || || || || ?  || GNUstep, GAP || &lt;br /&gt;
|-&lt;br /&gt;
| Gerold Rupprecht || || || || ?  || GNUstep || &lt;br /&gt;
|-&lt;br /&gt;
| N.N. ||  t.b.d. || t.b.d. || t.b.d. || t.b.d. || t.b.d. ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dev-Room Presentations and Events ==&lt;br /&gt;
&lt;br /&gt;
The room at out disposal will be '''AW1.126''' (capacity is 72 seats (this is more than twice of what we had the years ago); in the building &amp;quot;AW&amp;quot;),&lt;br /&gt;
-- on '''Saturday 2011-02-04''' from (to be confirmed) '''11:00''' to '''19:00'''&lt;br /&gt;
&lt;br /&gt;
=== Call for participation ===&lt;br /&gt;
&lt;br /&gt;
We are looking for people who want to give a talk, moderate a discussion, hold a hand ons (practice) / hacking session or organize a code sprint. Please send your proposals to [mailto:discuss-gnustep@gnu.org GNUstep discussion list], the organizers mentioned [[FOSDEM_2011#Organizers|above]] or - if you've got a wiki account - enter them right [http://wiki.gnustep.org/index.php?title=FOSDEM_2011&amp;amp;action=edit&amp;amp;section=6 here]. At first a title, a short summary, proposed duration and a preffered time slot would do, so we can start scheduling as soon as possible.&lt;br /&gt;
&lt;br /&gt;
'''deadline for filing is t.b.d., deadline for the papers is t.b.d.'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The FOSDEM organizers strongly recommend a '''granularity of 15 minute blocks'''. So if a talk is just 15 (lightning talk), 30 or 45 minutes long - fine! But we should have 15 minutes breaks between the talks so that the visitors have enough time to find a seat and the presenters have enough time to get ready.&lt;br /&gt;
&lt;br /&gt;
=== List of submitted talk/discussion/session proposals ===&lt;br /&gt;
&lt;br /&gt;
Please submit through *[mailto:discuss-gnustep@gnu.org GNUstep discussion list]* until *2011-12-31*&lt;br /&gt;
&lt;br /&gt;
=== Wishlist for talks/discussions/sessions ===&lt;br /&gt;
&lt;br /&gt;
Enter talks/discussions/sessions here you would be interested in.&lt;br /&gt;
&lt;br /&gt;
* GNUstep Progresses and Roadmap&lt;br /&gt;
* CoreBase and CoreGraphics/Opal in GNUstep&lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!width=&amp;quot;65pt&amp;quot;| Time Slot !! width=&amp;quot;130pt&amp;quot;| Author !! width=&amp;quot;360pt&amp;quot;| Title / Abstract !! width=&amp;quot;130pt&amp;quot;| Kind !! width=&amp;quot;40pt&amp;quot; | Slides&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#ddd;&amp;quot; | '''Saturday, Feb 04, 2011'''&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 - 11:30 || GNUstep Developers || '''GNUstep Developer's Meeting'''&lt;br /&gt;
&lt;br /&gt;
Meet the GNUstep developers face to face, discuss current afairs of GNUstep, share news about the latest development and plans on GNUstep, improve collaboration between the several GNUstep related projects&lt;br /&gt;
&lt;br /&gt;
|| meeting, discussion || -&lt;br /&gt;
|-&lt;br /&gt;
| xx:xx - xx:xx || t.b.d. who is holding the event || '''t.b.d. The Title of the Event'''&lt;br /&gt;
&lt;br /&gt;
t.b.d. some longer description here&lt;br /&gt;
&lt;br /&gt;
|| t.b.d. what is it (talk, discussion, lecture, demo ...) || t.b.d. link to slides&lt;br /&gt;
|-&lt;br /&gt;
| contingency plan || GNUstep Developers || '''Frameworks lightning talks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|| talk || t.b.d.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Suggested Hotels ==&lt;br /&gt;
&lt;br /&gt;
last year Sebastian Reitenbach and Nikolaus Schaller have booked here. Ask them on the mailing list on their Experience:&lt;br /&gt;
&lt;br /&gt;
=== Louise Hotel ===&lt;br /&gt;
* 40, rue Veydt&lt;br /&gt;
* 1050 Bruxelles&lt;br /&gt;
* http://www.louisehotel.com/&lt;br /&gt;
* Sebastian Reitenbach says:&lt;br /&gt;
** book via: http://www.hotelreservierungen.de , which is cheaper than the offer on the hotel site. The reservation includes breakfast.&lt;br /&gt;
** free WiFi is available&lt;br /&gt;
** it costs only about half the price of the Argus hotel from last year. &lt;br /&gt;
** Its near avenue louise, only a foot walk away from the university campus.&lt;br /&gt;
&lt;br /&gt;
NOTE Dec 2011: appears to have changed owner and is no longer listed in online booking portals&lt;br /&gt;
&lt;br /&gt;
=== Argus Hotel Brussels (Belguim) (good experiences from past years) ===&lt;br /&gt;
*6, Rue Capitaine Crespel &lt;br /&gt;
*B-1050 Bruxelles, Belgique&lt;br /&gt;
*Tel +32 2 514 07 70&lt;br /&gt;
*Fax +32 2  514 12 22&lt;br /&gt;
*reception@hotel-argus.be&lt;br /&gt;
*Rate: 65/night - but you have to ask for the 'GNUstep/FOSDEM' discount&lt;br /&gt;
*has free Internet ;-)&lt;br /&gt;
&lt;br /&gt;
Normal prices are here:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukrates.htm&lt;br /&gt;
&lt;br /&gt;
but there are discounts available:&lt;br /&gt;
&lt;br /&gt;
http://www.hotel-argus.be/ukpromotions.htm&lt;br /&gt;
&lt;br /&gt;
and we'll ask for even better discounts for a group booking (we need to know who's will be there for that!)&lt;br /&gt;
&lt;br /&gt;
Some people booked that hotel in the last years: Nicolas, Marcus, Helge ,Lars.&lt;br /&gt;
&lt;br /&gt;
=== Sun Hotel in Brussels (Belguim)  (not recommended) ===&lt;br /&gt;
*Rue du Berger, 38 &lt;br /&gt;
*1050 Brussels (near Porte de Namur)&lt;br /&gt;
*Tel : +32(0)2 511 21 19&lt;br /&gt;
*Fax : +32(0)2 512 32 71&lt;br /&gt;
*sunhotel@skynet.be&lt;br /&gt;
*www.hotels-belgium.com/brussel-al/sunhotel.htm&lt;br /&gt;
&lt;br /&gt;
*50 EUR/Single room with breakfast&lt;br /&gt;
*22 rooms total&lt;br /&gt;
*3km distance to University&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
has internet access, will make breakfast room available for developers after 11:00 am. Two electrical plugs for breakfast room, so need extension cord with  additional plugs. Ask for first or second floor rooms close to reception for good wifi connections.&lt;br /&gt;
&lt;br /&gt;
=== Hotel Sabina in Brussels (Belgium)===&lt;br /&gt;
*Rue du Nord 78&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel: (32)2 218 26 37&lt;br /&gt;
*Fax: (32)2 219 32 39&lt;br /&gt;
(very good rating by visitors)&lt;br /&gt;
63 EUR/Single with breakfast&lt;br /&gt;
8 single only + 16 double rooms&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
=== Hotel Mozart in Bruxelles (Belgium)===&lt;br /&gt;
*Rue Marché aux Fromages 23&lt;br /&gt;
*B-1000 Brussels&lt;br /&gt;
*Tel +32 2 502 66 61&lt;br /&gt;
*Fax +32 2 502 77 58&lt;br /&gt;
*Email Hotel.mozart@skynet.be&lt;br /&gt;
http://www.hotels-belgium.com/brussel-center/mozart.htm&lt;br /&gt;
&lt;br /&gt;
70 EUR/Single room NO breakfast&lt;br /&gt;
WLAN&lt;br /&gt;
&lt;br /&gt;
51 rooms total&lt;br /&gt;
4,2km distance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are open to other suggestions. Please take into account distance to the University and access to public transportation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
A quick introduction to Brussels:&lt;br /&gt;
http://wikitravel.org/en/Brussel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:FOSDEM]]&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 a mail with your user name to ''&amp;lt;tt&amp;gt;webmasters [AT] gnustep.org&amp;lt;/tt&amp;gt;'' to request write-access. We are sorry for the inconvenience, but this procedure has become necessary to prevent SPAM'ing of this site.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=WebServer&amp;diff=6229</id>
		<title>WebServer</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=WebServer&amp;diff=6229"/>
		<updated>2011-12-21T17:43:44Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = Framework for a GNUstep program to act as an HTTP or HTTPS server. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://downloads.planetmirror.com/pub/gnustep/gnustep/libs/WebServer-1.4.6.tar.gz 1.4.6] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Dec 14, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = This provides a class to do all the heavy lifting of acting as a web server handling the HTTP and HTTPS protocols.  You just need to create an instance of it in your program, configure it with a port it is to listen on, and set another object in your program to act as a delegate.  The delegate then handles the pre-parsed incoming requests in a similar way to a CGI script being run by a more conventional web server.  The library also handles logging and provides many configuration options and helper methods of course. |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Robust single threaded default operation, for ease of debugging your programs&lt;br /&gt;
* Minimal configuration required&lt;br /&gt;
* Parses parameter strings in requests&lt;br /&gt;
* Parses URL encoded form data&lt;br /&gt;
* Parses multi-part form data&lt;br /&gt;
* Supports SSL&lt;br /&gt;
* Supports basic authentication&lt;br /&gt;
* Supports substitution of values into html templates&lt;br /&gt;
* Provides logging |&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Networking Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Performance&amp;diff=6227</id>
		<title>Performance</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Performance&amp;diff=6227"/>
		<updated>2011-12-12T11:25:16Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = Help improve the performance of GNUstep applications. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://downloads.planetmirror.com/pub/gnustep/gnustep/libs/Performance-0.3.2.tar.gz 0.3.2] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Oct 25, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = A collection of classes to help improve/tune performance of your software |&lt;br /&gt;
&lt;br /&gt;
features =&lt;br /&gt;
* The GSThroughput class allows you to track the total counts of transactions/events as well as the rate (per second) and the minimum, maximum and average durations of operations.  You can look at this information to see how your program ha been performing over a particular time period, and to isolate frequently used operations which may need optimizing.&lt;br /&gt;
* The GSCache class provides effective caching for all sorts of data.  You can configure the size (memory footprint) and/or maximum number of items in a cache, and you can specify the lifetime of objects in the cache.  Cache removal is done on a least-recently-used flushed first basis, but hooks are provided to override that.  The status of one or all caches can be easily reported, showing the size and the number of cache hits/misses.&lt;br /&gt;
* Provides a method to obtain a skip-list based NSMutableArray subclass. This is intended for use where you need a large array which you are going to insert/delete items from.  The insertion/deletion operation in a skip-list array is similar in performance to a linked list (ie much faster than a conventional array), but the time to access an item at an arbitrary index, while not as slow as a conventional array, is enormously faster than a simple linked list implementation.  | &lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Development Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Performance&amp;diff=6226</id>
		<title>Performance</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Performance&amp;diff=6226"/>
		<updated>2011-12-12T11:24:35Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = Help improve the performance of GNUstep applications. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://downloads.planetmirror.com/pub/gnustep/gnustep/libs/Performance-0.3.2.tar.gz 0.3.2] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Oct 25, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = A collection of classes to help improve/tune performance of your software |&lt;br /&gt;
&lt;br /&gt;
features =&lt;br /&gt;
* The GSThroughput class allows you to track the total counts of transactions/events as well as the rate (per second) and the minimum, maximum and average durations of operations.  You can look at this information to see how your program ha been performing over a particular time period, and to isolate frequently used operations which may need optimising.&lt;br /&gt;
* The GSCache class provides effective caching for all sorts of data.  You can configure the size (memory footprint) and/or maximum number of items in a cache, and you can specify the lifetime of objects in the cache.  Cache removal is done on a least-recently-used flushed first basis, but hooks are provided to override that.  The status of one or all caches can be easily reported, showing the size and the number of cache hits/misses.&lt;br /&gt;
* Provides a method to obtain a skip-list based NSMutableArray subclass. This is intended for use where you need a large arraay which you are going to insert/delete items from.  The insertion/deletion operation in a skip-list array is similar in performance to a linked list (ie much faster than a conventional array), but the time to access an item at an arbitrary index, while not as slow as a conventional array, is enormously faster than a simple linked list implementaqtion.  | &lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Development Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=MathArray&amp;diff=6218</id>
		<title>MathArray</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=MathArray&amp;diff=6218"/>
		<updated>2011-11-16T12:11:43Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = Class library for mathematical manipulation of matrices. |&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/contrib/MathArray-1.2.tar.gz 1.2] |&lt;br /&gt;
releasedate = Oct 09, 2010 |&lt;br /&gt;
license = LGPL 2 |&lt;br /&gt;
overview = MathArray is a general library of classes for performing mathematical&lt;br /&gt;
operations on arrays (vectors, matrices, etc) of values. It can&lt;br /&gt;
operate on any standard 'C' number type plus numbers of complex&lt;br /&gt;
type. [...]  MathArray knows implicitly what types of operations can&lt;br /&gt;
be performed on what types of numbers and will automatically cast&lt;br /&gt;
itself to the correct number type representation to handle the&lt;br /&gt;
specific operation. Standard operations include addition, scalar and&lt;br /&gt;
matrix multiplication and logical operations. Mathematical operations&lt;br /&gt;
in the standard C math library are also supported, as well as&lt;br /&gt;
user-defined functions.&lt;br /&gt;
&amp;lt;font color=&amp;quot;#808080&amp;quot;&amp;gt; &amp;amp;ndash; From the README file.&amp;lt;/font&amp;gt; |&lt;br /&gt;
features = &amp;lt;...&amp;gt; |&lt;br /&gt;
maintainer = Adam Fedor |&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* [ftp://ftp.gnustep.org/pub/gnustep/contrib/MathArray-1.0.README README]|&lt;br /&gt;
category = [[Category:Development Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=DataBasin.app&amp;diff=6208</id>
		<title>DataBasin.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=DataBasin.app&amp;diff=6208"/>
		<updated>2011-11-02T17:59:37Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = DataBasin is a data access tool and for SalesForce.com based on the SOAP API interfaces.|&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/DataBasin-0.4.tar.gz 0.4] |&lt;br /&gt;
releasedate = Nov 02, 2011 |&lt;br /&gt;
license = DataBasin: GPL / Soap Core: LGPL v3+ |&lt;br /&gt;
&lt;br /&gt;
maintainer = Riccardo Mottola |&lt;br /&gt;
&lt;br /&gt;
overview =&lt;br /&gt;
&lt;br /&gt;
DataBasin is a tool to access and work with SalesForce.com. It allows to perform queries remotely, export and import data.&lt;br /&gt;
[[Image:databasin_01_debian.png|thumb|v0.1 session on Debian]]&lt;br /&gt;
To connect to SFDC, DataBasin uses the WebServices exposed by the SFDC API and exposes them as methods of the DBSoap class. Currently not all methods are implemented yet. To send and receive the SOAP messages, DB uses the websevices (GSWS) available from GNUstep libraries and which is a mandatory requisite.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Reusable core library&lt;br /&gt;
* Session and User inspectors&lt;br /&gt;
* connect via http or https&lt;br /&gt;
* Data Operations&lt;br /&gt;
** Insert&lt;br /&gt;
** Query and QueryAll&lt;br /&gt;
** Quick Delete&lt;br /&gt;
** execute select on records identified by Id or Unique identifier&lt;br /&gt;
* Describe Object (and export to CSV)&lt;br /&gt;
|&lt;br /&gt;
relatedlinks = *[http://www.nongnu.org/gap/databasin/index.html DataBasin.app Website]&lt;br /&gt;
*[http://www.nongnu.org/gap/index.html GNUstep Application Project]|&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Database Applications]][[Category:GAP]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=SQLClient&amp;diff=6204</id>
		<title>SQLClient</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=SQLClient&amp;diff=6204"/>
		<updated>2011-10-09T08:48:37Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
&lt;br /&gt;
shortdescription = Lightweight database abstraction layer. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://downloads.planetmirror.com/pub/gnustep/gnustep/libs/SQLClient-1.5.3.tar.gz 1.5.3] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Sep 30, 2009 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = The SQLClient library is designed to provide a simple interface to SQL&lt;br /&gt;
databases for GNUstep applications. It does not attempt the sort of&lt;br /&gt;
abstraction provided by the much more sophisticated GDL2 library&lt;br /&gt;
but rather allows applications to directly execute SQL queries and statements.&lt;br /&gt;
&lt;br /&gt;
SQLClient provides for the Objective-C programmer much the same thing that&lt;br /&gt;
JDBC provides for the Java programmer (though SQLClient is a bit faster,&lt;br /&gt;
easier to use, and easier to add new database backends for than JDBC). |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Simple API for executing queries and statements... a variable length sequence of comma separated strings and other objects (NSNumber, NSDate, NSData) are concatenated into a single SQL statement and executed.&lt;br /&gt;
* Simple API for combining multiple SQL statements into a single transaction which can be used to minimise client-server interactions to get the best possible performance from your database.&lt;br /&gt;
* Supports multiple simultaneous named connections to a database server in a thread-safe manner.&lt;br /&gt;
* Supports multiple simultaneous connections to different database servers with backend driver bundles loaded for different database engines. Clear, simple subclassing of the abstract base class to enable easy implementation of new backend bundles.&lt;br /&gt;
* Configuration for all connections held in one place and referenced by connection name for ease of configuration control. Changes via NSUserDefaults can even allow reconfiguration of client instances within a running application.&lt;br /&gt;
* Thread safe operation... The base class supports locking such that a single instance can be shared between multiple threads. &lt;br /&gt;
* Supports batching of statements into a single transaction to minimise client-server interaction overheads.&lt;br /&gt;
* Has backends for PostgreSQL, MySQL, SQLite and JDBC (the latter allowing you to use any database for which JDBC drivers exist , but suffering from the performance overhead of going through Java). |&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Database Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GWorkspace.app&amp;diff=6198</id>
		<title>GWorkspace.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GWorkspace.app&amp;diff=6198"/>
		<updated>2011-09-30T17:07:45Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Application|&lt;br /&gt;
shortdescription = GWorkspace is the official GNUstep workspace manager. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/usr-apps/gworkspace-0.9.0.tar.gz 0.9.0] |&lt;br /&gt;
&lt;br /&gt;
releasedate = September 30, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = GPL 2.0 or later|&lt;br /&gt;
&lt;br /&gt;
overview = GWorkspace is a clone of NeXT's workspace manager and already ready for daily usage. GWorkspace is one of the most useful and usable workspace managers available on any platform, owing to its well-designed interface and the natural, consistent design that it inherits from the GNUstep framework. |&lt;br /&gt;
&lt;br /&gt;
features = Currently GWorkspace is a very stable application and can be used as your file manager for daily usage.&lt;br /&gt;
&lt;br /&gt;
==== Additional Inspectors ====&lt;br /&gt;
&lt;br /&gt;
===== IMImage =====&lt;br /&gt;
&lt;br /&gt;
IMImage image Inspector for GWorkspace.app to preview many types of &lt;br /&gt;
graphics formats not supported by NSImage utilizing Image Magick. The &lt;br /&gt;
following graphics formats are currently supported: art, bmp, cgm, &lt;br /&gt;
eps, fig, fpx, hpgl, ico, miff, mng, mvg, pbm, pcd, pcl, pcx, pgm, &lt;br /&gt;
pict, pix, pnm, ppm, psd, rla, rle, svg, tga, wmf, wpg, xbm, xcf, xpm, &lt;br /&gt;
and xwd. It can also be used to preview Type 1 and TrueType fonts.&lt;br /&gt;
* [http://www.gnustep.it/enrico/gworkspace/inspectors/IMImageViewer.tar.gz Download IMImage]&lt;br /&gt;
&lt;br /&gt;
===== SGContentViewer =====&lt;br /&gt;
&lt;br /&gt;
A contents Inspector that can play Ogg Vorbis, mp3, speex, flac, shorten, voc, midi, and mod files.&lt;br /&gt;
* [http://www.gnustep.it/enrico/gworkspace/inspectors/SGContentViewer.tar.gz Download SGContentViewer]&lt;br /&gt;
&lt;br /&gt;
===== RpmViewer =====&lt;br /&gt;
&lt;br /&gt;
A contents Inspector to see the contents of rpm packages.&lt;br /&gt;
* [http://www.gnustep.it/enrico/gworkspace/inspectors/RpmViewer.tar.gz Download RpmViewer]&lt;br /&gt;
&lt;br /&gt;
===== VCFViewer =====&lt;br /&gt;
&lt;br /&gt;
A contents Inspector for VCF files.&lt;br /&gt;
* [http://www.gnustep.it/enrico/gworkspace/inspectors/VCFViewer.tar.gz Download VCFViewer] |&lt;br /&gt;
&lt;br /&gt;
maintainer =&lt;br /&gt;
* [mailto:rmottola@users.sf.net Riccardo Mottola] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks =&lt;br /&gt;
* [http://www.gnustep.org/experience/GWorkspace.html GWorkspace's Official Web Site]&lt;br /&gt;
* [http://gnustep.made-it.com/GWorkspace/GWorkspace.html GWorkspace User Guide] |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Workspace Applications]] [[Category:Desktop Environments]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=SQLClient&amp;diff=6193</id>
		<title>SQLClient</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=SQLClient&amp;diff=6193"/>
		<updated>2011-09-16T12:45:25Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
&lt;br /&gt;
shortdescription = Lightweight database abstraction layer. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://downloads.planetmirror.com/pub/gnustep/gnustep/libs/SQLClient-1.5.2.tar.gz 1.5.2] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Sep 16, 2006 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = The SQLClient library is designed to provide a simple interface to SQL&lt;br /&gt;
databases for GNUstep applications. It does not attempt the sort of&lt;br /&gt;
abstraction provided by the much more sophisticated GDL2 library&lt;br /&gt;
but rather allows applications to directly execute SQL queries and statements.&lt;br /&gt;
&lt;br /&gt;
SQLClient provides for the Objective-C programmer much the same thing that&lt;br /&gt;
JDBC provides for the Java programmer (though SQLClient is a bit faster,&lt;br /&gt;
easier to use, and easier to add new database backends for than JDBC). |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Simple API for executing queries and statements... a variable length sequence of comma separated strings and other objects (NSNumber, NSDate, NSData) are concatenated into a single SQL statement and executed.&lt;br /&gt;
* Simple API for combining multiple SQL statements into a single transaction which can be used to minimise client-server interactions to get the best possible performance from your database.&lt;br /&gt;
* Supports multiple simultaneous named connections to a database server in a thread-safe manner.&lt;br /&gt;
* Supports multiple simultaneous connections to different database servers with backend driver bundles loaded for different database engines. Clear, simple subclassing of the abstract base class to enable easy implementation of new backend bundles.&lt;br /&gt;
* Configuration for all connections held in one place and referenced by connection name for ease of configuration control. Changes via NSUserDefaults can even allow reconfiguration of client instances within a running application.&lt;br /&gt;
* Thread safe operation... The base class supports locking such that a single instance can be shared between multiple threads. &lt;br /&gt;
* Supports batching of statements into a single transaction to minimise client-server interaction overheads.&lt;br /&gt;
* Has backends for PostgreSQL, MySQL, SQLite and JDBC (the latter allowing you to use any database for which JDBC drivers exist , but suffering from the performance overhead of going through Java). |&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Database Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=WebServer&amp;diff=6192</id>
		<title>WebServer</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=WebServer&amp;diff=6192"/>
		<updated>2011-09-16T12:44:28Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = Framework for a GNUstep program to act as an HTTP or HTTPS server. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://downloads.planetmirror.com/pub/gnustep/gnustep/libs/WebServer-1.4.4.tar.gz 1.4.4] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Sep 09, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = This provides a class to do all the heavy lifting of acting as a web server handling the HTTP and HTTPS protocols.  You just need to create an instance of it in your program, configure it with a port it is to listen on, and set another object in your program to act as a delegate.  The delegate then handles the pre-parsed incoming requests in a similar way to a CGI script being run by a more conventional web server.  The library also handles logging and provides many configuration options and helper methods of course. |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Robust single threaded default operation, for ease of debugging your programs&lt;br /&gt;
* Minimal configuration required&lt;br /&gt;
* Parses parameter strings in requests&lt;br /&gt;
* Parses URL encoded form data&lt;br /&gt;
* Parses multi-part form data&lt;br /&gt;
* Supports SSL&lt;br /&gt;
* Supports basic authentication&lt;br /&gt;
* Supports substitution of values into html templates&lt;br /&gt;
* Provides logging |&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Networking Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=WebServer&amp;diff=6191</id>
		<title>WebServer</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=WebServer&amp;diff=6191"/>
		<updated>2011-08-23T06:31:15Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Framework|&lt;br /&gt;
shortdescription = Framework for a GNUstep program to act as an HTTP or HTTPS server. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://downloads.planetmirror.com/pub/gnustep/gnustep/libs/WebServer-1.4.3.tar.gz 1.4.3] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Aug 04, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = This provides a class to do all the heavy lifting of acting as a web server handling the HTTP and HTTPS protocols.  You just need to create an instance of it in your program, configure it with a port it is to listen on, and set another object in your program to act as a delegate.  The delegate then handles the pre-parsed incoming requests in a similar way to a CGI script being run by a more conventional web server.  The library also handles logging and provides many configuration options and helper methods of course. |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Robust single threaded default operation, for ease of debugging your programs&lt;br /&gt;
* Minimal configuration required&lt;br /&gt;
* Parses parameter strings in requests&lt;br /&gt;
* Parses URL encoded form data&lt;br /&gt;
* Parses multi-part form data&lt;br /&gt;
* Supports SSL&lt;br /&gt;
* Supports basic authentication&lt;br /&gt;
* Supports substitution of values into html templates&lt;br /&gt;
* Provides logging |&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Networking Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GPuzzle.app&amp;diff=6184</id>
		<title>GPuzzle.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GPuzzle.app&amp;diff=6184"/>
		<updated>2011-07-19T12:40:24Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = Simulates a jigsaw puzzle and illustrates the use of clipping paths. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://www.gnustep.it/marko/GPuzzle2/GPuzzle2.tgz 0.2] |&lt;br /&gt;
&lt;br /&gt;
releasedate = July 16, 2006 (?) |&lt;br /&gt;
&lt;br /&gt;
license = GPL2 |&lt;br /&gt;
&lt;br /&gt;
overview = &lt;br /&gt;
&lt;br /&gt;
'''NOTE: GPuzzle was renamed to Jigsaw, latest version can be found when looking for [[Jigsaw.app]]'''&lt;br /&gt;
&lt;br /&gt;
You need a medium-sized TIFF file to play this game.&lt;br /&gt;
Left-click and drag to move a piece or cluster.&lt;br /&gt;
Ctrl-left-click and drag to connect knobs to slots.&lt;br /&gt;
Right-click to disassemble a cluster.&lt;br /&gt;
Ctrl-right-click to extract a piece from a cluster. |&lt;br /&gt;
&lt;br /&gt;
features =  |&lt;br /&gt;
&lt;br /&gt;
maintainer = &lt;br /&gt;
* [mailto:markoriedelde@yahoo.de Marko Riedel] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = &lt;br /&gt;
* [http://www.gnustep.it/marko/GPuzzle2/ Official Page] |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Games Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Jigsaw.app&amp;diff=6183</id>
		<title>Jigsaw.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Jigsaw.app&amp;diff=6183"/>
		<updated>2011-07-19T12:36:38Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = Simulates a jigsaw puzzle and illustrates the use of clipping paths. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/Jigsaw-0.8.tar.gz 0.8] |&lt;br /&gt;
&lt;br /&gt;
releasedate = July 18, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = GPL2 |&lt;br /&gt;
&lt;br /&gt;
overview = You need a medium-sized TIFF file to play this game.&lt;br /&gt;
Left-click and drag to move a piece or cluster.&lt;br /&gt;
Ctrl-left-click and drag to connect knobs to slots.&lt;br /&gt;
Right-click to disassemble a cluster.&lt;br /&gt;
Ctrl-right-click to extract a piece from a cluster. |&lt;br /&gt;
&lt;br /&gt;
features =  |&lt;br /&gt;
&lt;br /&gt;
maintainer = &lt;br /&gt;
* GAP Team&lt;br /&gt;
* original author: [mailto:markoriedelde@yahoo.de Marko Riedel] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = &lt;br /&gt;
* [http://gap.nongnu.org/jigsaw/ Official Page] |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Games Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Sudoku.app&amp;diff=6177</id>
		<title>Sudoku.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Sudoku.app&amp;diff=6177"/>
		<updated>2011-07-16T11:33:34Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription= [[Image:Sudoku.png|frame|Sudoku on Gnome]] | Sudoku solver and generator. |&lt;br /&gt;
&lt;br /&gt;
currentversion=[http://savannah.nongnu.org/download/gap/Sudoku-0.7.tar.gz 0.7] |&lt;br /&gt;
&lt;br /&gt;
releasedate= July 15, 2011 |&lt;br /&gt;
&lt;br /&gt;
license=GPL2 |&lt;br /&gt;
&lt;br /&gt;
overview= Create any number of Sudokus and solve them. Store Sudokus for in-depth study.&lt;br /&gt;
Solvability guaranteed. Drag digits from the palette or click on the board&lt;br /&gt;
and wait for the desired digit to appear. Neither method will let you place&lt;br /&gt;
double digits.|&lt;br /&gt;
&lt;br /&gt;
features= Includes automatic markup.&lt;br /&gt;
You can input external sudokus for solution.|&lt;br /&gt;
&lt;br /&gt;
maintainer=&lt;br /&gt;
* GAP Team&lt;br /&gt;
* original author: [mailto:markoriedelde@yahoo.de Marko Riedel] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks=&lt;br /&gt;
* http://www.nongnu.org/gap/sudoku/index.html |&lt;br /&gt;
category=[[Category:Games_Applications]][[Category:GAP]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GMastermind.app&amp;diff=6176</id>
		<title>GMastermind.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GMastermind.app&amp;diff=6176"/>
		<updated>2011-07-16T11:28:25Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription = The well-known mastermind game. |&lt;br /&gt;
&lt;br /&gt;
currentversion = [http://savannah.nongnu.org/download/gap/GMastermind-0.6.tar.gz 0.6] |&lt;br /&gt;
&lt;br /&gt;
releasedate = July 15, 2011 |&lt;br /&gt;
&lt;br /&gt;
license = GPL2 |&lt;br /&gt;
&lt;br /&gt;
overview = Drag-and-drop colors from the palette or from the board itself. The object is to determine the hidden combination of four colors. The game may be played in two modes: with replacement, which means that colors may repeat, and without replacement, which means that colors are unique. The user selects a choice of four colors and &amp;quot;commits&amp;quot; them. The program replies with an evaluation -- a black peg for a color that is placed correctly, and a white peg for a color that is in the wrong position. The user may make a total of eight queries. |&lt;br /&gt;
&lt;br /&gt;
features =  Two panels, one containing guesses and one containing sources of the six colors.&lt;br /&gt;
[[Image:GMastermind.jpg]]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
maintainer =&lt;br /&gt;
* GAP team&lt;br /&gt;
* original author: [mailto:markoriedelde@yahoo.de Marko Riedel] |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = &lt;br /&gt;
* [http://gap.nongnu.org/gmastermind/ Official Page] |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Games Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=LapisPuzzle.app&amp;diff=6175</id>
		<title>LapisPuzzle.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=LapisPuzzle.app&amp;diff=6175"/>
		<updated>2011-07-16T11:24:43Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{Application|&lt;br /&gt;
shortdescription=LapisPuzzle is a [http://en.wikipedia.org/wiki/Tetris Tetris]-like game where each player is effected by the others game play. When one player clears blocks, the other gets more put on! Attractive graphics as well.|&lt;br /&gt;
&lt;br /&gt;
currentversion=[http://savannah.nongnu.org/download/gap/LapisPuzzle-1.2.tar.gz 1.2]|&lt;br /&gt;
&lt;br /&gt;
releasedate= July 15, 2011 |&lt;br /&gt;
&lt;br /&gt;
license=GPL 2.0|&lt;br /&gt;
&lt;br /&gt;
overview=|&lt;br /&gt;
&lt;br /&gt;
features=|&lt;br /&gt;
&lt;br /&gt;
maintainer=&lt;br /&gt;
* GAP Team&lt;br /&gt;
* originally written by [mailto:object@gmail.com Banlu Kemiyatorn]|&lt;br /&gt;
&lt;br /&gt;
relatedlinks=&lt;br /&gt;
* http://www.nongnu.org/gap/lapispuzzle/index.html|&lt;br /&gt;
&lt;br /&gt;
category=[[Category:Games_Applications]][[Category:GAP]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=GMines.app&amp;diff=6172</id>
		<title>GMines.app</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=GMines.app&amp;diff=6172"/>
		<updated>2011-07-11T08:13:53Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: new release on GAP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Application|&lt;br /&gt;
&lt;br /&gt;
shortdescription = The well-known minesweeper game. |&lt;br /&gt;
&lt;br /&gt;
currentversion = 0.2|&lt;br /&gt;
&lt;br /&gt;
releasedate = 2011-07-11 |&lt;br /&gt;
&lt;br /&gt;
license = GPLv2+ |&lt;br /&gt;
&lt;br /&gt;
overview = Minimal implementation of 8x8 minesweeper game. |&lt;br /&gt;
&lt;br /&gt;
features =  |&lt;br /&gt;
&lt;br /&gt;
original author = Marko Riedel |&lt;br /&gt;
&lt;br /&gt;
maintainer = GAP Team |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = http://gap.nongnu.org/gmines/ |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Games Applications]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=WebServices&amp;diff=6169</id>
		<title>WebServices</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=WebServices&amp;diff=6169"/>
		<updated>2011-06-26T11:06:37Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Framework|&lt;br /&gt;
shortdescription = Framework for a GNUstep program to interact with web services |&lt;br /&gt;
&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/libs/WebServices-0.5.3.tar.gz 0.5.3] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Jun 26, 2010 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = &lt;br /&gt;
&lt;br /&gt;
The WebServices library contains a collection of classes to be used for creating client and server 'web service' applications. It is also useful for general XML work as the API that is particularly simple and efficient.&lt;br /&gt;
 &lt;br /&gt;
The GWSService class is used to make RPCs as a client. This class makes use of GWSCoder classes to serialize the request before sending it to the remote system, and to deserialize the response received.&lt;br /&gt;
&lt;br /&gt;
Different GWSCoder sublasses handle different encoding mechanisms, and this library provides one for XMLRPC (because it's a nice, simple mechanism good for most normal applications), and one for SOAP (because, while it's a horrible, bloated, designed-by-comittee mechanism, it's also the most common one by far and the standard one for web services).&lt;br /&gt;
&lt;br /&gt;
The GWSCoder base class provides support for decoding an XML document to a tree of GWSElement objects, and encoding a tree of GWSElement objects to form an XML document.&lt;br /&gt;
&lt;br /&gt;
The GWSElement class represents an element in an XML document and provides a concise set of methods for locating and manipulating the elements within a tree representing the entire document.&lt;br /&gt;
&lt;br /&gt;
The remaining classes in the library provide support for WSDL, allowing a WSDL document to be parsed, and SOAP calls to be made to a service described in the WSDL, with binding information from the WSDL used to build the calls from a minimal set of parameters.&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Easy/simple ObjectiveC API for parsing/generating XML documents, XMLRPC and SOAP remote procedure call support, WSDL support,  GNUstep and OSX|&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Networking Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=WebServices&amp;diff=6168</id>
		<title>WebServices</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=WebServices&amp;diff=6168"/>
		<updated>2011-06-26T11:05:27Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Framework|&lt;br /&gt;
shortdescription = Framework for a GNUstep program to interact with web services |&lt;br /&gt;
&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/libs/WebServices-0.5.3.tar.gz 0.5.3] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Jun 26, 2010 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = &lt;br /&gt;
&lt;br /&gt;
The WebServices library contains a collection of classes to be used for creating client and server 'web service' applications. it is also useful for general XML work as the API that that is particularly simple and efficient.&lt;br /&gt;
 &lt;br /&gt;
The GWSService class is used to make RPCs as a client. This class makes use of GWSCoder classes to serialize the request before sending it to the remote system, and to deserialize the response received.&lt;br /&gt;
&lt;br /&gt;
Different GWSCoder sublasses handle different encoding mechanisms, and this library provides one for XMLRPC (because it's a nice, simple mechanism good for most normal applications), and one for SOAP (because, while it's a horrible, bloated, designed-by-comittee mechanism, it's also the most common one by far and the standard one for web services).&lt;br /&gt;
&lt;br /&gt;
The GWSCoder base class provides support for decoding an XML document to a tree of GWSElement objects, and encoding a tree of GWSElement objects to form an XML document.&lt;br /&gt;
&lt;br /&gt;
The GWSElement class represents an element in an XML document and provides a concise set of methods for locating and manipulating the elements within a tree representing the entire document.&lt;br /&gt;
&lt;br /&gt;
The remaining classes in the library provide support for WSDL, allowing a WSDL document to be parsed, and SOAP calls to be made to a service described in the WSDL, with binding information from the WSDL used to build the calls from a minimal set of parameters.&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Easy/simple ObjectiveC API for parsing/generating XML documents, XMLRPC and SOAP remote procedure call support, WSDL support,  GNUstep and OSX|&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Networking Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=WebServices&amp;diff=6167</id>
		<title>WebServices</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=WebServices&amp;diff=6167"/>
		<updated>2011-06-26T10:42:01Z</updated>

		<summary type="html">&lt;p&gt;Buzzdee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Framework|&lt;br /&gt;
shortdescription = Framework for a GNUstep program to interact with web services |&lt;br /&gt;
&lt;br /&gt;
currentversion = [ftp://ftp.gnustep.org/pub/gnustep/libs/WebServices-0.5.3.tar.gz 0.5.3] |&lt;br /&gt;
&lt;br /&gt;
releasedate = Jun 26, 2010 |&lt;br /&gt;
&lt;br /&gt;
license = LGPL |&lt;br /&gt;
&lt;br /&gt;
overview = &lt;br /&gt;
&lt;br /&gt;
The WebServer library contains a collection of classes to be used for creating client and server 'web service' applications. it is also useful for general XML work as the API that that is particularly simple and efficient.&lt;br /&gt;
 &lt;br /&gt;
The GWSService class is used to make RPCs as a client. This class makes use of GWSCoder classes to serialize the request before sending it to the remote system, and to deserialize the response received.&lt;br /&gt;
&lt;br /&gt;
Different GWSCoder sublasses handle different encoding mechanisms, and this library provides one for XMLRPC (because it's a nice, simple mechanism good for most normal applications), and one for SOAP (because, while it's a horrible, bloated, designed-by-comittee mechanism, it's also the most common one by far and the standard one for web services).&lt;br /&gt;
&lt;br /&gt;
The GWSCoder base class provides support for decoding an XML document to a tree of GWSElement objects, and encoding a tree of GWSElement objects to form an XML document.&lt;br /&gt;
&lt;br /&gt;
The GWSElement class represents an element in an XML document and provides a concise set of methods for locating and manipulating the elements within a tree representing the entire document.&lt;br /&gt;
&lt;br /&gt;
The remaining classes in the library provide support for WSDL, allowing a WSDL document to be parsed, and SOAP calls to be made to a service described in the WSDL, with binding information from the WSDL used to build the calls from a minimal set of parameters.&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
features = &lt;br /&gt;
* Easy/simple ObjectiveC API for parsing/generating XML documents, XMLRPC and SOAP remote procedure call support, WSDL support,  GNUstep and OSX|&lt;br /&gt;
&lt;br /&gt;
maintainer = Richard Frith-Macdonald |&lt;br /&gt;
&lt;br /&gt;
relatedlinks = |&lt;br /&gt;
&lt;br /&gt;
category = [[Category:Networking Frameworks]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Buzzdee</name></author>
	</entry>
</feed>