GNUMail.app, het bewijs van portabiliteit

ArticleCategory:

Applications

AuthorImage:

Georges Tarbouriech

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech

en to nl Guus Snijders

AboutTheAuthor

Georges is al lang een Unix gebruiker. Als een fan van NeXSTEP is hij dol op vrije projecten die de look & feel (en nog veel meer) van dit fantastische systeem proberen te evenaren.

Abstract:

GNUMail.app is een kloon van NeXT Mail.app en draait onder GNUstep en Mac OS X. Het ontwerp staat het gebruik van dezelfde broncode op zeer verschillende platformen toe. Al met al is dit fantastische stuk software een absoluut bewijs van portabiliteit tussen GNUstep en Mac OS X.

ArticleIllustration:

mail

ArticleBody:[The article body]

Op een dag...

Tegen het einde van de jaren 80 verscheen er een nieuw besturingssysteem, genaamd NeXTSTEP. Dit OS (Operating System - besturingssysteem) bood dingen die we nog nooit eerder hadden gezien. Zo bood het (onder andere) de eerste grafische e-mail client, Mail.app. Behalve dat het grafish was, kon het ook overweg met andere vormen van data: plaatjes, geluiden, etc!
Een paar jaar later besloot NeXt om NeXTSTEP ook beschikbaar te maken voor andere systemen (te porteren): Open Step was geboren.
Vanaf toen begonnen mensen te werken aan vrije software procecten met dezelfde filosofie. Het grootste project is natuurlijk GNUstep, dat zich ten doel heeft gesteld een vrije implementatie van Open Step te ontwikkelen. De mensen van GNUstep doen fantastisch werk, zeker als je je bedenkt hoeveel werk zo'n project met zich meebrengt.
Een ander mooi project is Window Maker. Deze window manager is onderdeel van het GNUstep project. Op hun beider websites is alles te vinden over deze prachtige, vrije producten. Je kunt ook een blik werpen op deze "ouwe" LinuxFocus artikelen: Window Maker, de geest van NeXTStep en GNUstep, de open source OpenStep (Voor de "fundamentalisten" onder ons, de titel was alleen om een beetje met het woord "open" te spelen: zoals we allen weten is GNUstep vrije software!).
Om een einde aan dit geschiedenishoofdstuk te breien, nog de toevoeging dat de oprichter van NeXTSTEP nooit vergat hoe geavanceerd z'n "kind" was. Hij verkocht het aan Apple (dat hij mee opgericht had...), kwam terug "naar huis", en werd Apple's "tijdelijke" baas. Dit bracht ons Mac OS X , wat NeXTSTEP is in een Apple smaak. En hier zijn we: Gnustep en Mac OS X hebben veel overeenkomsten. Daardoor kan compatibiliteit tussen applicaties, broncode, worden verwacht. Daar GNUstep beschikbaar is voor veel platformen (op een min of meer stabiele manier), maakt het portabiliteit mogelijk. Ter informatie, Gnustep werkt met de meeste BSD's, met de meeste Linux distro's, Solaris, Irix.... en zelfs op Windos.
Sommige andere projecten zijn onderweg: de port van Darwin (de kern van OS X) voor de ix86 architectuur. Zie http://gnu-darwin.sourceforge.net/.
Je kunt ook kijken op http://www.linuxstep.org. De naam zegt het al.
Ook is er Simply GNUstep, een volledig ISO image, waarmee je kunt booten vanaf cd: in andere woorden, je hoeft niets te installeren. Te vinden op: http://simplygnustep.sourceforge.net/

