docs/master

changeset 49:d3a02f5e63b3

Various rework.
author markus schnalke <meillo@marmaro.de>
date Sat, 19 May 2012 17:56:15 +0200
parents eae5e50381ce
children a446f89cc5d9
files ch01.roff ch03.roff
diffstat 2 files changed, 66 insertions(+), 49 deletions(-) [+]
line diff
     1.1 --- a/ch01.roff	Fri May 18 11:21:51 2012 +0200
     1.2 +++ b/ch01.roff	Sat May 19 17:56:15 2012 +0200
     1.3 @@ -153,66 +153,70 @@
     1.4  
     1.5  .H1 "nmh: Code and Community
     1.6  .P
     1.7 -In order to understand the state, goals and dynamics of a project,
     1.8 -one needs to know its history. MH predates the Internet,
     1.9 -it comes from times before networking was universal,
    1.10 -times when emailing was small, short and simple.
    1.11 +In order to understand the condition, goals and dynamics of a project,
    1.12 +one needs to know the reasons.
    1.13 +MH predates the Internet, it comes from times before networking was universal,
    1.14 +it comes from times when emailing was small, short and simple.
    1.15  Then it grew, spread and adopted to the changes email went through.
    1.16 -The core-concepts, however, remained the same.
    1.17 -During the 80s a small group of students at the University of
    1.18 -California, actively worked on MH. They added features and optimized,
    1.19 -like it is common for scientific work. This is still in pre-ANSI C
    1.20 -times. The source code contains many ancient parts. Code constructs
    1.21 -specific to BSD or hardware of that time are usual.
    1.22 +Its core-concepts, however, remained the same.
    1.23 +During the Eighties students at UCI actively worked on MH.
    1.24 +They added new features and optimized the code for the then popular systems.
    1.25 +All this still was in times before POSIX and ANSI C.
    1.26 +As large parts of the code stem from this time, today's nmh source code
    1.27 +still contains many ancient parts.
    1.28 +BSD-specific code and constructs taylored for hardware of that time
    1.29 +are frequent.
    1.30  .P
    1.31 -Nmh started eight years after the ANSI C standard had been
    1.32 -established. A more modern coding style entered the code base. Still
    1.33 -a part of the developers come from ``the old days''. The developer
    1.34 -base became more diverse and thus the code had different style.
    1.35 -Programming practices
    1.36 -from different decades merged into the project. Different coding
    1.37 -styles came together. It appears as if multiple peers added code
    1.38 -parts, resulting in a conclomeration rather than a homogenic
    1.39 -of-one-cast mail system. Still, the basic concepts hold it together.
    1.40 +Nmh started about a decade after the POSIX and ANSI C standards had been
    1.41 +established. A more modern coding style entered the code base, but still
    1.42 +a part of the developers came from ``the old days''. The developer
    1.43 +base became more diverse and thus resulted in code of different style.
    1.44 +Programming practices from different decades merged in the project.
    1.45 +As several peers added code, the system became more a conclomeration
    1.46 +of single tools rather than a homogenic of-one-cast mail system.
    1.47 +Still, the existing basic concepts held it together.
    1.48  They were mostly untouched throughout the years.
    1.49  .P
    1.50 -Although, at the surface, nmh is a toolchest, meaning a collection
    1.51 -of completely modularized small programs, on the source code level,
    1.52 -it is much more interweaved. Parts of the basic functions are
    1.53 -collected in a MH standard library, which is good, but often
    1.54 -separate functions are compiled into programs, for effiency reasons.
    1.55 +Despite the toolchest approach at the surface \(en a collection
    1.56 +of separate small programs \(en on the source code level
    1.57 +it is much more interweaved.
    1.58 +Several separate components were compiled into one program
    1.59 +for effiency reasons.
    1.60  This lead to intricate innards.
    1.61 -The advent of MIME rose the complexity of email by a magnitude. This
    1.62 -is visible in nmh. The MIME-related parts are the most complex ones.
    1.63 -It's also visible that MIME support had been added on top of the
    1.64 -old MH later. The MH style made this easily possible, but it
    1.65 -also lead to duplicated functions (e.g. \fLshow\fP, \fLmhshow\fP)
    1.66 -and had not been thoroughly included into the concepts (e.g. the
    1.67 -user-visible access to whole messages and MIME parts are inherently
    1.68 -different).
    1.69 +Unfortunately, the clear separation on the outside appeared as being
    1.70 +pretty interweaved inside.
    1.71  .P
    1.72 -For backward-compatibility's sake, it is a common understanding to have the
    1.73 -default settings to be compatible, requiring any new feature to be
    1.74 -explicitely enabled.
    1.75 +The advent of MIME rose the complexity of email by a magnitude.
    1.76 +This is visible in nmh. The MIME-related parts are the most complex ones.
    1.77 +It's also visible that MIME support had been added on top of the old MH core.
    1.78 +MH's toolchest style made this easily possible and encourages
    1.79 +such approaches, but unfortunately, it lead to duplicated functions
    1.80 +and half-hearted implementation of the concepts.
    1.81 +.P
    1.82 +To provide backward-compatibility, it is a common understanding to not
    1.83 +change the default settings.
    1.84  In consequence, the user needs to activate modern features explicitely
    1.85  to be able to use them.
    1.86 -This puts a burden on new users, because nmh
    1.87 -out-of-the-box keeps staying in the same ancient style, where users
    1.88 -usually want to have it practical for modern emailing.
    1.89 -But of course, this depends if nmh is seen to be a front-end or a
    1.90 -back-end.
    1.91 +This puts a burden on new users, because out-of-the-box nmh remains
    1.92 +in the same ancient style.
    1.93 +If nmh is seen to be a back-end, then this compatibility surely is important.
    1.94 +However, in the same go, new users have difficulties to use nmh for modern
    1.95 +emailing.
    1.96 +The small but matured community around nmh hardly needs much change
    1.97 +as they have their convenient setups since decades.
    1.98  
    1.99  
   1.100  .H1 "mmh
   1.101  .P
   1.102 -I started to work on my experimental version in Fall 2011.
   1.103 +I started to work on my experimental version in October 2011,
   1.104 +when there were no more than three commits to nmh in the previous nine months..
   1.105  In December, when I announced my work on the nmh-workers mailing list,
   1.106  .[
   1.107  nmh-workers mmh announce december
   1.108  .]
   1.109 -the activity in nmh rose heavily.
   1.110 +the activity in nmh rose much.
   1.111  Suddently the community started to move.
   1.112 -This movement was pushed much by Paul Vixie's ``edginess'' message.
   1.113 +This movement was heavily pushed by Paul Vixie's ``edginess'' comment.
   1.114  .[
   1.115  nmh-workers vixie edginess
   1.116  .]
   1.117 @@ -225,7 +229,7 @@
   1.118  (My login name is \fImeillo\fP.)
   1.119  The project follows my personal considerations and preferences.
   1.120  By calling it a personal project, I don't need to justify my decisions,
   1.121 -though, still I do.
   1.122 +though, still I like to do.
   1.123  This enabled me to follow my vision staightly and thus produce
   1.124  a result of greater pureness.
   1.125  This project model was inspired by the window manager \fIdwm\fP,
   1.126 @@ -233,20 +237,20 @@
   1.127  targeted to satisfy Garbe's personal needs whenever conflicts appear.
   1.128  dwm had remained much more focused on its original goals,
   1.129  whereas its community-driven predecessor \fIwmii\fP had
   1.130 -grown large and lost it's leanness.
   1.131 +grown big and lost it's lean elegance.
   1.132  This should not happen to mmh.
   1.133  .P
   1.134 -Mmh can also stand for \fImodern mail handler\fP, and this is
   1.135 -the variant chosen as titel for this document. One main focus of the
   1.136 +Mmh also stands for \fImodern mail handler\fP, and this is
   1.137 +the variant chosen to entitel this document. One main focus of the
   1.138  project was to modernize nmh. Another main goal is resembled in the
   1.139  name \fIminimized mail handler\fP: Drop any parts that don't add
   1.140 -to the main task of mmh, being a MUA.
   1.141 +to the main task of mmh, being a conceptionally appealing MUA.
   1.142  .P
   1.143  It should also be noted that \fLstrcmp("mmh","nmh")<0\fP is true.
   1.144  Although mmh bases on nmh, it is likely seen as a step backward.
   1.145  I agree.
   1.146  However, this step backward actually is a step forward,
   1.147 -although in another direction.
   1.148 +although in a different direction.
   1.149  
   1.150  
   1.151  .H1 "This Thesis
     2.1 --- a/ch03.roff	Fri May 18 11:21:51 2012 +0200
     2.2 +++ b/ch03.roff	Sat May 19 17:56:15 2012 +0200
     2.3 @@ -623,3 +623,16 @@
     2.4  .H1 "Code style
     2.5  .P
     2.6  foo
     2.7 +
     2.8 +
     2.9 +
    2.10 +(e.g. the
    2.11 +user-visible access to whole messages and MIME parts are inherently
    2.12 +different).
    2.13 +
    2.14 +The \fIMH library\fP
    2.15 +.Fn libmh.a
    2.16 +collects a bunch of standard functions that many of the MH tools need,
    2.17 +like reading the profile or context files.
    2.18 +This doesn't hurt the separation.
    2.19 +