Calls: Send in your ideas. Deadline August 1st, 2021.

Last update: 2004-01-12

Mail::Box projectplan

[Improving Mail::Box — concluded in 2003]

Mark A.C.J. Overmeer,
MARKOV Solutions

De Mail::Box module is een software pakket dat is (en wordt) ontwikkeld om de afhandeling van e-mail via Perl erg makkelijk en fool-proof te maken.

De programmeertaal Perl wordt veel gebruikt door netwerk- en systeembeheerders die hun taken willen automatiseren. De Mail::Box voor Perl is te gebruiken voor allerlei e-mail gerelateerde handelingen:

  • het creeëren van automatische replys op berichten bestemd voor werknemers die het bedrijf hebben verlaten;
  • het intelligent doorsturen van e-mail voor gebruikers naar de systemen waarop zij hun e-mail lezen;
  • het filteren van spam en detecteren of strippen van e-mail virussen; en
  • het loggen en monitoren van e-mail gebruik.

Mail::Box is ook te gebruiken voor procmail-achtige toepassingen van gewone gebruikers en mail-applicatie ontwikkelaars. De eerste Mail User Agent (MUA, e-mail lees en maak toepassing) gebaseerd op Mail::Box is ook in ontwikkeling.

De meeste e-mail gerelateerde modules voor Perl zijn niet geschikt voor de huidige vorm van e-mail berichten; zij kunnen nauwelijks tot niet overweg met attachments, verschillende mime-types en coderingen. Vaak zijn deze modules al erg oud en in ouderwets Perl geschreven. Vandaar dat Mail::Box een nuttige aanvulling is.

Huidige toestand van Mail::Box

Mail::Box is momenteel al een krachtig pakket, dat de applicatie programmeur veel mogelijkheden biedt, waaronder

  • behandeling van Mbox, MH en Maildir folder-formaten. De verschillen in opslag worden voor de gebruiker verborgen. Daarnaast zijn uitbreidingen aangebracht om bestaande verschillen op te heffen, zoals sub-folder simulatie voor Mbox en Maildir;
  • krachtige functies voor het maken van een reply, forward of bounce van een message;
  • verscheidene manieren om correcte messages op te bouwen;
  • ondersteuning voor message-threads -- het verzamelen van gerelateerde berichten. Thread relaties zijn ook beschikbaar voor folder-types waar de bestaande MUA dat normaliter niet verzorgen om redenen van performance. Deze performance bezwaren zijn in Mail::Box grotendeels opgeheven door een consequent lazy omgaan met de data: werk wordt zo veel mogelijk uitsteld;
  • uitgebreide documentatie: meer dan 30 duizend regels documentatie in de manual-pages en een paper voor de German Perlworkshop 2002 (Engelstalig). Daarnaast maken een klein aantal voorbeeldscripts en enkele eenvoudige applicatie-programma's onderdeel uit van de module.

Mail::Box is gebouwd op de kennis die ligt opgeslagen in de verouderde Perl modules en eigen gebruikerservaring. Ontwikkelingen vinden plaats naar gelang de beschikbare vrije tijd en bevliegingen van de auteur. De code is volledig object-georiënteerd opgezet, en goed uitbreidbaar. Versie 2.011 definieert 95 objecten en ruim 2400 regressie-tests.

Wensen

Hoewel Mail::Box al een van de grotere Perl modules is, is deze nog verre van af. De verbeteringen dienen op twee fronten plaats te vinden:

  1. kwaliteitsverbetering, en
  2. uitbreiding van functionaliteit.

Kwaliteitsverbetering

Met betrekking tot de kwaliteitsverbetering staan de volgende punten op de wensenlijst:

de modules moeten worden gecheckt tegen de RFCs,
De code is nu gebaseerd op kennis uit de oude modules, gebruikerservaring van de auteur en klachten van gebruikers. Dat is een redelijke, maar zeker niet ideale basis voor goede software;
de documentatie dient uitgebreid en gecorrigeerd te worden,
Er is al veel documentatie geschreven tijdens de ontwikkeling van de module tot diens huidige staat. Echter, ondertussen zijn ook flink veel verbetering doorgevoerd die niet op alle plekken in de documentatie zijn doorgedrongen. Alle tekst moet nog eens door de molen;
betere ondersteuning op meerdere platformen,
module werkt onder UNIX/Linux, Mac OS X en Windows. Bij de laatste twee zijn er nog wel enkele beperkingen. Onder andere het versturen van e-mail vanuit eigen applicaties is bij Windows niet makkelijk te realiseren. Belangrijk is dat de applicatie-schrijvers hier zo min mogelijk rekening mee hoeven te houden. Daarom moet de module meer platform-afhankelijke kennis in zich verzamelen;
een mailing-list voor gebruikersgemeenschap, en
pogingen tot uitfaseren oude Perl modules.

Uitbreidingen

Er zijn veel wensen tot uitbreiding van de module. Een selectie hieruit:

  • Een in C geschreven message parser, om de basis-performance te verbeteren;
  • IMAP, POP en database folder-types ter verbetering de inzetbaarheid;
  • afhandelen van Outlook en andere applicatie-specifieke folders;
  • PGP, GPG en MD5 checking en generatie;
  • een intelligente spam- en virus-filter;
  • conversies HTML en Microsoft Word berichten naar tekst;
  • character-encodings en ISO8859 naar Unicode (vice versa) conversies -- Perl biedt op dit gebied veel hulp;
  • verbeterde procmail ondersteuning;
  • HTML en XML generatie voor het weergeven van mailing-lists als webpagina's;
  • NNTP messages en transport protocollen.