NOOT: Op Mac OS X heb je GNUstep of het X Window System niet nodig! Ik weet het, dit lijkt voor de hand te liggen, maar omdat sommige mensen het vroegen, zeg ik het nog maar eens. ;-)
Dit is het belangrijkste punt: portabiliteit onder X is iets waarvan je iedere dag kunt genieten, tijdens het gebruik van vele verschillende Unix smaken. Dat wil zeggen, je kunt applicaties compileren en gebruiken onder welke Unix je ook gebruikt: vrije, commerciële, BSD, System V... Ze delen allemaal iets: het X Window Systeem. Ondanks de naam, heeft Mac OS X (X betekent 10, niet X Window System) niet het X Window Systeem: het heeft een prachtige GUI, Aqua genaamd, dat in de plaats daarvan gebaseerd is op Quartz, OpenGL en Quick Time. Als gevolg worden de dingen die met X vanzelfsprekend zijn, een stuk gecompliceerder met zo'n afwijkend grafisch subsysteem.
Tussen haakjes, als je het X Window System onder Mac OS X wilt, dan kan dit: je kunt het bijvoorbeeld downloaden van Apples' website (http://www.apple.com/downloads/macosx/unix_apps_utilities/.
Als er 1 ding is om aan te denken als het over GNUstep gaat, is het wel "portabiliteit". En, eindelijk, komen we zo bij de kern van het onderwerp: GNUMail.app. Als je nog een bewijs zoekt, dit is het!

Wat is GNUMail.app ?

GNUMail.app is het werk van Ludovic Marcotte (en vrienden) en is beschikbaar gesteld onder de GPL. Het artistieke gedeelte (pictogrammen) is het werk van Andrew Lindesaw. Op de GNUstep website zijn de prachtige pictogrammen die Andrew creëerde voor GNUstep te zien (in de User Apps sectie).
Zoals reeds gezegd is GNUMail.app een e-mail client, een kloon van de NeXT Mail.app (of, meer recent, kloon van Apple Mac OS X Mail.app). Hier is de hele familie: van links naar rechts, de vader, de zoon... en de neefjes.

NeXTmail MacOS X mail GNUstep GNUMail MacOS X GNUMail

GnuMail.app voelt aan als NeXT Mail.app, en ziet er ook zo uit. Zeker, er zijn ook andere mailclients geweest met de NeXTSTEP look & feel, vooral bedoeld om te werken onder Window Maker. Zoals bijvoorbeeld Postilion op http://www.postilion.org/ of Aileron op http://ucsu.colorado.edu/~nwanua/Aileron/.
Deze kun je beschouwen als gestopte projecten: beide auteurs geloven dat GNUMail.app de volgende 'Step' is.
GNUMail.app is iets anders: het is geschreven in Objective C, gebruikt Apple (NeXT) ontwikkelaarstools zoals InterfaceBuilder en ProjectBuilder aan de Mac kant, en zou binnenkort gebruik moeten kunnen maken van Gorm of ProjectCenter aan de GNUstep zijde (beide zijn beschikbaar op de GNUstep website, in de Developer apps sectie). Het belangrijkste is echter dat je dezelfde broncode kunt gebruiken om het te compileren, of het nu onder MacOS X is of GNUstep. De huidige versie (op het moment van schrijven) is 1.0.0. Eén van de benodigdheden is Pantomime, welke een framework is voor mail connecties (SMTP, POP, IMAP...). De huidige versie hiervan is 1.0.2, en nogmaals, het is een en dezelfde voor MacOS X en GNUstep. Beide archieven zijn te downloaden op http://www.collaboration-world.com/gnumail/

Mogelijkheden

Ik zal niet proberen het wiel opnieuw uit te vinden, hier is wat je kunt lezen op de GNUMail.app website:
- Meerdere POP3 (met APOP ondersteuning) accounts met lokale cache ondersteuning (om de berichten op de server te laten);
- Meerdere 'delivery agents' (SMTP of lokale mailer);
- Ondersteuning van mail spool bestand voor het ontvangen;
- Goede IMAP ondersteuning met lokale cache;
- Volledige ondersteuning van RFC822 en RFC2822;
- Lezen, schrijven, weigeren, beantwoorden en doorsturen van mails; - Mailbox management (creëren, verwijderen, vastzetten van, (etc). berichten) mbv het Berkely mbox formaat;
- Persoonlijke voorkeuren management;
- MIME ondersteuning (decoderen en encoderen);
- Een volledige MIME types manager;
- qouted printbare en BASE64 codering ondersteuning;
- Adresboek met groepen;
- Zoekpaneel met reguliere expressies;
- Automatisch of handmatig ophalen van berichten (keus van gebruiker);
- Krachtige filters die reguliere expressies ondersteunen;

