Thursday, May 5, 2011

OpenBSD and GNUstep: Falling in Love with OpenStep All Over Again

Apple's MacOS X has head and shoulder advantage over the competiton for user experience and rapid application development thanks to Cocoa, based on NeXT's OpenStep, the pioneer in cross platform rapid application development with Interface Builder and Project Builder a.k.a. Xcode (Microsoft's Visual Basic still pales in comparison).

GNUstep is a free and open source implementation of the OpenStep standard, and ironically, I first read about it from Microsoft Bookshelf Internet Directory(pointing to a project mirror in Europe with URL that can be challenging to type to hideaway the project perhaps?) back when I was in the province. What piqued my curiosity about OpenStep in general and GNUstep in particular is that, once you've overcome the learning curve of Objective-C, it enables a developer to create distributed systems, fast software prototyping, cross-platform development, and can be used with Java and Ruby, all for free.

My favorite free and open source operating system is OpenBSD, with the release of version 4.9 having ready to install GNUstep packages, we have an opportunity to see how OpenBSD and GNUstep fits together to create a free and open source OpenStep environment.

We won't cover here the installation of OpenBSD, please read this for that, but the setup should pre-install X Windowing system. We will install WindowMaker to make the user interface follow the look and feel of NeXTstep (yes it may be ancient looking but Microsoft copied it starting with Windows 95, see the X mark on the close window button).

To install packages, we have to specify the package path or source (in this example, I download from JAIST):

export PKG_PATH=http://ftp.jaist.ac.jp/pub/OpenBSD/4.9/packages/i386/

Then to install WindowMaker, we execute the command below from the command line:

pkg_add WindowMaker

When we start the X Windowing system at this point, it won't yet use WindowMaker, to change the window manager to WindowMaker, on our home directory, we have to look for .xinitrc, or we make one using text editor of our choice, by default, it's vi. To automatically start the X Windowing system with WindowMaker, we put type this into the file .xinitrc:

wmaker

We then install GWorkspace, the counterpart of NeXTstep's Workspace Manager. This will install the core libraries needed to have the GNUstep environment in place.

pkg_add gworkspace

Installing GWorkspace won't install GORM and ProjectCenter (counterpart of Interface Builder and Project Builder respectively), but it has included the libraries and support programs needed to have the basic environment working.

Surprisingly, GORM and ProjectCenter are now available as packages to be installed. To install GORM we type:

pkg_add gorm

To install ProjectCenter, we have to type:

pkg_add projectcenter

OpenBSD by default may not start X Windowing system, and to invoke it, we have to type:

startx

Once it runs, it should look something like below:


To start GWorkspace, we have to open the Xterminal within the WindowMaker session and type in:

GWorkspace

Once it started, the screen should display something like this:



The issue I have while GWorkspace is running is that it can't find GORM or ProjectCenter among the list of applications it can run. So we again open the Xterminal of WindowMaker to open those applications.
To start GORM, we type:

Gorm

Once Gorm has started, it should display like below:



Start ProjectCenter by typing just that:

ProjectCenter

Once it's up and running, you should see it like this:


The problem I found trying to use GNUstep as a desktop environment is that GORM and ProjectCenter can run independent of GWorkspace, giving the impression that they are not integrated but rather disparate applications that don't have any relation to each other.

Another gripe with my experience running GNUstep with OpenBSD: I sometimes find the graphics elements not working as expected: interface elements can't be clicked or takes some time before we get feedback that something was clicked. It's perceivably slow, but I'm admittedly guilty of running this OpenBSD on VirtualBox (my bad!) so other factors may be causing the slow feedback of the whole system.

On the plus side, there are many applications (some still in beta) that were written for GNUstep as listed here, it has chock full of sample codes and tutorial resources online ranging from basic to advanced programming with GORM and ProjectCenter from here to developing distributed systems with Distributed Objects from here and here.

Some free and open source projects were built on top of GNUstep, like Etoile, GNUspeech and, given such compatibility between Cocoa and GNUstep (Cocoa-related resources may generally also apply to GNUstep), GNUmail, written in GNUstep, can be recompiled and run on MacOS X.

I was always fascinated with GNUstep and what possibilities can be done with it, now that OpenBSD has ready to install GNUstep packages, OpenStep is more within reach of the masses.

The world wide web, it's foundation, the Hypertext Markup Language (HTML) and fundamental web browser were developed on NeXTstep in CERN; are you ready to create the next revolutionary computer application using GNUstep?

1 comment: