# HG changeset patch # User markus schnalke # Date 1342046381 -7200 # Node ID 05a243dffaca0d4c6031093beb0b8fdaa128fbb0 # Parent a75de0da2fb7f00ac4ee4d6db48364cd3891c4db Added refs to the Preface; splitted the bib. diff -r a75de0da2fb7 -r 05a243dffaca bib --- a/bib Thu Jul 12 00:19:09 2012 +0200 +++ b/bib Thu Jul 12 00:39:41 2012 +0200 @@ -1,7 +1,3 @@ -%L web:nmh -%T Website of nmh -%O \f(CW\s-1 http://nmh.nongnu.org\s0 - %A Markus Schnalke %T masqmail %I Ulm University of Applied Sciences @@ -17,17 +13,22 @@ %O \f(CW\s-1 http://marmaro.de/docs/studium/unix-phil/\s0 %K term paper +%L CS2012-04 %A Markus Schnalke %T mmh -%I CCC Ulm ChaosSeminar -%D 2012 -%O \f(CW\s-1 http://ulm.ccc.de/ChaosSeminar/2012/04_mmh\s0 +%S ChaosSeminar +%I CCC Ulm +%D April 2012 +%O \f(CW\s-1 http://ulm.ccc.de/ChaosSeminar/2012/04_mmh \s0 -%L WP:UP -%A Wikipedia, The Free Encyclopedia -%T Unix philosophy -%D Version of 2010-03-21 17:20 UTC -%O \f(CW\s-1 http://en.wikipedia.org/w/index.php?title=Unix_philosophy&oldid=351189719\s0 +%L GPN12 +%A Markus Schnalke +%T meillo's mail handler +%S Gulaschprogrammiernacht 12 +%I Entropia e.V. CCC Karlsruhe +%D June 2012 +%O \f(CW\s-1 https://entropia.de/GPN12:meillo%27s_mail_handler \s0 +%K gpn mmh %A Michael S. Mahoney %T The UNIX Oral History Project @@ -60,12 +61,6 @@ %D 1999 %O \s-1ISBN\s0: 0-201-61586-X -%L ISO\^9126 -%I International Organization for Standardization -%T ISO Standard 9126: Software Engineering \(en Product Quality, part 1 -%C Geneve -%D 2001 - %A Jason Aughenbaugh %A Jonathan Jessup %A Nicholas Spicher @@ -121,20 +116,6 @@ %P mail(1) %O \f(CW\s-1 http://cm.bell-labs.com/cm/cs/who/dmr/pdfs/man12.pdf\s0 -%L MH -%A \s-1MH\s0/nmh workers -%T \s-1MH\s0/nmh Documentation -%P mh-profile(5), mh-sequence(5) -%O Distributed with nmh-1.3. Online in possibly different versions: - \f(CW\s-1 http://linux.die.net/man/5/mh-profile\s0 - http://linux.die.net/man/5/mh-sequence -%K manual pages man page - -%A Gunnar Ritter -%T mail, Mail, mailx, nail-history notes -%D 2007 -%O \f(CW\s-1 http://heirloom.sourceforge.net/mailx_history.html\s0 - %A Willis H. Ware %T RAND and the Information Evolution: A History in Essays and Vignettes %D 2008 @@ -159,37 +140,6 @@ %O \s-1ISBN\s0: 0-13-516972-0 %K korn shell -%L mail:\|mta-mua -%H Thread with the subjects: -%J nmh-workers mailing list -%T nmh\ @\ gsoc'', ``external MTA'' and - ``should nmh be an MTA or an MUA? -%D January 2010 -%O \h'\\n(.xu-5n' \f(CW\s-1 http://www.mail-archive.com/nmh-workers@nongnu.org/msg01876.html\s0 - -%L mail:\|mmh-ann -%A Markus Schnalke -%J nmh-workers mailing list -%T Experimental version: mmh -%D December 8 2011 -%O \h'\\n(.xu-5n' \f(CW\s-1 http://www.mail-archive.com/nmh-workers@nongnu.org/msg02503.html\s0 -%K mmh announce - -%L mail:\|edginess -%A Paul Vixie -%J nmh-workers mailing list -%T edginess -%D December 26 2011 -%O \h'\\n(.xu-5n' \f(CW\s-1 http://www.mail-archive.com/nmh-workers@nongnu.org/msg02582.html\s0 - -%L mail:\|attach -%A Markus Schnalke -%J nmh-workers mailing list -%T [patch] snapshot of my MIME handling improvments -%D November 13 2010 -%O \h'\\n(.xu-5n' \f(CW\s-1http://lists.nongnu.org/archive/html/nmh-workers/2010-11/msg00111.html\s0 -%K attachment proposal - %A Brian W. Kernighan %A Dennis M. Ritchie %T The C Programming Language @@ -279,15 +229,3 @@ %C New York %K saint exupery -%L web:\|wolter -%A Jan Wolter -%T DBM Hash Libraries -%B Unix Incompatibility Notes -%D 2000\(en2004 -%O \f(CW\s-1http://www.unixpapa.com/incnote/dbm.html\s0 - -%L web:\|rickert -%A Neil Rickert -%T Neil Rickert's mh (nmh) scripts -%O \f(CW\s-1 http://faculty.cs.niu.edu/~rickert/mh/\s0 -%K mhsign mhpgp diff -r a75de0da2fb7 -r 05a243dffaca discussion.roff --- a/discussion.roff Thu Jul 12 00:19:09 2012 +0200 +++ b/discussion.roff Thu Jul 12 00:39:41 2012 +0200 @@ -3535,7 +3535,7 @@ ignores the profile, as quoted by Jeffrey Honig, would have become possible: .[ -nmh-workers post profile +nmh-workers honig post profile .] .QS when you run mh commands in a script, you want all the defaults to be diff -r a75de0da2fb7 -r 05a243dffaca intro.roff --- a/intro.roff Thu Jul 12 00:19:09 2012 +0200 +++ b/intro.roff Thu Jul 12 00:39:41 2012 +0200 @@ -1,6 +1,7 @@ .RN 1 +.H0 "Introduction +.Id introduction -.H0 "Introduction .P MH is a set of mail handling tools with a common concept, similar to the Unix tool chest, which is a set of file handling tools with a common @@ -16,10 +17,10 @@ .H1 "MH \(en the Mail Handler +.Id mh .P MH is a conceptual email system design and its concrete implementation. Notably, MH had started as a design proposal at RAND Corporation, -.\" XXX ref to rand corp. where the first implementation followed later. In spirit, MH is similar to Unix, which influenced the world more in being a set of system design concepts @@ -68,6 +69,7 @@ However, the development was revived in December 2011 and stayed busy since then. + .U2 "Concepts .P MH consists of a set of tools, each covering a specific task of @@ -174,7 +176,8 @@ one needs to know the reasons behind them. This section explains the background. .P -MH predates the Internet; it comes from times before networking was universal, +MH predates the Internet; +it comes from times before networking was universal, it comes from times when emailing was small, short and simple. Then it grew, spread and adapted to the changes email went through. Its core-concepts, however, remained the same. @@ -235,24 +238,25 @@ .H1 "mmh .P -.\" XXX which version did I ``fork''? I started to work on my experimental version in October 2011, -at a time when there had been no more than three commits to nmh -since the beginning of the year. +basing my work on nmh version \fInmh-1.3-dev\fP. +At that time no more than three commits were made to nmh +since the beginning of the year, the latest one being +.Ci a01a41d031c796b526329a4170eb23f0ac93b949 +on 2011-04-13. In December, when I announced my work in progress on the nmh-workers mailing list, .[ nmh-workers mmh announce December .] -nmh's community became active, too. +nmh's community became active, all of a sudden. This movement was heavily pushed by Paul Vixie's ``edginess'' comment. .[ nmh-workers vixie edginess .] After long years of stagnation, nmh became actively developed again. -Hence, while I was working on mmh, the community was once more working -on nmh, in parallel. -.\" XXX interaction between nmh and mmh +Hence, while I was working on mmh, the community was working on nmh, +in parallel. .P The name \fImmh\fP may stand for \fImodern mail handler\fP, because the project tries to modernize nmh. @@ -310,8 +314,9 @@ Today's pre-packaged software components encourage this model. Mmh is a way to go for this approach. .P -It is worthwhile to fork nmh for the development of mmh, because -the two projects focus on different goals and differ in fundamental questions. +It is worthwhile to fork nmh for the development of mmh, +because the two projects focus on different goals and differ in +fundamental questions. The nmh community's reluctance regarding change conflicts with my strong desire for it. In developing a separate experimental version new approaches can @@ -329,53 +334,53 @@ .P Any effort needs to be targeted towards a specific goal in order to be successful. -Following is a description of imagined typical mmh users. -Mmh should satisfy their needs. -.\" XXX Remove the next sentence? +Therefore, a description of an imagined typical mmh user follows. +Mmh should satisfy his needs. Actually, as mmh is my personal version of MH, this is a description of myself. +Writing software for oneself is a reliable way to produce software +that matches the user's desires. .P -The target users of mmh like Unix and its philosophy. -They appreciate to use programs that are conceptionally appealing. -They are familiar with the command line and enjoy its power. -They are at least capable of shell scripting and want to improve their +The target user of mmh likes Unix and its philosophy. +He appreciates to use programs that are conceptionally appealing. +He is familiar with the command line and enjoys its power. +He is capable of shell scripting and wants to improve his productivity by scripting the mail system. -They use modern email features, such as attachments, +He uses modern email features, such as attachments, non-ASCII text, digital signatures and message encryption in a natural way. -They are able to setup email system components besides mmh, -and actually like to have the choice to pick the ones they prefer. -They have a reasonably modern operating system that complies to the +He is able to set up mail system components, +and like to have the choice to pick the ones he prefers. +He has a reasonably modern operating system that complies to the POSIX and ANSI C standards. .P -The typical users invoke mmh commands directly in an interactive -shell session, but they use them to automate mail handling tasks as well. -Likely, they run their mail setup on a server machine, -to which they connect via ssh. -They might also have local mmh installations on their workstations, -where they tend to work with mmh directly in the shell instead +The typical user invokes mmh commands directly in an interactive +shell session, but he uses them to automate mail handling tasks as well. +Likely, he runs his mail setup on a server machine, +to which he connects via ssh. +He might also have a local mmh installation on his workstation. +Still, he tend to use mmh directly in the shell instead of using graphical front-ends. -They definitely want to be flexible and thus be able to change -their setup to suit their needs. +He definitely wants to be flexible and thus be able to change +his setup to suit his needs. .P -.\" XXX themself vs. themselves -Typical mmh users are programmers themselves. -They like to, occasionally, take the opportunity of Free Software to put -hands on and get involved in the software they use. -Hence, they like small and clean code bases and care for code quality. -In general, they believe that: +The typical mmh user is a programmer. +He likes to, occasionally, take the opportunity of free software to put +hands on and get involved in the software he uses. +In consequence, he likes small and clean code bases and cares for +code quality. +In general, he believes that: .BU -Elegance \(en i.e. simplicity, clarity and generality \(en -is most important. +The elegance of source code is most important. .BU -Concepts are more important than the concrete implementation. +Concepts are more important than concrete implementations. .BU -Code optimizations for anything but readability should be avoided -if possible. +Code optimizations for anything but readability should be avoided. .BU Having a lot of choice is bad. .BU Removed code is debugged code. + .U2 "Goals .P The general goals for the mmh project are the following: diff -r a75de0da2fb7 -r 05a243dffaca mail.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mail.bib Thu Jul 12 00:39:41 2012 +0200 @@ -0,0 +1,48 @@ + +%L mail:\|mta-mua +%H Thread with the subjects: +%J nmh-workers mailing list +%T nmh\ @\ gsoc'', ``external MTA'' and + ``should nmh be an MTA or an MUA? +%D January 2010 +%O \h'\\n(.xu-5n' \f(CW\s-1 http://www.mail-archive.com/nmh-workers@nongnu.org/msg01876.html\s0 + +%L mail:\|mmh-ann +%A Markus Schnalke +%J nmh-workers mailing list +%T Experimental version: mmh +%D December 8 2011 +%O \h'\\n(.xu-5n' \f(CW\s-1 http://www.mail-archive.com/nmh-workers@nongnu.org/msg02503.html\s0 +%K mmh announce + +%L mail:\|edginess +%A Paul Vixie +%J nmh-workers mailing list +%T edginess +%D December 26 2011 +%O \h'\\n(.xu-5n' \f(CW\s-1 http://www.mail-archive.com/nmh-workers@nongnu.org/msg02582.html\s0 + +%L mail:\|attach +%A Markus Schnalke +%J nmh-workers mailing list +%T [patch] snapshot of my MIME handling improvments +%D November 13 2010 +%O \h'\\n(.xu-5n' \f(CW\s-1http://lists.nongnu.org/archive/html/nmh-workers/2010-11/msg00111.html\s0 +%K attachment proposal + +%L mail:\|levine +%A David Levine +%J nmh-workers mailing list +%T nmh `post' doesn't read profile, fileproc ignored +%D January 4 2012 +%O \h'\\n(.xu-5n' \f(CW\s-1 http://lists.nongnu.org/archive/html/nmh-workers/2012-01/msg00016.html \s0 +%K post profile reading + +%L mail:\|honig +%A Jeffrey Honig +%J nmh-workers mailing list +%T nmh `post' doesn't read profile, fileproc ignored +%D January 2 2012 +%O \h'\\n(.xu-5n' \f(CW\s-1 http://lists.nongnu.org/archive/html/nmh-workers/2012-01/msg00005.html \s0 +%K post profile reading + diff -r a75de0da2fb7 -r 05a243dffaca makefile --- a/makefile Thu Jul 12 00:19:09 2012 +0200 +++ b/makefile Thu Jul 12 00:39:41 2012 +0200 @@ -2,12 +2,13 @@ CHAPS = style front.roff dedication.roff toc.roff \ preface.roff intro.roff discussion.roff summary.roff tools.roff \ refs.roff official.roff colophon.roff +BIB = bib *.bib PDFFLAGS = -sPAPERSIZE=a4 -dPDFSETTINGS=/prepress -REFER = refer -n -p bib -p rfcs -e -P -sLAD -l,2 -k +REFER = refer -n -p bib -p mail.bib -p web.bib -e -P -sLAD -l,2 -k all: $(NAME).ps -$(NAME).ps: $(CHAPS) makefile bib rfcs toc.ig refs.ig +$(NAME).ps: $(CHAPS) makefile $(BIB) toc.ig refs.ig export TROFFONTS=fonts;\ soelim $(CHAPS) | $(REFER) | \ tbl | grap | pic | troff -Tps -ms 2>err.ig | dpost >$@ diff -r a75de0da2fb7 -r 05a243dffaca preface.roff --- a/preface.roff Thu Jul 12 00:19:09 2012 +0200 +++ b/preface.roff Thu Jul 12 00:39:41 2012 +0200 @@ -1,12 +1,23 @@ .H0 "Preface" no .P -I have discovered the mail client \fInmh\fP in fall 2009. -At that time I used \fImutt\fP, as many advanced Unix users do. +I have discovered the mail client \fInmh\fP +.[ +nmh website homepage +.] +in fall 2009. +At that time I used \fImutt\fP, +.[ +mutt website +.] +as many advanced Unix users do. When I read about nmh, its concepts convinced me at once. The transition from mutt to nmh was similar to beginning with file management in the Unix shell when being used to the \fImidnight commander\fP, +.[ +midnight commander website +.] or like starting with vi when being used to modeless editors. Such a change is not trivial, but, in being convinced by the concepts and by having done similar transitions for file management @@ -22,8 +33,19 @@ expectations were rather common for modern emailing. As a computer scientist and programmer, I wanted to improve the situation. .P -In spring 2010, I sent a message to the \fInmh-workers\fP mailing list, -asking for the possibility to offer a Google Summer of Code project for me. +In spring 2010, I sent a message +.[ +nmh-workers gsoc +.] +to the \fInmh-workers\fP mailing list, +.[ +nmh-workers mailing list website +.] +asking for the possibility to offer a Google Summer of Code +.[ +google summer of code website +.] +project for me. Participating in the development of nmh in this manner appeared attractive to me, because I would have been able to work full time on nmh. Although the nmh community had reacted generally positive to the suggestion, @@ -35,7 +57,7 @@ .[ nmh-workers thread mta mua .] -I argued for the MTA of nmh to be removed. +I argued for the Mail Transfer Agent of nmh to be removed. In this fundamental question, my opinion differed from the opinion of most others. Sadly, besides the discussions, hardly any real work was done. @@ -48,7 +70,7 @@ This brought me back to nmh. Richard Sandelman, an active nmh user, took care of the official basis. Juan Granda, an Argentine free software developer, -provided a computer with Internet connection. +organized a computer with Internet connection. Thanks to them, I was able to work on nmh during my three-month stay in Santiago del Estero, Argentina. Quickly it became obvious that I would not succeed with my main goal, @@ -60,7 +82,7 @@ Instead, I improved the code base as I read through it. I found minor bugs for which I proposed fixes. Additionally, I improved the documentation in minor ways. -When I started with larger code changes, +When I started to work on larger code changes, I had to discover that the community was reluctant to change. Its wish for compatibility was much stronger than its wish for convenient out-of-the-box setups \(en in contrast to my opinion. @@ -72,14 +94,15 @@ and I still was convinced that I wanted to continue to do so. .P Another half year later, the end of my studies came within reach. -I needed a topic for my master's thesis. +I needed to choose a topic for my master's thesis. Without question, I wanted to work on nmh. But not exactly on nmh, because I had accepted that its community has different goals than I have. Working on nmh would result in much discussion and, in consequence, little progress. After careful thought, I decided to start an experimental version of nmh. -I wanted to implement my own ideas of how an MH-like system should look like. +I wanted to implement my own ideas of how an MH-like system should +look like. I wanted to create a usable alternative version to be compared with the present state of nmh. Eventually, my work would be proven successful or not. @@ -88,8 +111,11 @@ .U2 "Focus of this Document .P This document explains the design goals and implementation decisions -for mmh. -.\" XXX mmh taucht hier zum ersten mal auf. +for mmh, +.[ +mmh website homepage +.] +an experimental version of nmh. It discusses technical, historical, social and philosophical considerations. On the technical side, this document explains how an existing project was streamlined by removing rough edges @@ -114,7 +140,8 @@ .P The reader is expected to be familiar with Unix, C and emailing. Good Unix shell knowledge is required, because MH relies fundamentally -on the shell. Without the power of the shell, MH becomes a motorcycle +on the shell. +Without the power of the shell, MH becomes a motorcycle without winding roads: boring. Introductions to Unix and its shell can be found in \fIThe UNIX Programming Environment\fP by Kernighan and Pike @@ -145,9 +172,13 @@ because large parts of the source code are old. The reader is expected to know the format of email messages and the structure of email transfer systems, at least on a basic level. -It's advisable to have cross-read the RFCs 821 and 822. -Furthermore, basic understanding of MIME is good to have. +It's advisable to have cross-read RFC\|821 and RFC\|822. +Furthermore, basic understanding of MIME (RFC\|2045\(en2049) +is good to have. The Wikipedia provides good introduction-level information about email. +.[ +wikipedia email +.] .P Frequent references to the Unix philosophy will be made. Gancarz has tried to sum it up in his book @@ -169,11 +200,12 @@ .[ why unix phil still matters schnalke .] -by myself -provides an overview on the philosophy, including a case study of MH. +by myself provides an overview on the philosophy, +including a case study of MH. .P -Although a brief introduction to MH is provided in Chapter 1, the reader -is encouraged to have a look at the \fIMH Book\fP +Although a brief introduction to MH is provided in Section +.Cf mh , +the reader is encouraged to have a look at \fIMH & nmh: Email for Users & Programmers\fP by Jerry Peek. .[ peek mh @@ -204,8 +236,8 @@ a look into the future of the mmh project. .P .I "Italic font -is used to emphasize new terms, and to name software projects and -man pages. +is used to emphasize new terms, and for names of software projects, +literature, and man pages. .CW "Constant width font is used to denote names of programs, files, functions, command lines, code excrepts, program input and output. @@ -216,18 +248,31 @@ .Pn cat , which is in section one of the Unix manual. Internet technologies are specified by \fIRequests for Comments\fP (RFCs). -Throughout the document, they are referenced in this way ``RFC\|822''. +Throughout the document, they are referenced as ``RFC\|821''. A list of relevant RFCs is located at the end of the document. -References to literature are printed in backets, like +Literature is cited in backets, such as .[ ``[ kernighan pike unix programming env -.]]'', within the text. -The full references are collected at the end of the document. +.]]''. +Citations of email messages and websites are in the same style +but distinguished by a prefix. +For example: +.[ ``[ +website mmh +.]]'' +and +.[ ``[ +nmh-workers mmh announce +.]]''. +All references are collected at the end of the document. .P This document describes practical programming work. -The code of mmh is managed by the +The code of mmh is managed with the .Pn git version control system. +.[ +git website +.] All code changes were checked in. In the discussions, references to corresponding code changes are printed as ``\c @@ -239,9 +284,15 @@ replacing `\f(CWXXX\fP' with the concrete hash value or any unique prefix. In this example: .Cl "git show 1a2b3c4" . -At the time of writing, changesets can be looked up online this way: +At the time of writing, changesets can be looked up online at: .CW "http://git.marmaro.de/?p=mmh;a=commitdiff;h=XXX" . But as we all know, URIs are always at risk to change. +.P +Whenever lines of code were determined, David A. Wheeler's \fIsloccount\fP +.[ +sloccount website +.] +was used to measure the amount in a comparable way. .U2 "Acknowledgments diff -r a75de0da2fb7 -r 05a243dffaca web.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web.bib Thu Jul 12 00:39:41 2012 +0200 @@ -0,0 +1,75 @@ + +%L web:\|wolter +%A Jan Wolter +%T DBM Hash Libraries +%B Unix Incompatibility Notes +%D 2000\(en2004 +%O \f(CW\s-1http://www.unixpapa.com/incnote/dbm.html\s0 + +%L web:\|rickert +%T Neil Rickert's mh (nmh) scripts +%O \f(CW\s-1 http://faculty.cs.niu.edu/~rickert/mh/\s0 +%K mhsign mhpgp + +%L web:\|nmh +%H Website of +%T nmh +%O \f(CW\s-1 http://nmh.nongnu.org \s0 +%K homepage + +%L web:\|mmh +%H Website of +%T mmh +%O \f(CW\s-1 http://marmaro.de/prog/mmh/ \s0 +%K homepage + +%L web:\|mutt +%H Website of +%T mutt +%O \f(CW\s-1 http://www.mutt.org \s0 + +%L web:\|git +%H Website of +%T git +%O \f(CW\s-1 http://git-scm.com \s0 + +%L web:\|sloccount +%H Website of +%T sloccount +%O \f(CW\s-1 http://www.dwheeler.com/sloccount/ \s0 + +%L web:\|wp-email +%T Email +%A Wikipedia +%O \f(CW\s-1 http://en.wikipedia.org/wiki/Email \s0 + +%L web:\|gsoc +%H Website of +%T Google Summer of Code +%O \f(CW\s-1 http://code.google.com/soc/ \s0 +%K gsoc + +%L web:\|mc +%H Website of +%T midnight commander +%O \f(CW\s-1 http://code.google.com/soc/ \s0 + +%L web:\|UP +%A Wikipedia, The Free Encyclopedia +%T Unix philosophy +%D Version of 2010-03-21 17:20 UTC +%O \f(CW\s-1 http://en.wikipedia.org/wiki/Unix_philosophy \s0 + +%L web:\|mailx +%A Gunnar Ritter +%T mail, Mail, mailx, nail-history notes +%D 2007 +%O \f(CW\s-1 http://heirloom.sourceforge.net/mailx_history.html \s0 + +%L web:\|nmh-workers +%H Website of +%T nmh-workers mailing list +%O \f(CW\s-1 https://lists.nongnu.org/mailman/listinfo/nmh-workers\s0. + Alternative mailing list archive: + \f(CW\s-1 http://www.mhonarc.org/archive/html/nmh-workers/ \s0 +