GNUMail.app, the portability evidence

ArticleCategory:

Applications

AuthorImage:

Georges Tarbouriech

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech 

AboutTheAuthor

Georges is a long time Unix user. As a NeXTSTEP lover, he is very fond of these free projects aiming at offering the look and feel (and much more) of this great system.

Abstract:

GNUMail.app is a NeXT Mail.app clone running under GNUstep and MacOS X. Its design allows to use the same source code on very different platforms. Accordingly this great piece of software is the absolute evidence of software portability between GNUstep and MacOS X.

ArticleIllustration:

mail

ArticleBody:[The article body]

Once upon a time...

At the end of the 80's, a new operating system appeared, called NeXTSTEP. This OS was offering what we had never seen before. Among many other "things", it provided users with the very first graphical mail client, Mail.app. Not only was it graphical, but it was able to manage any type of data: pictures, sounds, etc.
A few years later, NeXT decided to port NeXTSTEP to other platforms: OpenStep was born.
From there, some people started to work on free software projects offering the same philosophy. The biggest project, is of course GNUstep, since its goal is to provide us with a free implementation of OpenStep. People at GNUstep do a very great job when you take into account the amount of work such a project involves.
Another great work is Window Maker. This window manager is part of the GNUstep project. Visiting both websites, you will discover everything about those great free products. You may also have a look at these "old" LinuxFocus articles: Window Maker, the spirit of NeXTStep and GNUstep, the open source OpenStep. (Come on, you "fundamentalist" people, this title was only to play around the word "open": we all know GNUstep is free software!).
To end with this history chapter, let's add NeXTSTEP founder never forgot how advanced his "child" was. He sold it to Apple (he had co-founded...), came back "home", and became Apple "temporary" boss. This brought MacOS X to us, which is NeXTSTEP in an Apple flavor. And here we are: both GNUstep and MacOS X have many things in common. Therefore, compatibility between applications, source code, can be expected. Since GNUstep is able to run under many platforms (in a more or less stable way), it makes portability possible. For your information, GNUstep can work on most of the BSD's, most of Linux distros, Solaris, Irix... and even on Windos.
Some more projects are on the work: the port of Darwin (OS X core) on ix86 architecture. Check http://gnu-darwin.sourceforge.net/.
You can as well check http://www.linuxstep.org. The name says all.
There is also Simply GNUstep from http://simplygnustep.sourceforge.net/ which is a full ISO image you can boot from a CD: in other words, you don't need to install the whole stuff.

NOTE: You do NOT need GNUstep or the X Window System on MacOS X! I know, this may seem obvious, but since some people asked me, I prefer to insist ;-)
This is the important point: portability under X is something you can appreciate everyday when using many different Unix flavors. That is, you can compile and use applications whatever Unix you use: free, proprietary, BSD, SystemV... They all have something in common: the X Window System. Despite its name, MacOS X (X means 10, not X Window System) does not have the X Window System: it has a beautiful GUI called Aqua instead (based on Quartz, OpenGL and QuickTime). Accordingly, what is obvious while using X, becomes much more complicated when it concerns OSes having so different graphical subsystem.
By the way, if you do want X Window System under MacOS X, be aware that it is available: for instance you can download it from Apple's website (http://www.apple.com/downloads/macosx/unix_apps_utilities/.
Accordingly, if there is only one point to remember when talking about GNUstep, let's call it "portability". And, at least, we reach the heart of the subject: GNUMail.app. If you need an evidence, this is the one.

What is GNUMail.app ?

GNUMail.app is the work of Ludovic Marcotte (and friends) and it is released under GPL. The artistic part (icons) is the work of Andrew Lindesay. From the GNUstep website you can have a look at the beautiful icons Andrew created for GNUstep (in the User Apps section).
As we already mentioned, GNUMail.app is a mail client, clone of the NeXT Mail.app (or today, clone of Apple MacOS X Mail.app). Here is the whole family : from left to right, the father, the son... and the nephews.

NeXTmail MacOS X mail GNUstep GNUMail MacOS X GNUMail

GNUMail.app has the NeXT Mail.app look and feel. Sure, there have been other mail clients with the NeXTSTEP look and feel, especially intended to work under Window Maker. Let's mention Postilion at http://www.postilion.org/ or Aileron at http://ucsu.colorado.edu/~nwanua/Aileron/.
You can consider them as halted projects: both authors believe GNUMail.app is the NeXT step.
GNUMail.app is something else: it is written in Objective C, uses Apple (NeXT) developers tools such as InterfaceBuilder and ProjectBuilder on the Mac side, and soon should be able to use Gorm or ProjectCenter on the GNUstep side (both are available from gnustep website in the Developer apps section). However, the most important is that you can use the same source code to compile it, either under MacOS X or GNUstep. The present version is 1.0.0 at the time of this writing. It needs a library called Pantomime, which is a framework to handle mail connections (SMTP, POP, IMAP...). The present version is 1.0.2, and again... it is the same one for MacOS X or for GNUstep. Both archives can be downloaded from http://www.collaboration-world.com/gnumail/