Ludovic hoopt binnenkort meer mogelijkheden toe te voegen, zoals een nieuw voorkeurmenu of GPG ondersteuning. En je kunt hem vertrouwen, zeker als je weet hoe snel hij werkt!
Dit zou je er zeker toe moeten brengen de GNUMail.app website te bezoeken. ;-)

GNUMail.app compileren en installeren

GnuMail.app is beschikbaar als broncode voor MacOS X en Linux, net als Pantomime (onthoud: beide zijn nodig). Enkel Linux vermelden lijkt beperkend. Ten slotte, van GNUMail.app is bekend dat het draait onder FreeBSD, NetBSD...
Binaire versies voor MacOS X zijn ook beschikbaar, als je er niet zoveel voor voelt om het zelf te compileren. Hier zullen we het verder echter niet over hebben.
Om GNUMail.app te compileren en gebruiken, zijn er nog meer benodigdheden.
Onder MacOS X heb je vanzelfsprekend de ontwikkelaarstools nodig. Onder GNUstep, heb je nodig... GNUstep. De installatie van GNUstep valt buiten het bereik van dit artikel, maar alles wat je nodig hebt is te vinden op de GNUstep website. Gcc versie 3.0 en hoger zijn aan te raden om een paar problemen met compileren te voorkomen. Ook zijn de GNUstep "unstable" versies (1.3.0), base (1.3.0), gui (0.7.6), en xgps (0.7.6) benodigd. Geen zorgen, ze heten "unstable", maar doen hun werk goed.

MacOS X

Allereerst, als je de FAQ niet leest, let op dat je de archieven mbv de command line met zoiets als tar zxvf archive.tar.gz uitpakt. Het gebruik van automatische tools zoals Stuff-it, zal sommige bestanden in het archief aanpassen en dan zul je ze achteraf moeten hernoemen.
In het README bestand van het archief staat beschreven hoe het compileren en installeren in z'n werk gaat (Pantomime moet als eerste gecompileerd worden). Het volgen van de stappen levert je een splinternieuwe GNUMail executable op.
Als je de voorkeur geeft aan de commandoregel, kun je pbxbuild en pbxbuild install gebruiken. Als je (nog) niet bekend bent met pbxbuild kan de ProjectBuilder online Help je alles vertellen over deze tool.
Als een kort voorbeeld, je kan een doel niet installeren vanuit ProjectBuilder: je moet in plaats daarvan gebruikmaken van pbxbuild install. Vergeet niet de executable die je van ProjectBuilder krijgt is gelinkt aan de directory waar de applicatie was gecompileerd. Als je de executable verplaats en de directory met de broncode verwijdert, zal de applicatie niet meer goed werken. Als je de broncode (waarmee je hebt gecompileerd) wilt verwijderen en een werkende applicatie wilt overhouden, ligt het gebruik van pxbuild install voor de hand.
Als je klaar bent, volstaat het om op het GNUMail pictogram te klikken om het te starten.

GNUstep

Als GNUstep draait, is het tijd om de archieven uit te pakken. Dit kan met hetzelfde commando als hierboven. Vervolgens nog een 'make' en een 'make install' (hou er wel rekening mee dat Pantomime voor GNUMail.app moet zijn gecompileerd). Typ het commando openapp GNUMail.app en aanschouw de magie: een prachtige mail client op je scherm.
Als je up-to-date wilt zijn, kun je CVS versies van GNUMail.app (en Pantomime) gebruiken. Ludovic en zijn vrienden werken zeer hard en zorgen bijna iedere dag voor nieuw, verbeterd spul. Het is dus wel de moeite waard om de broncode die je hebt gebruikt om de eerste versie te compileren, te bewaren. Het kan ook zijn dat een update van GNUstep (en CVS) nodig is, of een Developer Tools update van Apple, indien beschikbaar. Voor deze laatste moet je geregistreerd staan als ontwikkelaar (geen zorgen: het is gratis!).
Nu je zo'n mooie applicatie hebt, wil je er waarschijnlijk ook gebruik van maken.

GNUMail.app configureren

