All mail clients suck. More or less.



Source Code

Project Page



Introduction to Mutt-Guile

The Mutt-Guile projects aims at bringing the power of Scheme using Guile (and potentially of other extension languages such as Python) to the Mutt mail-user-agent. In doing this, we hope to allow users to quickly write new features for their MUA, or change the behavior of existing built-in features.

Development started in September 2003. As a "proof of concept", a number of additional features have been developed using Guile (see the documentation section). Allister's Wiki contains additional information, including a wish list.

License : GNU General Public License V2 or later


Mutt-Guile is under development. Although it is already possible to implement exciting features in Scheme for Mutt-Guile, there is still some ground work to be done before it really becomes idylic. This section summarizes the roadmap in the design and implementation of Mutt-Guile.

  • Alpha-1 (released in November 2003) exposes about twenty functionnalities that may be customized by Scheme code and a number of facilities for handling messages. Customizable features include message scoring, message composition, etc.
  • Alpha-2 (January 2004?) should expose features related to mailbox handling (opening, syncing, etc.) and message contents handling (obtaining the contents stream for a message, building a new message and assigning it a new stream from which its contents should be read when it is sent, etc.). Exporting these features to the extension language in a clean way (i.e. with a nice and clear API) requires some groundwork, namely the redesign of the stream abstraction (currently known as the MESSAGE structure) among other things.
  • The partial redesign of some particular points for Alpha-2 should bring us to a cleaner object-oriented API for manipulating mailboxes, messages, and so on. Ideally, this API will be close to that of the GNU Mailutils framework and it might make some sense to use it instead of the original Mutt code (reducing code complexity, provide new features such as NNTP, etc.).
  • At some point in time, we'll have to consider using GOOPS classes for representing data types. This would allow to easily write new mailbox types, for instance, my just specializing some <mailbox> class methods. Hopefully, at this time (June 2017?), this MUA will have become the one hype thing every geek wants...
Don't forget to subscribe to mutt-guile-devel to be part of this wonderful adventure!


Not much documentation so far. See the automatically generated Automagic User's Reference Manual to see the whole new features that were added to Mutt using Guile.

The mutt-guile-devel public mailing-list discusses the design and implementation issues for Mutt-Guile. You may subscribe from this page.

Source Code

The latest release dates back to November, 3rd, 2003 and is called alpha-1 (patch against Mutt 1.5.4i, announce). You may also download it from GNUnet at : gnunet://afs/F98E02E39A0EFDB5237640EEE609EFDFBC0B638C.3EC25A65527CDF9E3228625ECE3849D13A1A6BA3.33B7BBF8.1902521. MD5 sum for the full-source tarball is : 4cd6a92d6d801c20892f4c16cb373184.

The latest and greatest pieces of code may be obtained by downloading the nightly CVS snapshot. Additionnally, the Savannah's project page contains instructions for CVS access.


The design of these webpages was greatly inspired by the GNU Hurd webpages. ;-)

Please send questions to Ludovic Courtès <ludo -at->.

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

$Id: index.html,v 1.6 2004/03/28 14:50:56 civodul Exp $