GNUMail.app, the portability evidence

ArticleCategory:

AuthorImage:

TranslationInfo:[Author and translation history]

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:

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.

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.

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.

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

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

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

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

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!