GNUMail.app beschikt over een fraai menu met instellingen, waarmee de het configuratieproces heel eenvoudig wordt. Dit paneel is verdeeld in verschillende secties: persoonlijk, lezen, verzenden, ontvangen, opstellen, lettertypes, MIME en filters.
Zoals de naam al aangeeft bevat de persoonlijke sectie de persoonlijke gegevens: naam, e-mail adres, signature.
personal personal

De lees sectie is gericht op het definiëren van de headers die moeten weergeven worden in berichten en het markeren van URL's in het bericht.
viewing viewing
De verzending sectie gaat over... verzendingsmethodes. Hier kun je de transportmethode instellen, je gebruikersnaam, wachtwoord, enz.
sending sending

De ontvangstsectie gaat over hoe mail te ontvangen. Hier kun je de server(s) voor inkomende e-mail instellen.
receiving receiving

Het deel over het schrijven van mail definieert dingen als de positie van de handtekening, de regelbreedte, enz.

compose compose

In het lettertypepaneel kun je de lettertypes selecteren die gebruikt worden om berichten weer te geven.

fonts fonts

Het MIME paneel stelt je in staat in te stellen welke data je als attachments wilt zien (plaatjes, documenten zoals PDF...)

mime mime

En het filterpaneel tenslotte, is de plaats waar je de regels voor het fiteren kunt instellen.

filters filters

Zoals je ziet is het configuratieproces eenvoudig en gebruikersvriendelijk. Het idee was natuurlijk om je te laten zien hoe het eruit ziet onder GNUstep en MacOS X.

GNUMail.app gebruiken

Het gebruik van GNUMail.app is zo vanzelfsprekend, dat er geen apart hoofdstuk voor nodig is. Onder MacOS X kun je gewoon op het GNUMail pictogram klikken in de 'Finder', en dat is alles. Uiteraard kun je ook een nieuw pictogram in de 'dock' plaatsen. Als de applicatie draait is het voldoende om te klikken op de pictogrammen die zich boven de geopende mailbox (standaard de inbox) bevinden, om een bericht te wissen, mail op te halen of te verzenden, andere mailboxen te openen, een mailtje op te stellen, een bericht te beantwoorden of door te sturen of om je mailboxen te doorzoeken.
Het 'main menu' biedt dezelfde mogelijkheden plus nog een paar andere. De belangrijkste opties hebben sneltoetsen. Dit menu werkt ook als een popup menu.
Onder GNUstep verschilt alleen de methode om het programma de eerste keer op te starten. Als je gewend bent aan GNUstep, weet je dat je het commando openapp in combinatie met het pad moet gebruiken. Als je Window Maker als voorkeurs window manager hebt staan (aan te raden!), krijg je een appicon: slepen naar de dock volstaat... daarna hoef je geen commando's meer te typen om GNUmail.app te starten.
Het belangrijkste lijkt te zijn dat GNUMail.app zeer stabiel is geworden. Er is een behoorlijk verschil te merken ten opzichte van eerdere versies, vooral onder GNUstep. Na een paar weken gebruik, heb ik nog geen enkele crash meegemaakt. GNUMail.app is nu perfect bruikbaar als alledaags mailprogramma.
Onder MacOS X was het al stabiel voor versie 1.0.

En nu?

