docs/diploma

annotate thesis/pieces/old/3-MasqmailProject.tex @ 184:b0adae481138

moved content
author meillo@marmaro.de
date Mon, 29 Dec 2008 14:05:24 +0100
parents 3b5ba7331eb5
children
rev   line source
meillo@89 1 \chapter{The \masqmail\ project}
meillo@89 2
meillo@89 3 %TODO: have text by oliver here?
meillo@89 4
meillo@89 5 \section{Purpose of \masqmail}
meillo@89 6
meillo@89 7 \subsection{Target field}
meillo@89 8 Its original author, Oliver Kurth, sees \masqmail\ so:
meillo@89 9 \begin{quote}
meillo@89 10 MasqMail is a mail server designed for hosts that do not have a permanent internet connection eg. a home network or a single host at home. It has special support for connections to different ISPs. It replaces sendmail or other MTAs such as qmail or exim.
meillo@89 11 \end{quote}
meillo@89 12
meillo@89 13 \masqmail\ is inteded to cover a specific niche: non-permanent internet connection and different \NAME{ISP}s.
meillo@89 14
meillo@89 15 Although it can basically replace other \MTA{}s, it is not generally aimed to do so. The package description of \debian\citeweb{packages.debian:masqmail} states this more clearly by changing the last sentence to:
meillo@89 16 \begin{quote}
meillo@89 17 In these cases, MasqMail is a slim replacement for full-blown MTAs such as sendmail, exim, qmail or postfix.
meillo@89 18 \end{quote}
meillo@89 19 \masqmail\ is a good replacement ``in these cases'', but not generally, since is lacks features essential for running on mail servers. It is primarily not secure enough for being accessable from untrusted locations.
meillo@89 20
meillo@89 21 The program is best used in home networks, which are non-permanently connected to the internet. \masqmail\ sends mail to local destinations, like users on the same machine and on other machines in the local net, immediately. Email to recipients outside the local net are queued when offline and sent when a online connection gets established.
meillo@89 22
meillo@89 23 Further more does \masqmail\ respect online connections through different \NAME{ISP}s; a common thing for dial-up connections. In particular can different sender addresses be set, dependent on the \NAME{ISP} that is used. This prevents mail to be likely classified as spam.
meillo@89 24
meillo@89 25
meillo@89 26
meillo@89 27 \subsection{Typical usage}
meillo@89 28 This section describes situations that make senseful use of \masqmail.
meillo@89 29
meillo@89 30 A home network consisting of some workstations without a server. The network is connected to the internet by dial-up or broadband. Going online is initiated by computers inside the local net. \NAME{IP} addresses change at least once every day.
meillo@89 31
meillo@89 32 Every workstation would be equiped with \masqmail. Mail transfer within the same machine or within the local net works straight forward. Outgoing mail to the internet is sent, to the concerning \NAME{ISP} for relaying, whenever the router goes online. Receiving of mail from outside needs to be done by a mail fetch program, like the \masqmail\ internal \NAME{POP3} client or \name{fetchmail} for example. The configuration for \masqmail\ would be the same on every computer, except the hostname.
meillo@89 33
meillo@89 34 For the same network but having a server, one could have \masqmail\ running on the server and using simple forwarders (see \ref{subsec:relay-only}) to the server on the workstations. This setup does only support mail transfer to the server, but not back to a workstation; also sending mail to another user on the same workstation is not possible.
meillo@89 35
meillo@89 36 A better setup is to run \masqmail\ on every machine %FIXME
meillo@89 37
meillo@89 38
meillo@89 39
meillo@89 40 \subsection{What makes it special}
meillo@89 41
meillo@89 42 As main advantage, \masqmail\ makes it easy to set up an \MTA\ on workstations or notebooks without the need to do complex configuration or to be an mail server expert.
meillo@89 43
meillo@89 44 Workstations use %FIXME
meillo@89 45
meillo@89 46
meillo@89 47 \subsection{Alternatives?}
meillo@89 48 % http://anfi.homeunix.org/sendmail/dialup10.html
meillo@89 49
meillo@89 50 \section{History}
meillo@89 51 %TODO: let oliver prove read it!
meillo@89 52 %FIXME: add references
meillo@89 53 %FIXME: where does the name come from: masqdialer (guessed)
meillo@89 54
meillo@89 55 The date of the first release (version 0.0.1) is unknown.
meillo@89 56 The only information available is, that it was packaged for \debian\ at 15\nth\ of September in 1999.
meillo@89 57 Further releases were made every few weeks or month during 2000, 2001 and 2002.
meillo@89 58 Development ended in mid-2003 in a hard stop.
meillo@89 59 The last ordinary release known to me is version 0.2.20, released on 4\nth\ of June in 2003.
meillo@89 60
meillo@89 61 During the time of development, Oliver released 53 versions.
meillo@89 62 That means a new release in less than every 20 days in average!
meillo@89 63
meillo@89 64 Mentionable are the four \emph{beta} releases of version 0.1.8 (named with the trailing letters `a' to `d') in winter 2000/2001 and the security-fix 0.1.15.1 in 2002.
meillo@89 65
meillo@89 66 One extra release (version 0.2.21) was made by him in November 2005.
meillo@89 67 This one is only available from the \debian\ pool.
meillo@89 68 Comparing it to version 0.2.20 shows, that no source code was altered.
meillo@89 69 Only building documents (like Makefiles) and \debian\ packageing documents were changed.
meillo@89 70 That leeds to the assumption that this last release was specificly created for the needs of \debian---to fix some errors in the package.
meillo@89 71
meillo@89 72 In May 2000 the minor version number increased to `1'.
meillo@89 73 Nothing special is mentioned in the documentation about that.
meillo@89 74 When it increased again to start the 0.2.x releases, Oliver titled them as the ``development branch'' of \masqmail.
meillo@89 75 At that second time, he started developing the 0.2.x ``development branch'', continuing to work on the 0.1.x series.
meillo@89 76 His parallel work on both branches lasted for four month, and one additional last release, numbered 0.1.17, one more year later.
meillo@89 77
meillo@89 78
meillo@89 79
meillo@89 80 \section{Taking \masqmail}
meillo@89 81
meillo@89 82
meillo@89 83
meillo@89 84
meillo@89 85 \section{About \freesw\ projects}
meillo@89 86
meillo@89 87 % http://www.faqs.org/docs/artu/
meillo@89 88
meillo@89 89 There are several differences between \freesw\ projects and projects about proprietary software.
meillo@89 90 To understand \freesw\ projects, one needs to understand \freesw\ itself first.
meillo@89 91
meillo@89 92 \subsection{About \freesw}
meillo@89 93 The term ``Free Software'' was coined by the \name{Free Software Foundation} (short: \NAME{FSF}), founded by Richard~M.\ Stallman (known as ``RMS'') in 1985.
meillo@89 94 Although various licenses make software free, none of them represents the thinking of \freesw\ like the the \GNU\ \gpl\ (short: \GPL). Its first version was written by Stallman in 1989.
meillo@89 95 One could say, the \GPL\ catalized the \name{Free Software movement}.
meillo@89 96
meillo@89 97 % http://www.fsf.org/about/what-is-free-software
meillo@89 98
meillo@89 99 After all, the \GPL\ was not the first \freesw\ license used.
meillo@89 100 The \name{MIT License} (or \name{X Consortium License}) for example is older; published in 1988.
meillo@89 101 Licenses providing the same rights have been used since long time ago.
meillo@89 102 But none of them was so often (re)used by other projects---thus gattering less awareness.
meillo@89 103 Further more was the \GPL\ created to be a \emph{general} license for all kinds of programs, unlike most other licenses written for one particular program.
meillo@89 104
meillo@89 105 \freesw\ gives freedoms to its users.
meillo@89 106 In contrast to proprietary software restricting the users freedom.
meillo@89 107 The freedoms (or rights) the user has are stated in the \name{Free Software Definition} of the \NAME{FSF}. Namely these are:
meillo@89 108 % http://www.gnu.org/philosophy/free-sw.html
meillo@89 109 % http://www.fsf.org/licensing/essays/free-sw.html
meillo@89 110 \begin{enumerate}
meillo@89 111 \item The freedom to run the program, for any purpose (freedom 0).
meillo@89 112 \item The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
meillo@89 113 \item The freedom to redistribute copies so you can help your neighbor (freedom 2).
meillo@89 114 \item The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
meillo@89 115 \end{enumerate}
meillo@89 116
meillo@89 117
meillo@89 118 \subsection{The term ``Open Source''}
meillo@89 119 \name{Open Source Software} often stands for the same as \freesw.
meillo@89 120 But there is an essential difference: \name{Open Source} focuses on the availability of source code, while \freesw\ is about freedoms for people.
meillo@89 121
meillo@89 122 \name{Open Source Software} is a subset of \freesw, meaning: All \freesw\ is \name{Open Source}, but there exists \name{Open Source Software} that is not free.
meillo@89 123
meillo@89 124 % http://www.gnu.org/philosophy/open-source-misses-the-point.html
meillo@89 125 % http://catb.org/~esr/open-source.html
meillo@89 126
meillo@89 127
meillo@89 128 \subsection{Development of \freesw}
meillo@89 129 Having source code available and the right to modify it, encouridges programmers to actually do so.
meillo@89 130 Their modifications are manifoldly.
meillo@89 131 Some tailor the software to their needs.
meillo@89 132 Some add features.
meillo@89 133 Some do it just for fun.
meillo@89 134 There are no limitations---whoever wants to, may work on it.
meillo@89 135
meillo@89 136 Since the boom of the internet, \freesw\ typically is developed by an open community of programmers interested in the software.
meillo@89 137 The process of development is watchable by everyone.
meillo@89 138
meillo@89 139 The other, now less common, method is a more closed group, developing in a ``sealed'' room, but releasing finished versions to the public.
meillo@89 140
meillo@89 141 Eric~S.\ Raymond discusses about these methods, which he named \name{the bazaar} and \name{the cathedral} \cite{catb}.
meillo@89 142
meillo@89 143 The following text will focus on the ``bazaar'' model.
meillo@89 144
meillo@89 145
meillo@89 146 \subsection{The role of the community}
meillo@89 147 \freesw\ projects rise and fall with their community!
meillo@89 148
meillo@89 149 Most \freesw\ programs are developed by a very small group of programmers, often only one person.
meillo@89 150 But they are used by many people.
meillo@89 151 In between the programmers and the users, are people located who are a bit of both.
meillo@89 152 These are the ones that write documentation, find bugs and probably even fix it.
meillo@89 153 They discuss on mailing lists, bulletin boards and \NAME{IRC} chats.
meillo@89 154 The program is often spread by their ``advertising''.
meillo@89 155
meillo@89 156 The \emph{community} consists of the actual developers and all users that contribute to the program.
meillo@89 157 Contribution can be one of the described ways, or others like providing a server for the project website for example.
meillo@89 158
meillo@89 159 \emph{Community} is everyone who is in contact through the project.
meillo@89 160 Be it on the mailing list, the discussion board, or by telling the developers about a new feature wanted.
meillo@89 161
meillo@89 162 There will hardly be a community if no communication channels are available.
meillo@89 163 If the development team does not provide them, there is a chance that encouraged users set them up on their own.
meillo@89 164 But this is rare and the program needs to be very popular. %TODO: maybe include an example here (w3m?)
meillo@89 165
meillo@89 166 Projects without a good community tend to die sooner or later.
meillo@89 167
meillo@89 168
meillo@89 169 \subsection{Evolution of a community}
meillo@89 170 Let us look at the process a community establishes: In most times it's only one who has an idea, in the beginning.
meillo@89 171 He starts developing.
meillo@89 172 When others get in contact with the project, there may be some who are so much interested that they start co-developing.
meillo@89 173 Others report bugs, and some only use the program.
meillo@89 174
meillo@89 175 After some time, one will find a small group of core developers, a larger group of contributers (bugs, patches, documentation) and a very large group of users.
meillo@89 176 The size ratio of the groups vary by type of project.
meillo@89 177
meillo@89 178 One should have that in mind, when starting a \freesw\ project.
meillo@89 179
meillo@89 180
meillo@89 181 \subsection{Creating a strong community}
meillo@89 182 Building up a good community needs some effort of the main developers.
meillo@89 183 %TODO: search for documents about this topic
meillo@89 184
meillo@89 185 First communication channels need to be set up, to enable the growth of a community.
meillo@89 186
meillo@89 187 Second, development should be visible by everyone who is interested in it.
meillo@89 188 Time between work done on the project and its visibility to the public should be kept short.
meillo@89 189 This makes it interesting for other developers to join.
meillo@89 190 Developers are the core of a community.
meillo@89 191
meillo@89 192 Third, there is a rule of thumb that should be followed: ``Release early, release often!'' \cite{catb}.
meillo@89 193 Releases are (more) stable versions, primary for users.
meillo@89 194 They should be created, frequently.
meillo@89 195 People will more likely use programs of active projects.
meillo@89 196
meillo@89 197 Fourth, the developers should try to get the users ``in the boat''.
meillo@89 198 Good communities have a large group of users that do not only receive, but also give something back to the project.
meillo@89 199 The project leaders should motivate users to contribute.
meillo@89 200 This unlocks a big work force and gets lot of unexiting work done.
meillo@89 201
meillo@89 202 Fifth, documentation matters.
meillo@89 203 Good documentation makes it easy for users and developers to start.
meillo@89 204 And it helps to avoid a lot of unsatisfaction.
meillo@89 205 Documentation is something that shows quality and that people care about the project.
meillo@89 206
meillo@89 207 And sixth, project leaders should be good souvereigns.
meillo@89 208 They should try to be fair, to motivate, be visionaires and try to put power and work on many shoulders.
meillo@89 209
meillo@89 210 Not to forget: Every work that was done, every contribution that was made and every idea received needs to be honored in an appropriate way!
meillo@89 211 Volunteer work lives by acknowledgement of the effort spent.
meillo@89 212
meillo@89 213
meillo@89 214
meillo@89 215
meillo@89 216
meillo@89 217 \section{Project infrastructure}
meillo@89 218