Features

Since I will not reinvent the wheel, here is what you can read on GNUMail.app website:
- Multiple POP3 (with APOP support) accounts with local cache support (for leaving messages on server);
- Multiple delivery agents (SMTP or local mailer);
- Mail spool file support for receiving;
- Good IMAP support with local caching;
- Full RFC822 and RFC2822 support;
- Read, compose, bounce, reply and forward mails ;
- Mailbox management (create, delete, locking and transfer messages) using the Berkeley mbox format;
- Personal preferences management;
- MIME support (decode and encode);
- A full MIME types manager;
- Quoted Printable and BASE64 support;
- Address Book with groups support;
- Find Panel with regular expressions support;
- Automatic or manual fetching of your mails (user's choice);
- Powerful filters that supports regular expressions;
Ludovic hopes to add more features very soon, such as a new Preferences panel or GPG support. And you can trust him when you know how fast he works!

This should make you feel like visiting GNUMail.app website ;-)

Compiling and installing GNUMail.app

GNUMail.app is available as source code for MacOS X and Linux and so is Pantomime (remember, you need both). Saying Linux is rather restrictive: it concerns most of the OSes able to run GNUstep. For instance, GNUMail.app is known to run under FreeBSD, NetBSD...
You can get binary versions for MacOS X if you don't feel like compiling. There are packages for Debian and "ports" for FreeBSD too. However we will not talk about them.
To be able to compile and use GNUMail.app, you will have to meet some requirements.
Under MacOS X, you obviously need the Developers tools. Under GNUstep, you need... GNUstep. How to install GNUstep is out of the scope of this article, but you will find everything you need on GNUstep website. However, let's recommend gcc version 3.0 and up to avoid some compiling problems. You also need the GNUstep "unstable" versions of make (1.3.0), base (1.3.0), gui (0.7.6) and xgps (0.7.6). Don't worry, they are called "unstable" but they work quite well.

MacOS X

First of all, if you don't read the FAQ, be aware that you should uncompress the archives using the command line with something like tar zxvf archive.tar.gz. Using automatic tools such as Stuff-it will alter some files from the archive and you will have to rename them.
The README file in the docs directory will tell you how to compile and install Pantomime and GNUMail.app using ProjectBuilder (Pantomime must be compiled first). Following the different steps will provide you with a brand new GNUMail executable.
If you prefer the command line, you can use pbxbuild and pbxbuild install. If you don't know pbxbuild, the ProjectBuilder online Help will tell you everything about this tool.
As a short abstract, let's mention you cannot install a target from ProjectBuilder: you must use pbxbuild install instead. That is to say, the executable you get from ProjectBuilder is linked to the directory where you compiled the application. If you move the executable somewhere else and remove this directory, the application will not work properly. If you want to remove the source code directory (where you compiled from) and keep a working application, using pbxbuild install is compulsory.
When you're done, it's enough to run the GNUMail executable clicking on its icon.

GNUstep

Once GNUstep is up and running, uncompress the archives with the same command as above. Next, type make and make install in a shell and that's it (of course, you must compile Pantomime before GNUMail.app). Run the command openapp GNUMail.app and you will see the magic: a very nice mail client on your screen.
If you want to keep things up-to-date, you can get CVS versions of GNUMail.app (and Pantomime). Ludovic and his friends work very hard and provide you with new improved stuff almost everyday. This, of course, implies you keep the source code used to compile your first version. It also may require a GNUstep update (CVS too) or a Developer Tools update from Apple if there is one. For this last, you must be registered as a developer (don't worry, it's free!).
Now you have a nice application, you probably feel like using it.

Configuring GNUMail.app

GNUMail.app provides you with a very nice Preferences panel, making the configuration process quite easy. This panel is divided into different sections : personal, viewing, sending, receiving, compose, fonts, MIME and filtering.
As the name says, the personal section allows you to give GNUMail.app your personal information: name, email address, signature.

personal personal

The viewing section is aimed at defining the headers you want to be shown in the messages or at highlighting URLs present in the message body.

viewing viewing

The sending section concerns... the delivery methods. There, you define the transport method, your user name, password, etc.

sending sending

The receiving section defines how to... receive mail. There, you specify the incoming mail server(s)

receiving receiving

The compose panel defines the signature position, the number of characters before wrapping lines.

compose compose

In the fonts panel you can select the fonts used when displaying a message.

fonts fonts

The MIME panel allows to define the data you want to see as attachments (pictures, documents such as PDF...)

mime mime

