GNUstep programming mini tutorials

Quick-and-easy tutorials to learn how to program GNUstep.

The base series

These tutorials compose the base series. They are more or less in order - the more basic come first.

Writing GNUstep Makefiles

This tutorial introduces you to the GNUstep make package; this package allows you to easily create and manage portable GNUstep projects. It is probably the easiest make system on earth, and fully integrated in GNUstep development environment. You should have at least a quick read of this tutorial before writing any line of code. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

Quick Introduction to Objective-C

To learn Objective-C, there is a great complete book online [ PDF Version]. Also have a look at GNUstep general documentation page for other tutorials/introductions to objective-C. It's a very nice and easy language, worth learning and trying out. It really helps you to design good object-oriented software.

Basic Classes of the GNUstep Base Library

This tutorial introduces you to the GNUstep Base Library. The GNUstep Base Library provides a wide range of classes and objects to ease programming and abstract your code from hardware and operating system dependencies. The wealth of classes and features provided by this library might be confusing at first; this tutorial will help you focus first on the four or five classes you need to start with. Even if your interest is mainly for GUI programming, if you know nothing about the GNUstep Base Library it is worth reading quickly this tutorial before trying to read any of the tutorials regarding the GNUstep Gui Library. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

First GUI Application: NSApplication, NSMenu

This tutorial introduces you to the GNUstep GUI Library. The GNUstep GUI library aims at implementing the NEXTSTEP/OPENSTEP AppKit library; its superb design allows you to design and implement better gui applications in less time. The only prerequisites for this tutorial are having read the previous tutorials and knowing at least a little of Objective-C (the more, the better). It is only the first of a series; it covers creating a very basic application, and adding menus to it. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

First GUI Application (2): NSWindow, NSButton

This tutorial goes further on in introducing you to GNUstep GUI programming: it covers creating a window in an application, and putting a button in it. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

First GNUstep Renaissance Application

This tutorial introduces you to GNUstep Renaissance -- a powerful framework for building portable user interfaces. GNUstep Renaissance solves the problems which have been troubling previous GNUstep technologies for automating the build of user interfaces; it provides total portability between GNUstep and Apple OSX and can automatically adjust user interfaces for translations or changes in the underlying platform or theme; all this while retaining and expanding all the best ideas (such as connections and outlets) from the NeXTstep tradition of Interface Builders and NIB files. It is a hot technology, mixing the best ideas from different worlds, which will hopefully provide the basis for the ultimate user interface building tool for the GNUstep programmer. This tutorial helps you learn step by step some of the basics of how to use this exciting software. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

The additional series

These tutorials are outside the base set, and cover more specific topics.

Distributed Objects

This tutorial introduces you to GNUstep Distributed Objects, which allow objects in different applications on the network to easily and transparently call methods of each other. GNUstep Distributed Objects are the GNU clone of the famous distributed objects framework which used to ship with various variants of NEXTSTEP/OPENSTEP; it takes full advantage of the dynamical capabilities of the Objective-C language to provide a distributed objects system which is extraordinarily easy and friendly to use. It is recommended that you read all the tutorials about non-graphical programming in the base series before reading this one. If you know nothing about GNUstep Distributed Objects, this is a must read. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

More on Makefiles: Libraries, Aggregate projects

This tutorial goes further on in introducing you to the GNUstep make package: it covers creating makefiles for libraries, linking applications and tools against existing libraries (both GNUstep and non-GNUstep), creating libraries which depend on other libraries, and using aggregate projects. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

Parallel Building with GNUstep Makefiles

This tutorial discusses GNUstep make's support for parallel building, how it works and how to use it to maximum effect. Parallel building allows you to take advantage of modern multicore hardware to reduce the time required to build large and small projects, but unfortunately can introduce a number of frustrating complexities and problems if done by hand. GNUstep make takes care of all the complications for you; its support for parallel building is very sophisticated and effective while still safe and easy to understand and use. [ Online Version | HTML Tarball | Postscript | LaTeX Source ]

Contact the author

These mini tutorials were written by Nicola Pero ( You are welcome to modify and redistribute them under the GNU GPL License Version 3. Please feel free to send me comments and suggestions; bug fixes (for example reports of spelling and grammar mistakes and of code which doesn't work) are particularly appreciated.