GNUMail.app kunnen we beschouwen als een experiment van portabiliteit. Maar het is een werkend experiment! Zeker, vele andere mail clients beschikken over meer features. Aan de andere kant is GNUMail.app de eerste echte applicatie die draait onder zulk verschillende omgevingen als MacOS X en GNUstep met de absoluut dezelfde broncode. Ludovic werkt ook aan een ander project, dat minder geavanceerd, maar zeker interessant is.
Het draagt de naam Affiche, en is een "post-it" implementatie, ook weer voor zowel MacOS X als GNUstep. De website bevat ook EasyDiff, een grafische diff van Pierre-Yves Rivaille, en draait alleen onder GNUstep, op dit moment tenminste.
Indien veel mensen sceptisch waren over portabiliteit tussen MacOS X en GNUstep, dan heeft Ludovic het bewijs geleverd. Uiteraard is er nog een lange weg te gaan voordat GNUstep compleet is, maar desalniettemin gaat het ontwikkelen constant door. We moeten iedereen feliciteren die heeft bijgedragen aan GNUstep. De belangrijkste reden is de enorme hoeveelheid werk die een dergelijk project oplevert en de tweede is het feit dat er maar een paar personen bij betrokken zijn. Hartelijk dank aan Adam Fedor en vrienden voor een dit prachtige stuk software.
Nogmaals, het moge duidelijk zijn dat iedere ontwikkeling afhankelijk is van de vooruitgang van GNUstep. Op dit moment zijn er veel werkende toepassingen, hoewel de meeste nog in de beginfase zitten. De omgekeerde weg zou het proces gunstig kunnen beïnvloeden: dat wil zeggen, het meeste werk gebeurt momenteel onder GNUstep, maar we kunnen hopen op meer ontwikkeling onder MacOS X met overdraagbaarheid in het achterhoofd. Trouwens, dit zou ook een fantastisch beginpunt kunnen zijn voor echt multi-platform applicaties.
In een tijd waar het klonen van Windos de regel lijkt te zijn, is een alternatief als dit een zegen. Als het modewoord van vandaag open is, dan is GNUstep het model.
Een deel van de Linux gemeenschap wacht op het moment dat hun systeem is verspreid over de desktops... of zelfs de "wereld dominatie"!!! Kom op, een monopolie, vrij of niet, blijf een monopolie... en naast andere dingen, moedigt een monopolie niet echt aan tot creativiteit. Diversiteit is belangrijker, het moedigt bijv. rivaliteit aan, en dus niet het "klonen" van een pseudo standaard (en diens applicaties), alsof de ontwikkelaar de waarheid in pacht had en zijn programma een abolute referentie zou zijn.
Zo'n 15 jaar geleden ontketende NeXTSTEP een revolutie in de Unix wereld: het stelde mensen in staat Unix te gebruiken zonder gehinderd te worden door enige kennis ervan! Net als vandaag de dag MacOS X. In feite is Linux nog ver van dit punt verwijderd, zelfs met het klonen van het "verkeerde" voorbeeld. Je hebt misschien opgemerkt dat GNUstep GEEN Windos kloon is (eindelijk, ik heb het gezegd!). Het is een vrije implementatie van de "zoon" (Openstep) van het meest innovatieve OS ooit (NeXTSTEP).
Om verwarring te voorkomen: GNUstep is een soort geraamte, een framework, en wordt een (lichte) destkopomgeving zodra je apliclicaties toevoegt... zoals GNUMail.app.
Nog belangrijker, GNUstep is niet beperkt tot Linux.
Tijdens de jaren '80, waren er veel, sterk verschillende OS'en. Nu bestaat de keus uit Unix of Windos: het is jammer. Niettemin, ik geef de voorkeur aan een wereld waarin we kunnen kiezen uit voldoende systemen: hoe meer hoe beter.
Al met al hebben we geluk: we hebben veel verschillende Unixen, en de meeste daarvan zijn in staat GNUstep te draaien!
Tot zover het gebruikelijke off topic gedeelte, welke overigens alleen mijn mening weergeeft.
Terug naar GNUMail.app, kunnen we hopen dat het veel ontwikkelaars zal inspireren. Gebruikers van MacOS X hebben geluk met hulpmiddelen zoals InterfaceBuilder (en ProjectBuilder). Het gebruik van deze tools kan hun leven veranderen. In de zeer nabije toekomst kunnen we verwachten dat Gorm en ProjectCenter hetzelfde doen als hun voorbeelden, en zo GNUstep tot "must have" maken.
Met dank aan Ludovic voor het tonen van de juiste weg.
Had ik reeds verteld in wat voor geweldige tijd we leven?

Links

Het thuis van GNUMail.app: http://www.collaboration-world.com/gnumail/
Alles over GNUstep: http://www.gnustep.org
Nog meer over GNUstep: http://www.gnustep.net
Toepassingen, turorials en HOWTOS door Nicola Pero en Pierre-Yves Rivaille: http://www.gnustep.it
Apple MacOS X Ontwikkelaar Tools: http://developer.apple.com/tools/macosxtools.html