Last but not least, the filter panel is the place where to define the filtering rules.

filters filters

As you can notice, the configuration process is quite easy and user-friendly. The goal was of course to show you what it looks like under GNUstep and MacOS X.

Using GNUMail.app

Using GNUMail.app is so obvious that it should not need a specific chapter. Under MacOS X, just click in the GNUMail.app icon from the Finder and that's it. You of course, get a new icon in the dock where you can keep it if you wish. When the application is running, it's enough to click on the icons at the top of the open mailbox (defaults to the Inbox) to delete a message, to get or send your mail, to open different mailboxes, to compose a new message, to reply or forward a message, to open the address book or to make a search in your mailboxes.
The main menu provides you with the same features and some new ones. The most important options have keyboard shortcuts. This menu also works as a popup menu.
Under GNUstep, the only difference comes from the way to run the app for the first time. If you are used to GNUstep, you know you must type openapp and the application path. If you have Window Maker as your preferred window manager (recommended! ), you will get an appicon: enough to drag it to the dock... and you will not need to type in your shell anymore to launch GNUMail.app.
The most important seems to be that GNUMail.app has become quite stable. There is a considerable improvement when compared to previous versions, especially under GNUstep. After a few weeks of use, I had no "crash" at all. GNUMail.app is now perfectly usable as your everyday MailUserAgent.
Under MacOS X, it has been quite stable even before version 1.0.

What's NeXT ?

We could consider GNUMail.app as an experiment of portability. But it is a working experiment! Sure, many other mail clients have more features. However, GNUMail.app is the first true application able to run under environments so different like MacOS X and GNUstep with absolutely the same source code. Ludovic is working on another project and if it is less advanced than GNUMail.app it also is of interest.
It is called Affiche, and it is a "post-it" implementation, again for both MacOS X and GNUstep. The website also hosts EasyDiff, a graphical diff from Pierre-Yves Rivaille, only running under GNUstep, at least for now.
If many people were sceptic about the portability between MacOS X and GNUstep, Ludovic provides the evidence. Of course, there is a long way before GNUstep is complete, nevertheless the improvement is constant. We must congratulate all the people involved in GNUstep. The main reason is the enormous amount of work required by such a project and the second one is the very few persons involved in it. Thanks a lot to Adam Fedor and friends for such a great piece of software.
Again, it is obvious that every development will rely on GNUstep progress. At the moment, there are a lot of working applications, even if most of them are at their beginning. The other way round may accelerate the process: that is, most of the work is done under GNUstep, but we can hope for more development under MacOS X with portability in mind. And, this would be a great starting point for true multi-platform applications.
At a time when Windos "cloning" seems to be the rule, it is a luck to have such an alternative. If today's "fashion" is the word open, then GNUstep is the model.
A part of the Linux community waits for its system to spread on the desktops... or to reach "world domination"!!! Come down: a monopoly whether it is free or not, stays a monopoly... and among other things, a monopoly kills creativity. The diversity is far more important since it creates emulation, what does not mean "cloning" a pseudo standard (and its applications), as if its editor was holding the truth and considered as the absolute reference.
About 15 years ago, NeXTSTEP was initiating a revolution in the Unix world: allowing people to use Unix without knowing anything about it! So does MacOS X today. And, as a matter of fact, Linux is far from this point, even when cloning the "wrong" reference. You may have noticed that GNUstep is NOT a Windos clone (at least, I said it!). It is a free implementation of the "son" (OpenStep) of one of the most innovative OS ever (NeXTSTEP).
To avoid confusion, GNUstep is a framework and it becomes a (lightweight) desktop environment as soon as you add applications... such as GNUMail.app.
Even more important, GNUstep is not limited to Linux.
In the middle of the 80's, there were a lot of very different OSes. Now, the alternative is Unix or Windos: it is a pity. Nevertheless, I would prefer a world in which we could choose among plenty of systems: the more the better.
At least, we are lucky: we have a lot of different Unixes, and most of them are able to run GNUstep!
That was the usual off topic section, and it only represents my opinion.
Going back to GNUMail.app, we can hope it will give ideas to many developers. Mac OS X users have a big chance called InterfaceBuilder (and ProjectBuilder). Discovering these tools will change their life. In the very near NeXT future, we can expect Gorm and ProjectCenter to do the same as their models, thus making GNUstep a must have.
Thanks a lot Ludovic for leading the way.
When I told you we were living in a great time!

Links

The home of GNUMail.app: http://www.collaboration-world.com/gnumail/
Everything about GNUstep: http://www.gnustep.org
Even more about GNUstep: http://www.gnustep.net
Applications, tutorials, HOWTOs by Nicola Pero and Pierre-Yves Rivaille: http://www.gnustep.it
Apple MacOS X Developer Tools: http://developer.apple.com/tools/macosxtools.html