docs/master
changeset 53:01d06ca2eb1b
Rework based on comments by Lydi.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Sun, 20 May 2012 17:34:40 +0200 |
parents | f12b22b0e29a |
children | d9c18bd9ed92 |
files | ch01.roff ch04.roff preface.roff |
diffstat | 3 files changed, 121 insertions(+), 132 deletions(-) [+] |
line diff
1.1 --- a/ch01.roff Sun May 20 12:11:42 2012 +0200 1.2 +++ b/ch01.roff Sun May 20 17:34:40 2012 +0200 1.3 @@ -2,6 +2,12 @@ 1.4 1.5 .H0 "Introduction 1.6 .P 1.7 +MH is a set of mail handling tools with a common concept, similar to 1.8 +the Unix tool chest, which is a set of file handling tools with a common 1.9 +concept. \fInmh\fP is the currently most popular implementation of an 1.10 +MH-like mail handling system. 1.11 +This thesis describes an experimental version of nmh, named \fImmh\fP. 1.12 +.P 1.13 This chapter introduces MH, its history, concepts and how it is used. 1.14 It describes nmh's code base and community to give the reader 1.15 a better understanding of the state from which mmh started off. 1.16 @@ -55,7 +61,7 @@ 1.17 This should be done openly within the Internet community. 1.18 The development of MH at UCI stopped after the 6.8.4 release in 1.19 February 1996, soon after the development of nmh had started. 1.20 -Today, nmh almost completely replaced the original MH. 1.21 +Today, nmh almost completely replaces the original MH. 1.22 Some systems might still provide old MH, but mainly for historical reasons. 1.23 .P 1.24 In the last years, the work on nmh was mostly maintenance work. 1.25 @@ -63,10 +69,9 @@ 1.26 1.27 .U2 "Concepts 1.28 .P 1.29 -MH is a tool chest, modeled after the Unix tool chest. It consists of a 1.30 -set of tools, each covering a specific task of email handling, like 1.31 -composing a message, replying to a message, refiling a message to a 1.32 -different folder, listing the messages in a folder. 1.33 +MH consists of a set of tools, each covering a specific task of 1.34 +email handling, like composing a message, replying to a message, 1.35 +refiling a message to a different folder, listing the messages in a folder. 1.36 All of the programs operate on a common mail storage. 1.37 .P 1.38 The mail storage consists of \fImail folders\fP (directories) and 1.39 @@ -107,11 +112,14 @@ 1.40 As the MH tool chest was modeled after the Unix tool chest, the 1.41 properties of the latter apply to the former as well. 1.42 1.43 +.U2 "A Tour through MH 1.44 +.P 1.45 +XXX cf. peek; why UP still matters; real work. 1.46 1.47 .U2 "Example Session 1.48 .P 1.49 -Following is an example mail handling session with mmh. 1.50 -It should be mostly compatible with nmh and old MH. 1.51 +Following is an example mail handling session. 1.52 +It uses mmh but is mostly compatible with nmh and old MH. 1.53 Details might vary but the look'n'feel is the same. 1.54 .DS 1.55 $ \f(CBinc\fP 1.56 @@ -155,6 +163,8 @@ 1.57 .P 1.58 In order to understand the condition, goals and dynamics of a project, 1.59 one needs to know the reasons. 1.60 +This section explains the background. 1.61 +.P 1.62 MH predates the Internet, it comes from times before networking was universal, 1.63 it comes from times when emailing was small, short and simple. 1.64 Then it grew, spread and adopted to the changes email went through. 1.65 @@ -209,68 +219,49 @@ 1.66 .H1 "mmh 1.67 .P 1.68 I started to work on my experimental version in October 2011, 1.69 -when there were no more than three commits to nmh in the previous nine months.. 1.70 -In December, when I announced my work on the nmh-workers mailing list, 1.71 +at a time when there were no more than three commits to nmh 1.72 +since the beginning of the year. 1.73 +In December, when I announced my work in progress on the 1.74 +nmh-workers mailing list, 1.75 .[ 1.76 nmh-workers mmh announce December 1.77 .] 1.78 -the activity in nmh rose much. 1.79 -Suddenly, the community started to move. 1.80 +nmh's community became active, too. 1.81 This movement was heavily pushed by Paul Vixie's ``edginess'' comment. 1.82 .[ 1.83 nmh-workers vixie edginess 1.84 .] 1.85 -After long years of much stagnation, nmh became actively developed again. 1.86 +After long years of stagnation, nmh became actively developed again. 1.87 Hence, while I was working on mmh, the community was working on nmh, 1.88 in parallel. 1.89 .P 1.90 -The name \fImmh\fP stands for \fImeillo's mail handler\fP, 1.91 -because mmh is my own version of MH. 1.92 +The name \fImmh\fP may stand for \fImodern mail handler\fP, 1.93 +because the project tries to modernize nmh. 1.94 +Personally however, I prefer to call mmh \fImeillo's mail handler\fP, 1.95 +emphasizing that the project follows my visions and preferences. 1.96 (My login name is \fImeillo\fP.) 1.97 -The project follows my personal considerations and preferences. 1.98 -By calling it a personal project, I don't need to justify my decisions, 1.99 -though, still I like to do. 1.100 -This enabled me to follow my vision straightly and thus produce 1.101 -a result of greater pureness. 1.102 -This project model was inspired by the window manager \fIdwm\fP, 1.103 +This project model was inspired by \fIdwm\fP, 1.104 which is Anselm Garbe's personal window manager \(en 1.105 targeted to satisfy Garbe's personal needs whenever conflicts appear. 1.106 -dwm had remained much more focused on its original goals, 1.107 -whereas its community-driven predecessor \fIwmii\fP had 1.108 -grown big and lost it's lean elegance. 1.109 -This should not happen to mmh. 1.110 -.P 1.111 -Mmh also stands for \fImodern mail handler\fP, and this is 1.112 -the variant chosen to entitle this document. One main focus of the 1.113 -project was to modernize nmh. Another main goal is resembled in the 1.114 -name \fIminimized mail handler\fP: Drop any parts that don't add 1.115 -to the main task of mmh, being a conceptionally appealing MUA. 1.116 -.P 1.117 -It should also be noted that \fLstrcmp("mmh","nmh")<0\fP is true. 1.118 -Although mmh bases on nmh, it is likely seen as a step backward. 1.119 -I agree. 1.120 -However, this step backward actually is a step forward, 1.121 -although in a different direction. 1.122 +Dwm had retained its lean elegance and its focused character, whereas 1.123 +its community-driven predecessor \fIwmii\fP had grown fat over time. 1.124 +The development of mmh should remain focused. 1.125 1.126 1.127 -.H1 "This Thesis 1.128 - 1.129 .U2 "Motivation 1.130 .P 1.131 MH is the most important of very few command line tool chest email systems. 1.132 -(There's also \fIim\fP by Tatsuya Kinoshita, 1.133 -which operates on an MH mail storage.) 1.134 Tool chests are powerful because they can be perfectly automated and 1.135 -extended. Tool chests are good back-ends for various sorts of front-ends. 1.136 -They allow multiple front-ends for different special needs 1.137 -to be implemented quickly and without internal knowledge on emailing. 1.138 -Further more, tool chests are much better to maintain than large monolithic 1.139 +extended. They allow arbitrary kinds of front-ends to be 1.140 +implemented on top of them quickly and without internal knowledge. 1.141 +Additionally, tool chests are much better to maintain than monolithic 1.142 programs. 1.143 -As there are few tool chests for emailing and MH-like ones are the most 1.144 -popular among them, they should be developed further to keep their 1.145 +As there are few tool chests for emailing and as MH-like ones are the most 1.146 +popular among them they should be developed further. 1.147 +This keeps their 1.148 conceptional elegance and unique scripting qualities available to users. 1.149 -mmh will create a modern and convenient entry point for new, interested 1.150 -users to MH-like systems. 1.151 +Mmh will create a modern and convenient entry point to MH-like systems 1.152 +for new and interested users. 1.153 .P 1.154 The mmh project is motivated by deficits of nmh and 1.155 my wish for general changes, combined 1.156 @@ -286,7 +277,7 @@ 1.157 In my eyes, MH's concepts could be exploited even better and 1.158 the style of the tools could be improved. Both would simplify 1.159 and generalize the system, providing cleaner interfaces and more 1.160 -software leverage, at the same time. 1.161 +software leverage at the same time. 1.162 mmh is a way to demonstrate this. 1.163 .P 1.164 In providing several parts of an email system, nmh can hardly 1.165 @@ -305,7 +296,6 @@ 1.166 In developing a separate experimental version new approaches can 1.167 easily be tried out without the need to discuss changes beforehand. 1.168 In fact, revolutionary changes are hardly possible otherwise. 1.169 -These reasons support the decision to start mmh as a fork of nmh. 1.170 .P 1.171 The mmh project provides the basis to implemented and demonstrated 1.172 the listed ideas without the need to change nmh or its community. 1.173 @@ -317,6 +307,7 @@ 1.174 in order to be successful. 1.175 Following is a description of the imagined typical mmh user. 1.176 mmh should satisfy his needs. 1.177 +.\" XXX Remove the next sentence? 1.178 Actually, as mmh is my personal version of MH, this is a description 1.179 of myself. 1.180 .P 1.181 @@ -364,7 +355,8 @@ 1.182 Mmh should be stripped down to its core, which is the MUA part of emailing. 1.183 The feature set should be distilled to the ones really needed, 1.184 effectively removing corner-cases. 1.185 -Functions that are not related to the main task should be removed. 1.186 +Parts that don't add to the main task of being a conceptionally 1.187 +appealing MUA should be removed. 1.188 This includes, the MTA and MRA facilities. 1.189 Choice should be reduced to the main options. 1.190 .IP "Modernizing
2.1 --- a/ch04.roff Sun May 20 12:11:42 2012 +0200 2.2 +++ b/ch04.roff Sun May 20 17:34:40 2012 +0200 2.3 @@ -4,6 +4,13 @@ 2.4 Because of several circumstances, my experimental version is rather 2.5 a fork today, although this may change again in the future. 2.6 2.7 -.H1 "Outlook 2.8 .P 2.9 -foo 2.10 +Although mmh bases on nmh, it is likely seen as a step backward. 2.11 +I agree. 2.12 +However, this step backward actually is a step forward, 2.13 +although in a different direction. 2.14 + 2.15 +.P 2.16 +.\" Top candidate for the final sentence: 2.17 +This enabled me to follow my vision straightly and thus produce 2.18 +a result of greater pureness.
3.1 --- a/preface.roff Sun May 20 12:11:42 2012 +0200 3.2 +++ b/preface.roff Sun May 20 17:34:40 2012 +0200 3.3 @@ -1,28 +1,18 @@ 3.4 .H0 "Preface" no 3.5 3.6 .P 3.7 -MH is a set of mail handling tools with a common concept, similar to 3.8 -the Unix tool chest, which is a set of file handling tools with a common 3.9 -concept. nmh is the currently most popular implementation of an 3.10 -MH-like mail handling system. 3.11 -This thesis describes an experimental version of nmh, named \fImmh\fP. 3.12 - 3.13 -.U2 "Background to this Thesis 3.14 -.P 3.15 -I have discovered nmh in September 2009. At that time I used to use the 3.16 -mail client \fImutt\fP, as many advanced Unix users do. 3.17 -As I read about nmh, its concepts had convinced me at once. 3.18 -Learning its different model of email handling had been relatively easy, 3.19 -because my starting situation was being convinced of the concepts. 3.20 +I have discovered the mail client \fInmh\fP in September 2009. 3.21 +At that time I used to use \fImutt\fP, as many advanced Unix users do. 3.22 +When I read about nmh, its concepts had convinced me at once. 3.23 The transition from mutt to nmh was similar to 3.24 -managing files in the Unix shell when being used to graphical file 3.25 -managers, or like editing with vi when being used to modeless editors. 3.26 +managing files in the Unix shell when being used to the 3.27 +\fImidnight commander\fP, 3.28 +or like editing with vi when being used to modeless editors. 3.29 Such a change is not trivial, but in being convinced by the 3.30 concepts and by having done similar transitions for file management 3.31 -and editing already, it was neither too difficult. 3.32 +and editing already, it was not too difficult. 3.33 In contrast, setting up nmh to a convenient state became a tedious task 3.34 that took several months. 3.35 -.P 3.36 Once having nmh arranged to a convenient state, I enjoyed using it 3.37 because of its conceptional elegance and its scripting capabilities. 3.38 On the other hand, nevertheless, it still was 3.39 @@ -35,16 +25,17 @@ 3.40 I wanted to improve the situation. 3.41 .P 3.42 In Spring 2010, I asked on the \fInmh-workers\fP mailing list for the 3.43 -possibility to offer a Google Summer of Code project. 3.44 -Participating in the development this way appeared attractive to me, 3.45 -because it would have been possible to have the project 3.46 -accepted at university. Although generally the nmh community 3.47 -had been positive on the 3.48 -suggestion, the administrative work had been to much, eventually. 3.49 -But my proposal had activated the nmh community. 3.50 +possibility to offer a Google Summer of Code project for me. 3.51 +Participating in the development of nmh this way appeared attractive to me, 3.52 +because I would have been able to work full time on nmh as the project 3.53 +could have been part of my official studies at university. 3.54 +Although the nmh community had been generally positive on the suggestion, 3.55 +the administrative work for a GSoC project had been to much to have 3.56 +it realized. 3.57 +Nontheless, my proposal had activated the nmh community. 3.58 In the following weeks, goals for nmh's future were discussed. 3.59 In these discussions, I became involved in the 3.60 -question whether nmh should be an MTA. 3.61 +question whether nmh should include mail transfer facilities. 3.62 .[ 3.63 nmh-workers thread mta mua 3.64 .] 3.65 @@ -56,51 +47,50 @@ 3.66 .P 3.67 Half a year later, starting in August 2010, 3.68 I took one semester off to travel through Latin America. 3.69 -Within this time, I had to do practical computer work for three months. 3.70 +During my time in Argentina, I planned to work on Free Software. 3.71 This brought me back to nmh. 3.72 -Richard Sandelman, an active nmh user, made it possible for 3.73 -me to work on nmh. Juan Granda, living in Santiago del 3.74 -Estero in Argentina, provided a computer with Internet connection for 3.75 -my work. Thanks to them, I was able to work on nmh during my three-month 3.76 -stay in Argentina. 3.77 -Within this time, I became familiar with nmh's code base and 3.78 -community. I learned how things work. Quickly it became obvious that 3.79 -I wouldn't succeed with my main goal: improving the character 3.80 -encoding handling within the project. One of its ramifications is the 3.81 +Richard Sandelman, an active nmh user, cared for the official basis. 3.82 +Juan Granda, an argentine Free Software developer, 3.83 +provided a computer with Internet connection for my work. 3.84 +Thanks to them, I was able to work on nmh during my three-month 3.85 +stay in Santiago del Estero in Argentina. 3.86 +Quickly it became obvious that I wouldn't succeed with my main goal: 3.87 +improving the character encoding handling within the project. 3.88 +One of its ramifications is the 3.89 missing transfer decoding of quoted text in replies. 3.90 As this is one of the most intricate parts of the system, the goal 3.91 -was simply set too high. Hence, I dropped the original plan. 3.92 -Instead, I improved the code base as I read through it. I found minor bugs 3.93 -for which I proposed fixes to the community. In the same go, I 3.94 -improved the documentation in minor ways. When I started with 3.95 -larger code changes, I had to discover that the community was reluctant 3.96 -to change. Its wish for compatibility was much stronger than its 3.97 +was simply set too high. 3.98 +Instead, I improved the code base as I read through it. 3.99 +I found minor bugs for which I proposed fixes to the community. 3.100 +In the same go, I improved the documentation in minor ways. 3.101 +When I started with larger code changes, 3.102 +I had to discover that the community was reluctant to change. 3.103 +Its wish for compatibility was much stronger than its 3.104 wish for convenient out-of-the-box setups \(en in contrast to my opinion. 3.105 This led to long discussions, again. 3.106 -I came to understand their point of view, but it is different to mine. 3.107 +I came to understand their point of view, but it was different to mine. 3.108 At the end of my three-month project, I had become familiar with 3.109 -nmh's code base and community. I had improved the project in minor ways, 3.110 +nmh's code base and community. 3.111 +I had improved the project in minor ways, 3.112 and I still was convinced that I wanted to go on to do so. 3.113 .P 3.114 -Another half a year later, the end of my studies came within reach. 3.115 +Another half year later, the end of my studies came within reach. 3.116 I needed a topic for my master's thesis. 3.117 No question, I wanted to work on nmh. 3.118 -But well, not exactly on nmh, 3.119 -because I had accepted that the nmh community has different goals 3.120 -than I have. This would result in much discussion and thus little progress. 3.121 +But well, not exactly on nmh, because I had accepted that the 3.122 +nmh community has different goals than I have. 3.123 +This would result in much discussion and thus little progress. 3.124 After careful thought, I decided to start an experimental version of nmh. 3.125 I wanted to implement my own ideas of how an MH-like system should look like. 3.126 -I wanted to see where that would lead to. 3.127 I wanted to create a usable alternative version to be compared with 3.128 the present state of nmh. 3.129 -My work should be proved successful or failed. 3.130 -The nmh project would not be hurt by my work, but 3.131 -it would profit from my experiences. 3.132 +Eventually, my work would be proven successful or not. 3.133 +In any case, the nmh project would profit from my experiences. 3.134 3.135 .U2 "Focus of this Document 3.136 .P 3.137 -This document describes my work on mmh. 3.138 -It explains the changes to nmh, with focus on their reasons. 3.139 +This document explains the design goals and implementation decisions 3.140 +for mmh. 3.141 It discusses technical, historical, social and philosophical considerations. 3.142 On the technical side, this document 3.143 explains how an existing project was stream-lined by removing rough edges 3.144 @@ -110,23 +100,21 @@ 3.145 as well as the reactions to them, are discussed. 3.146 Socially, this document describes the effects 3.147 and experiences of a newcomer with revolutionary aims entering an old 3.148 -and matured software projects. 3.149 -Finally, philosophical thoughts on style, mainly based to the Unix philosophy, 3.150 -are present throughout the discussions. 3.151 +and matured software project. 3.152 +Philosophical thoughts on style, mainly based to the Unix 3.153 +philosophy, are present throughout the discussions. 3.154 +The document describes the changes to nmh, 3.155 +but as well, it clarifies my personal perception of the 3.156 +concepts of MH and Unix, and explain my therefrom resulting point of view. 3.157 .P 3.158 This document is written for the community around MH-like mail systems, 3.159 including developers and users. 3.160 -First, the document explains the design goals and 3.161 -implementation decisions for mmh. But as well, it clarifies my 3.162 -personal perception of the 3.163 -concepts of MH and Unix, and explain my therefrom resulting point of view. 3.164 Despite the focus on MH-like systems, this document is may be precious 3.165 to anyone interested in the Unix philosophy and anyone in contact to 3.166 old software projects, be it code or community-related. 3.167 .P 3.168 -The reader is expected to have good knowledge of Unix, C and emailing. 3.169 -Good Unix shell 3.170 -knowledge, including shell scripting, is required. MH relies fundamentally 3.171 +The reader is expected to be well familiar with Unix, C and emailing. 3.172 +Good Unix shell knowledge is required, because MH relies fundamentally 3.173 on the shell. Without the power of the shell, MH becomes a motorbike 3.174 without winding roads: boring. 3.175 Introductions to Unix and its shell can be found in ``The UNIX Programming 3.176 @@ -138,14 +126,13 @@ 3.177 .[ 3.178 bourne unix system 3.179 .] 3.180 -The reader is 3.181 -expected to be familiar with the C programming language, although the 3.182 -document should be understandable without knowledge of C, too. 3.183 -``The C Programming Language'' by Kernighan and Ritchie 3.184 +The reader is assumed to be a C programmer, 3.185 +but the document should be understandable otherwise, too. 3.186 +The definitive guide to C is Kernighan and Ritchie's 3.187 +``The C Programming Language''. 3.188 .[ 3.189 kernighan ritchie c prog lang 3.190 .] 3.191 -is the definitive guide to C. 3.192 Some book about system-level C programming can be helpful 3.193 additional literature. Rochkind and Curry have written such books. 3.194 .[ 3.195 @@ -154,15 +141,16 @@ 3.196 .[ 3.197 curry system prog 3.198 .] 3.199 -As large parts of the code are old, old books are likely more helpful 3.200 -to understanding. 3.201 -The format of email messages as well as the structure of email transfer 3.202 -systems should be familiar to the reader, at least on a basic level. 3.203 -It's advisable to have at least cross-read the RFCs 821 and 822. 3.204 +As large parts of the source code are old, 3.205 +old books are likely more helpful for understanding. 3.206 +The reader is expected to know the format of email messages and 3.207 +the structure of email transfer systems, at least on a basic level. 3.208 +It's advisable to have cross-read the RFCs 821 and 822. 3.209 Further more, basic understanding of MIME is good to have. 3.210 The Wikipedia provides good introduction-level information to email. 3.211 +.P 3.212 Frequent references to the Unix philosophy will be made. 3.213 -Gancarz had tried to sum the philosophy up in his book 3.214 +Gancarz has tried to sum it up in his book 3.215 ``The UNIX Philosophy''. 3.216 .[ 3.217 gancarz unix phil 3.218 @@ -181,18 +169,20 @@ 3.219 why unix phil still matters schnalke 3.220 .] 3.221 by myself 3.222 -provides an overview on the topic, including a case study of MH. 3.223 +provides an overview on the philosophy, including a case study of MH. 3.224 +.P 3.225 Although a brief introduction to MH is provided in Chapter 1, the reader 3.226 -is encouraged to have a look at the \fIMH Book\fP by Jerry Peek. 3.227 +is encouraged to have a look at the \fIMH Book\fP 3.228 +``MH & nmh: Email for Users & Programmers'' by Jerry Peek. 3.229 .[ 3.230 peek mh 3.231 .] 3.232 +The current version is available freely on the Internet. 3.233 It is the definitive guide to MH and nmh. 3.234 -The current version is available freely on the Internet. 3.235 .P 3.236 This document is neither a user's tutorial to mmh nor an introduction 3.237 -to any of the topics covered. It discusses Unix, email 3.238 -and system design on an advanced level. 3.239 +to any of the topics covered. 3.240 +The technical discussions are on an advanced level. 3.241 Nevertheless, as knowledge of the fundamental concepts is the most valuable 3.242 information a user can acquire about some program or software system, 3.243 this document may be worth a read for non-developers as well.