docs/master

diff preface.roff @ 31:029e11dd4de1

Rework in Preface.
author markus schnalke <meillo@marmaro.de>
date Mon, 14 May 2012 11:11:24 +0200
parents d996f130e279
children 2fea9739507f
line diff
     1.1 --- a/preface.roff	Wed May 09 15:50:40 2012 +0200
     1.2 +++ b/preface.roff	Mon May 14 11:11:24 2012 +0200
     1.3 @@ -5,155 +5,164 @@
     1.4  the Unix toolchest is a set of file handling tools with a common
     1.5  concept. nmh is the currently most popular implementation of an
     1.6  MH-like mail handling system.
     1.7 -This thesis describes creating an experimental version of nmh,
     1.8 -named \fImmh\fP,
     1.9 -to modernize, stream-line and to exploit the concepts
    1.10 -even more thoroughly.
    1.11 +This thesis describes an experimental version of nmh,
    1.12 +named \fImmh\fP.
    1.13 +The project goals for mmh are modernizing, stream-lining and exploiting
    1.14 +MH's concepts even more thoroughly.
    1.15  
    1.16  .U2 "Background to this Thesis
    1.17  .P
    1.18  I have discovered nmh in September 2009. At that time I used to use the
    1.19 -mail client mutt, like many command line-attracted Unix users do.
    1.20 -The concepts of nmh had convinced me at once and thus learning
    1.21 -its different model of email handling had been relatively easy.
    1.22 -The change was like
    1.23 +mail client \fImutt\fP, like many advanced Unix users do.
    1.24 +As I read about nmh, its concepts had convinced me at once.
    1.25 +Learning its different model of email handling had been relatively easy,
    1.26 +because my starting situation was being convinced of the concepts.
    1.27 +The transition from mutt to nmh was similar to
    1.28  managing files in the Unix shell when being used to graphical file
    1.29 -managers, or like learning vi when being used to modeless editors.
    1.30 -The transition had not been trivial but, as I was convinced by the new
    1.31 -concepts and
    1.32 -already managed my files with shell tools and edited with vi, not too
    1.33 -difficult neither.
    1.34 +managers, or like editing with vi when being used to modeless editors.
    1.35 +Such a change is not trivial, but in being convinced by the
    1.36 +concepts and by having done similar transitions for file management
    1.37 +and editing already, it was not too difficult neither.
    1.38  In contrast, setting up nmh to a convenient state became a tendious task
    1.39  that took several months.
    1.40  .P
    1.41  Once having nmh arranged to a convenient state, I enjoyed using it
    1.42  because of its conceptional elegance and its scripting capabilities.
    1.43  On the other hand, however, it still was
    1.44 -inconvenient in handling attachments, non-ASCII character encodings,
    1.45 +inconvenient for handling attachments, non-ASCII character encodings,
    1.46  and similar features of modern emailing.
    1.47 -My setup required more and more additional configuration and helper scripts
    1.48 -to have nmh act the way I expected it to behave, although my
    1.49 -expectations were rather common for modern emailing than exceptionel.
    1.50 -In being a software developer, I wanted to improve the situation.
    1.51 +My setup demanded more and more additional configuration and helper scripts
    1.52 +to get nmh behave the way I wanted, although my
    1.53 +expectations were rather common for modern emailing.
    1.54 +In being a computer scientist and programmer,
    1.55 +I wanted to improve the situation.
    1.56  .P
    1.57 -In Spring 2010, I asked on the nmh-workers mailing list for the
    1.58 -possibility to offer a Google Summer of Code project on nmh.
    1.59 +In Spring 2010, I asked on the \fInmh-workers\fP mailing list for the
    1.60 +possibility to offer a Google Summer of Code project.
    1.61  Participating in the development this way appeared attractive to me,
    1.62 -especially as it would have been possible to have the project
    1.63 -accepted at university. Although the nmh community
    1.64 -generally had been positive on the
    1.65 -suggestion, eventually it had not been possible to manage the
    1.66 -administrative work. Though my proposal had started the nmh community
    1.67 -to move. In the following weeks, goals for nmh's future were discussed
    1.68 -on the list. During the discussions, I became involved in the
    1.69 +as it would have been possible to have the project
    1.70 +accepted at university. Although generally the nmh community
    1.71 +had been positive on the
    1.72 +suggestion, the administrative work had been to much, eventually.
    1.73 +But my proposal had activated the nmh community.
    1.74 +In the following weeks, goals for nmh's future were discussed.
    1.75 +In these discussions, I became involved in the
    1.76  question whether nmh should be an MTA. (Thread subject:
    1.77  ``should nmh be an MTA or an MUA?''.)
    1.78 -In this point, my opinion differed from the opinion of most others
    1.79 -as I voted for the MTA facility of nmh to be removed.
    1.80 +In this central point, my opinion differed from the opinion of most others.
    1.81 +I argued for the MTA facility of nmh to be removed.
    1.82 +Besides the discussions, hardly any real work was done.
    1.83 +Being unable to work on nmh in a way that would be
    1.84 +accepted as part of my official studies, I needed to choose another project.
    1.85  .P
    1.86 -Being unable to work on nmh in a way that would be
    1.87 -accepted as part of my official studies, I had to pick another project.
    1.88  Half a year later, starting in August 2010,
    1.89  I took one semester off to travel through Latin America.
    1.90 -Within this time, I had to do practical computer work for three
    1.91 -months.
    1.92 +Within this time, I had to do practical computer work for three months.
    1.93  This brought me back to nmh.
    1.94  Richard Sandelman, an active nmh user, made it possible for
    1.95  me to work on nmh. Juan Granda, living in Santiago del
    1.96 -Estero in Argentina, provided a computer and Internet connection for
    1.97 -my work.
    1.98 -Within the three month, I became familiar with nmh's code base and
    1.99 -its community. I learned how things work. Quickly it became obvious that
   1.100 -I wouldn't succeed with my main goal, to improve the character
   1.101 -encoding handling within the project. One obvious problem is the missing
   1.102 -transfer decoding of the quoted text in replies.
   1.103 +Estero in Argentina, provided a computer with Internet connection for
   1.104 +my work. Thanks to them, I was able to work on nmh during my three-month
   1.105 +stay in Argentina.
   1.106 +Within this time, I became familiar with nmh's code base and
   1.107 +community. I learned how things work. Quickly it became obvious that
   1.108 +I wouldn't succeed with my main goal: improving the character
   1.109 +encoding handling within the project. One of its ramifications is the
   1.110 +missing transfer decoding of quoted text in replies.
   1.111  As this is one of the most intricate parts of the system, the goal
   1.112 -was simply too difficult to reach.
   1.113 -Instead I improved the code as I read through it. I found minor bugs
   1.114 -for which I proposed fixes to the community. Also I
   1.115 -could improve the documentation. When I started with
   1.116 -larger code changes, I had to discover that the community's wish for
   1.117 -compatibility was stronger than its wish for convenient
   1.118 -out-of-the-box setups \(en in contrast with my opinion.
   1.119 +was simply set too high. Hence, I dropped the original plan.
   1.120 +Instead, I improved the code base as I read through it. I found minor bugs
   1.121 +for which I proposed fixes to the community. In the same go, I
   1.122 +improved the documentation in minor ways. When I started with
   1.123 +larger code changes, I had to discover that the community was reluctant
   1.124 +to change. Its wish for compatibility was much stronger than its
   1.125 +wish for convenient out-of-the-box setups \(en in contrast to my opinion.
   1.126  This lead to long discussions, again.
   1.127 -I came to understand their point of view, but it simply is not mine.
   1.128 -.P
   1.129 +I came to understand their point of view, but it is different to mine.
   1.130  At the end of my three-month project, I had become familiar with
   1.131 -nmh's code base and its community. I had improved the project a bit
   1.132 -and I still was convinced that I wanted to go on with that.
   1.133 +nmh's code base and community. I had improved the project in minor ways,
   1.134 +and I still was convinced that I wanted to go on to do so.
   1.135  .P
   1.136  Another half a year later, the end of my studies came within reach.
   1.137  I needed a topic for my master's thesis.
   1.138  There was no question: I wanted to work on nmh.
   1.139  But well, not exactly on nmh,
   1.140  because I had accepted that the nmh community has different goals
   1.141 -than I have. This would result in long discussions and thus few progress.
   1.142 +than I have. This would result in much discussion and thus little progress.
   1.143  After careful thought, I decided to start an experimental version of nmh.
   1.144 -I wanted to follow my own ideas of how nmh should look like. I wanted
   1.145 -to see where that would lead to. I wanted to compare the result of my
   1.146 -work to the present state of nmh. Time should prove me successful or
   1.147 -not.
   1.148 -Nmh would hardly be hurt by my work as I would not interfere with
   1.149 -them. But nmh would profit from my experiences.
   1.150 +I wanted to implement my own ideas of how an MH-like system should look like.
   1.151 +I wanted to see where that would lead to.
   1.152 +I wanted to create a usable alternative version to be compared with
   1.153 +the present state of nmh.
   1.154 +My work should be proved successful or failed.
   1.155 +The nmh project would not be hurt by my work, but
   1.156 +it would profit from my experiences.
   1.157  
   1.158  .U2 "Focus of this Document
   1.159  .P
   1.160 -This document describes my work on the experimental version, named
   1.161 -\fImmh\fP. It explains the changes I did to nmh, with having the focus
   1.162 -on the reasons for the changes. It discusses technical, historical,
   1.163 -social and philosophical reasons. On the technical side, this document
   1.164 -explains how an existing project was stream-lined by exploiting the
   1.165 -central concepts better and removing rough edges. On the historical
   1.166 -side, changes in the use cases and the features of email and reactions
   1.167 -to them are discussed. Socially, this document describes the effects
   1.168 +This document describes my work on the experimental nmh version, named
   1.169 +\fImmh\fP. It explains the changes to nmh, with focus on their reasons.
   1.170 +It discusses technical, historical, social and philosophical considerations.
   1.171 +On the technical side, this document
   1.172 +explains how an existing project was stream-lined by removing rough edges
   1.173 +and exploiting the central concepts better.
   1.174 +On the historical
   1.175 +side, changes through time in the use cases and the email features,
   1.176 +as well as the reactions to them, are discussed.
   1.177 +Socially, this document describes the effects
   1.178  and experiences of a newcomer with revolutionary aims entering an old
   1.179 -and matured software projects and its community. Finally, philosophical
   1.180 -thoughts on style, mainly based to the Unix philosophy, are present
   1.181 -throughout the discussions.
   1.182 +and matured software projects.
   1.183 +Finally, philosophical thoughts on style, mainly based to the Unix philosophy,
   1.184 +are present throughout the discussions.
   1.185  .P
   1.186 -This document is written for the community around MH-like mail systems
   1.187 -\(en developers and users.
   1.188 -First of all, the document shall propagade the design goals and
   1.189 -implementation decisions of mmh. But as well, it shall clarify my
   1.190 +This document is written for the community around MH-like mail systems,
   1.191 +including developers and users.
   1.192 +First of all, the document shall explain the design goals and
   1.193 +implementation decisions for mmh. But as well, it shall clarify my
   1.194  personal perception of the
   1.195 -concepts of MH and Unix, and explain the therefrom resulting point of view.
   1.196 -Despite the focus on MH-like systems, this document can be worthwhile
   1.197 -to anyone interested in the Unix philosophy, as well as anyone
   1.198 -involved in old software projects, be it code or community-related.
   1.199 +concepts of MH and Unix, and explain my therefrom resulting point of view.
   1.200 +Despite the focus on MH-like systems, this document may be worthwhile
   1.201 +to anyone interested in the Unix philosophy and anyone in contact to
   1.202 +old software projects, be it code or community-related.
   1.203  .P
   1.204  The reader is expected to have good knowledge of Unix, C and emailing.
   1.205  Good Unix shell
   1.206  knowledge, including shell scripting, is required. MH relies fundamentally
   1.207  on the shell. Without the power of the shell, MH becomes a motorbike
   1.208  without winding roads: boring.
   1.209 -Introductions to Unix and its shell can be found in XXX.
   1.210 +Introductions to Unix and its shell can be found in ``The UNIX Programming
   1.211 +Environment'' by Kernighan and Pike or ``The UNIX System'' by Bourne.
   1.212  The reader is
   1.213  expected to be familiar with the C programming language, although the
   1.214  document should be understandable without knowledge of C, too.
   1.215 -The book by Kernighan and Ritchie is the definitive guide to C.
   1.216 +``The C Programming Language'' by Kernighan and Ritchie is the
   1.217 +definitive guide to C.
   1.218  Some book about system-level C programming is worthwile additional
   1.219  literature. Rochkind and Curry have written such books.
   1.220 -As large parts of the code are old, old books are likely more helpful.
   1.221 +As large parts of the code are old, old books are likely more helpful
   1.222 +to understanding.
   1.223  The format of email messages as well as the structure of email transfer
   1.224  systems should be familiar to the reader, at least on a basic level.
   1.225 -It's advisable to have had, at least cross-read, the RFCs 821 and 822.
   1.226 -The book XXX introduces email well, too.
   1.227 +It's advisable to have at least cross-read the RFCs 821 and 822.
   1.228 +Further more, basic understanding of MIME is good to have.
   1.229 +The Wikipedia provides good introduction-level information to email.
   1.230  Frequent references to the Unix philosophy will be made.
   1.231 -Gancarz XXX had tried to sum the philosophy up. Even better but less
   1.232 -concrete is the literature by Kernighan and Pike XXX.
   1.233 +Gancarz had tried to sum the philosophy up in his book ``The UNIX Philosophy''.
   1.234 +Even better but less concrete are ``The UNIX Programming Environment'' and
   1.235 +``The Practice of Programming'' by Kernighan and Pike.
   1.236  The term paper ``Why the Unix Philosophy still matters'' by myself
   1.237  provides an overview on the topic, including a case study of MH.
   1.238  Although a brief introduction to MH is provided in Chapter 1, the reader
   1.239  is encouraged to have a look at the \fIMH Book\fP by Jerry Peek.
   1.240  It is the definitive guide to MH and nmh.
   1.241 -The current version is available freely on the Internet XXX.
   1.242 +The current version is available freely on the Internet.
   1.243  .P
   1.244  This document is neither a user's tutorial to mmh nor an introduction
   1.245 -to any of the topics covered. It contains discussions on Unix, email
   1.246 +to any of the topics covered. It discusses Unix, email
   1.247  and system design on an advanced level.
   1.248  However, as knowledge of the fundamental concepts is the most valuable
   1.249 -information over some program or software system a user can aquire,
   1.250 -this document might be worth a read for non-developers too.
   1.251 +information a user can aquire about some program or software system,
   1.252 +this document might be worth a read for non-developers as well.
   1.253  
   1.254  
   1.255  .U2 "Organization