In this tutorial we introduce the reader to the world of GNUstep Distributed Objects. GNUstep Distributed Objects are a collection of facilities offered by the GNUstep base library which allow communication between different processes running on the same machine or on different machines on the same network. Distributed Objects might also be used for communicating between different threads in the same application.
The basic idea in GNUstep Distributed Objects is that of extending normal object oriented programming by allowing objects in different processes to transparently call methods of each other. The low level details of how this interprocess messaging is done are normally hidden inside the GNU Objective-C runtime and the GNUstep base library; this allows you to concentrate on a higher level of abstraction, designing a distributed application as composed of many objects running in different processes, and intercommunicating between them using messaging. GNUstep Distributed Objects provide you support for implementing this type of designs easily, cleanly, and very quickly. The resulting code is natural and readable, which reduces the effort required to maintain and extend the distributed application.
In practice, because the Objective-C language has built in support for remote messaging, you do not need to use any special syntax or any additional programming tools to send a remote message - you can just do it with the same code you use to send a normal message. As a consequence, GNUstep Distributed Objects are very simple and natural to use, and they fit very easily and very elegantly in an object oriented framework.
The name ``GNUstep Distributed Objects'' is often abbreviated GNUstep DO. In this tutorial we will be even more brief, and refer to them as DO.