De TODO wensenlijst is nog langer, maar bovenstaande punten staan bovenaan in de wachtlijst. Een aantal uitbreidingen kunnen worden gerealiseerd met gebruikmaking van bestaan (Perl) modules.

Ontwikkelingsvoorstel

De bijdrage die gevraagd wordt van NLnet zal gebruikt worden voor kwaliteitsverbetering, de promotie van de module, en het aantrekken van bijdragen van derden voor deze module.

Geplande kwaliteitsverbeteringen

Alle wensen wat betreft kwaliteitsverbeteringen zullen worden nagestreeft:

  • alle van toepassing zijnde RFCs zullen worden nagelopen, en zo goed mogelijk geïmplementeerd in de bestaande modules;
  • alle documentatie zal worden herlezen, gecorrigeerd en, zo nodig, uitgebreid;
  • een mailinglist die op poten zal worden gezet, met de bijbehorende ruchtbaarheid. Via deze mailing-list zal geprobeerd worden om andere mensen uit te lokken op elkaars vragen te reageren, en elkaar te helpen bij de toepassing van de module. Daarmee wordt de afhankelijkheid van de ontwikkelaar verkleind, wat de levensduur van de module te goede komt;
  • er zullen pogingen worden ondernomen om platform specialisten te werven die Mail::Box op andere platformen dan UNIX/Linux willen supporten en ontwikkelen;
  • poging tot uitfaseren oude Perl modules in overleg met de respectievelijke auteurs; Door oude modules deprecated te maken zullen beginnende ontwikkelaars eerder kiezen voor de Mail::Box module, waardoor er krachtiger applicaties gaan ontstaan. Een flink aantal van de oude modules worden door mijzelf (Mark Overmeer) beheerd, dus daarvoor zal het weinig moeite kosten de beheerder te overtuigen. Bij andere modules zal het meer tijd kosten, mogelijk dat Mail::Box moet worden uitgebreid met compatibiliteitsverbeterende functionaliteit;
  • bug-fixes en dagelijks onderhoud, zoals het afhandelen van vragen van gebruikers.

Geplande promotie

Naast de implementatie zal ook aandacht worden besteed aan promotie van de software. De software wordt verspreid via

  • het gebruikelijke Perl software-archief CPAN.
  • alwaar de module momenteel ook al te vinden is,
  • onder GPL en de gebruikelijke Perl's Artistic Licence,
  • op momenten dat er voldoende wijzigingen zijn -- normaliter bijna wekelijks een nieuwe release.

Daarnaast via
  • een presentatie op SANE2002, 31 mei 2002 te Maastricht (al geaccepteerd);
  • een presentatie op de Europese Perl Conferentie (YAPC::Europe) te München in september 2002 (onder voorbehoud van acceptatie);
  • bijdragen op de Perl's nieuws-site use.perl.org en het kwaliteitsverbeteringsproject p5ee.perl.org.

Uitbreidingen

De aktiviteiten ondernomen binnen dit Mail::Box-project voor NLnet zullen zo veel mogelijk worden gericht op het verleiden van andere personen tot het leveren van bijdragen aan de module, zodat meer mensen kennis krijgen van de software. Daarmee wordt de module volwassener, en wordt de continuïteit van de module verbeterd. Er moeten dus meerdere ontwikkelaars komen.

Momenteel komen er structurele bijdragen van een Amerikaan (voornamelijk met betrekking tot documentatie en software ontwerp) en een Duitse student (voorbeeldscripts en testen onder Windows). Daarnaast ontwikkelt en andere Duitser een grafische e-mail lezer (MUA) op basis van de module. Deze hulpvaardige ontwikkelaars hebben zich niet vastgelegd aan het project.

Geplande tijdsduur

Voor de volgende werkzaamheden is momenteel tijd gereserveerd:

RFC vergelijking en correcties 12 MD
Documentatie verbetering 5 MD
Opzetten en promotie mailinglist 2 MD
Platform onafhankelijkheid 10 MD
Afhandelen problemen en patches 7 MD
C Parser 5 MD
IMAP implementatie 10 MD
Presentatie en paper SANE2002 7 MD
Presentatie en paper YAPC::Europe 7 MD
Totaal: 65 MD
(MD = Mensdagen)

Tijdsplanning

De onderstaande grafiek geeft het geplande verloop van het project weer.

Verklaring van de cijfers:
  1. indienen proposals voor YAPC::Europe.
  2. contacten leggen met auteurs van IMAP gerelateerde modules en/of applicaties om te kijken in hoeverre ze hun software willen baseren op Mail::Box. Eventueel actief iemand opsporen die een toegesneden IMAP implementatie wil gaan maken.
  3. IMAP implementatie RFC die de kennis van bestaande modules combineert en het interface naar Mail::Box vastlegt.
  4. Ijkpunt IMAP voortgang. Als er ondertussen een implementatie is dan zal deze voor verschillende IMAP servers moeten worden getest. Er moeten vrijwilligers worden gevonden om dit te doen.
  5. Release van de IMAP implementatie.