Mutt vs Slrn - a comparison

Latest change: Mon Jan 26 05:05:05 CET 2004

mutt- [2003-11-05] vs slrn- [2003-08-27]

Mutt and Slrn both handle messages - but of different kinds. Mutt handles messages transported via SMTP while Slrn handles messages transported via NNTP. However, there exist at least four different NNTP patch sets which make Mutt a newsreader, too. Slrn can store messages in folders which are basically mailbox files and will make use of the mailer to reply to messages in private.

So both Mutt and Slrn handle messages in a similar manner. This similarity and their use of a text interface therefore make many users who use both wish that the two programs should converge in their features. It is therefore quite likely that someone might come up with a synthesis of the two.

Before one starts to write a combined program one should know how mutt and slrn differ. So here it is: A comparison of features of Mutt and Slrn.

This comparison was written from experience mostly with "if this was mutt/slrn then now i could do..." in mind. So this comparison is probably missing a few features. Please let me know what is missing - send me a mail!

Sven Guckes
Berlin, Germany
December 2003


Winner Feature Mutt Slrn
MUTT+ Attachments
MIME support
Mutt has MIME support and therefore knows how to handle multipart messages with attachments. It allows to handle each attachment individually (copy, save, pipe, delete). Slrn does not have MIME support, which is a problem with pgp signed messages. Following up to a signed message therefore requires extra editing.
MUTT+ Text Coloring
Mutt can colorize header lines (one color combination for the complete line only, though) and arbitrary text in the body. You can give an extra color to quoted text, one for each level up to nine levels, and a color to the signature. Slrn allows one color combination for the complete header only. There are extra colors for quoted text and the signature - but that's it.
MUTT+ Command Line Mutt has a built-in command line (like e.g. less, nn, screen, and vi) which allows the user to directly change the values of options. This makes it easy to test a setup without having to use extra setup files and restarting the program. Slrn has a command line which interprets slang functions (triggered by "CTRL-X ESC".) (TODO: evaluate what is possible. expansion of command names, option names, and values?)
MUTT+ Display Filter
[Display of Message]
Mutt allows the use of a filter to change the text of a message before it displays its result. This can be used to make the following changes: delete advertisement and disclaimers, maillist footers and signatures, delete long quoted text like fullquotes, hide the output of pgp decryption, squeeze multiple empty lines into one empty line, and correct misspelled words. Slrn does not employ an extermal display_filter by default. However, there is a macro which allows this. (TODO)
MUTT+ Online Help
Key Binding
Mutt has a context-sensitive online help menu for key bindings for each menu. It shows the key (or key sequence) which is bound, then the command name (or sequence of keys which make up the commands), and a short description. When you change a key binding or macro then the new binding will be displayed in the help menu immediately. Also, you can search forward/backward through the help text for strings; all matches on the next page are then shown in inverse. Slrn's help is simple static text. Changing key bindings does not affect it. To see your key bindings look at your setup file. (So you had better order your setup file nicely). When you change your key bindings during run time then be prepared to have a good memory. Also, unlike Mutt, Slrn has no search feature for its help.
MUTT+ ":source filename" Mutt allows the main setup file to read in other setup files via "source filename". This allows for some modularity. Users can share setup files more easily that way. For example, they could share the key bindings and color setup.
  source /etc/mutt/key_like_pine
  source ~/.mutt/gpg.rc
  source ~user/.mutt/color
Also, typing ":source filename" on the command line lets you load another setup file into the program which changes an arbitrary amount of options, e.g. a completely new setup for keys.
Slrn allows "include filename". However, you cannot do this from a command line, so you must quit Slrn and restart it to see effects come alive.
MUTT+ Limited View +
Search in message bodies
Mutt allows a "limited" view (a subset) of all messages, i.e. it will show you only those which match a given pattern. Mutt's pattern language includes Boolean ("and", "or", "not") operations. Filtering makes it easy to find related messages and read only those which interest you at the moment. One of these patterns can restrict the display to messages whose body contains a given text string. Slrn takes messages from a server, so it only knows about the information within the *header* of messages. So by default there is no command which allows to search all message bodies as this will force a download of all messages first. (However, the macro from "macros/" makes this possible.) And as Slrn is a newsreader it will not show you any messages which you have already read (unless you enter a group with "ESC 1 RET" which allows you to see the last N messages). Still, it will show you *all* unread messages and not allow to show only a part of them all.
MUTT+ Reverse Alias
[Display of Index]
Mutt can define aliases for addresses and will show you the name you have chosen for an address instead of the one the sender's name put in the From: line (even if there does not exist one at all). That way you get to see the name in the message index rather than the name he had chosen to send out. This name will also be shown in the attribution line when citing some text (this can be a revelation as well as a curse ;-). Slrn will show whatever is given in the From: line. It is sometimes hard to recognize someone that way.
MUTT+ Sort Dialog
[Display of Index]
Mutt allows selection of the sort order via a one-line dialog. But you have to use another command to get reverse sorting (would be nicer if it allowed to reverse a sort method). Slrn sports a dialog box with twelve sort methods - but you have to read the list to choose the right one. No simple dialog offered here. And it does not allow you to "sort by sender (name)".
Tags + Tag-Prefix
[Index Commands]
Mutt can "tag" messages (individually and by pattern) and then apply some command (eg copy,delete,save) to all tagged messages by using the "tag-prefix" command before that. Slrn can tag messages, too, but only certain commands can be applied to the messages. However, Slrn will also remember the order in which the tags had been applied so the next command will use the messages in the given order (useful for decoding binaries which had been split up).
SLRN+ Quoted Text
[Display of Message]
Mutt can hide all quoted text - but hidden text is gone completely, leaving no context to the added text at all. Slrn can hide quoted text - but it will keep the first line so you can still get one line of context. This is quite useful when the sender gives the current topic in the first line, e.g.,
> [mutt vs slrn - comparison]
> isn't this comparing apples and oranges?
SLRN+ New Messages Only
[Display of Index]
Mutt opens a folder and shows all messages - unless you automatically "push" a limit like "~N" into its input stream with a folder-hook. Scoring can help here, too. Slrn shows only the new messages of a newsgroup. This is nice because your view is not hampered by all those messages which you had already "read". The scoring mechanism seems to be much faster than mutt's built-in scoring and helps getting rid of messages you don't care about *really* fast.
SLRN+ Get message by MID
[Index Command]
Mutt can open complete folders - but cannot get a message by Message-ID (MID) from a server. Slrn can get messages by MID. Thus it can point at messages by their MID in further messages which do not belong to the current thread and without making it dependent on a newsserver.
SLRN+ Get parent +
Reconstruct thread
[Index Command]
Mutt can jump to the "parent" (the preceding message to the current message) (mind you, the command "parent-message" is unbound by default.). But you will have to keep applying it to get to the root message, and this won't find children or siblings, of course. Slrn offers the command "reconstruct-thread" which retrieves *all* articles in which the current message is contained. This can take a while but it is highly useful when you have started in the middle of a complex thread. Much easier than looking at threads using a web browser on
SLRN+ Last Message
[Jump Command]
Mutt forgets which message you had read once you go back to the folder index and move the pointer away. Slrn remembers the last read message and allow you to jump back to it using 'l' (what was that command name again?). So you can switch between the current and the previously seen message by pressing 'l'.
SLRN+ Cycle Index Layour
Mutt requires special macros to cycle a format option within a list of values. Slrn can cycle through a list of views in the group menu with "toggle_group_formats". This is nice a nice way to get a different view of the group list (showing the total number of all available messages or the short description of newsgroups) and simply to show the configurability of slrn.
SLRN+ Show Scores
Mutt cannot tell which color or scoring rule(s) matched to give the current message its color or score. When something goes wrong you must figure it out all by yourself. Slrn shows a list of matching scoring rules for the current message (using "view_scores"), including the score, the filename, and the line number:
.[matched by following scores].
|     1: ~/.slrn.score:206    |
|     1: ~/.slrn.score:628    |
SLRN+ Gated Lists
Sub/Unsub Commands
Mutt can be used to access newsgroups via a mail2news gateway. But this seems a little cumbersome. Slrn can be used to post to mailing lists by accessing a newsserver which is a gateway to the lists. This makes subscription and unsubscription a lot easier as you do not have to find out where to send your sub/unsub message and what kind of message it has to be. Of course your message must be spooled and sent on. See for example the info at about posting.
SLRN+ Scripting Language Mutt does not have an internal langauge. (Alright, it's somewhat configurable - but it's not a "language".) Slrn has a full scripting language under the hood - "slang". This makes Slrn very configurable, especially if you use the "hooks" builtin. Many tasks can be abbreviated using macros. If you want to get an idea how much it can do then you should check out the "mailmode" for the editor "jed" which uses it, too. (By the way, both jed and slrn are from the same author, John E. Davis; he also wrote the pager "most".)
SLRN+ [NEW] Mouse Support Mutt once had support for the mouse - but it was dropped. Slrn has support for the mouse. (Is it any good?)
MUTT/SLRN [NEW] Cross Platform Mutt is available for Windows - but this requires Cygwin and an external SMTP command, too. Slrn's version for Windows seems easier to install. (Can't compare this without Windows, though.)
SLRN+ [NEW] ROT13 Mutt's builtin pager does not have a command to decode ROT13 so you have to pipe the message through an external program to decode the message. (see also: page on rot13) Slrn's builtin pager decodes ROT13 text with the "toggle_rot13" function:
setkey article toggle_rot13 "\eR" % default
setkey article toggle_rot13 "D"
MUTT+ [NEW] Message Flags Mutt can "flag" messages not only as New and "read" but also as "important". And it will keep an 'r' flag on messages you have "replied" to (by adding the line "X-Status: A" to the header on folder updates). Slrn will hide *all* read messages from view. You canot mark messages and thereby keep them. As the messages are stored on the server you cannot modify them, so adding an extra line to remember that you had replied to it is not possible. Idea: Keep an extra file with message numbers and flags.
group: flagA: list of article numbers
group: flagB: list of article numbers


Some more differences (which need to be added to the table):

Some features which need to be added to both programs:


When I am reading newsgroups on with slrn, that is I am actually reading mailing lists then I am usually missing these features of mutt:



SLRN WishList
check this to see where the development of slrn might go.

Sven Guckes