1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
4 <!-- $Id: philosophy.html,v
1.3 2003/
01/
01 14:
54:
11 mmondor Exp $
5 Copyright (c)
2002-
2003 Matthew Mondor, ALL RIGHTS RESERVED.
7 <title>Matthew Mondor's Software Site - Philosophy
</title></head>
10 <body bgcolor=
"#f0f0ff" text=
"#000000" link=
"#3535c5" vlink=
"#700080">
11 <table border=
"0" cellspacing=
"5" cellpadding=
"5">
15 <td valign=
"top" bgcolor=
"#d0d0f0">
16 <font face=
"helvetica, arial" color=
"#000066"><b>Sections
</b></font><br>
17 <table border=
"0" cellspacing=
"4" cellpadding=
"2"><tbody><tr><td>
18 <p><font face=
"helvetica, arial" size=
"-1">
19 <a href=
"index.html">Main
</a> <br>
20 <a href=
"software.html">Software
</a> <br>
21 <a href=
"donations.html">Donations
</a> <br>
22 <a href=
"contributors.html">Contributors
</a> <br>
23 <a href=
"philosophy.html"><em>Philosophy
</em></a> <br>
24 <a href=
"cvs.html">CVS
</a> <br>
25 <a href=
"projects.html">Projects
</a> <br>
26 <a href=
"mirrors.html">Mirrors
</a> <br>
27 <a href=
"mailto:mmondor@gobot.ca">Contact
</a> <br>
28 </font></td></tr></tbody></table>
29 <br><img src=
"images/sigil.jpg" alt=
"Image Copyright (c) 2002-2003, Matthew Mondor">
32 <!-- Middle column --
>
35 <font face=
"helvetica, arial" size=
"4">Philosophy behind mmsoftware
</font><br>
37 <font face=
"helvetica, arial">
39 Several primary goals were the basis to write my suite of public internet
40 services. One consisted of a challenge to learn UNIX APIs deeply at the time
41 I decided to write my own. This is no longer the case, but probably that the
42 most driving factor still has to do with my need to run such services.
44 Of course there exists a variety of solutions for each of the standard
45 protocols. However, most of them seemed historical, based on code which made
46 it though the years through extreme amounts of patching and kludges. This
47 generally results in solutions which are hard to configure, and have gone
48 though a long history of security-related issues. Most of them even support
49 obsolete protocols, or experimental ones which never have been widely used.
51 Moreover, several of them were subject to strict licensing issues. Writing
52 my own software I have the full rights to do whatever I want with it, as
53 well as eventually distribute closed-source special editions commercially.
54 But I didn't want to be the only one to be able to do this, hence I decided
55 to release my software under a BSD-style license (Berkeley Source Distribution
56 license), allowing others to modify it and distribute it under source or
57 binary form as wanted, only requireing them to add an aknowledgement to their
58 product documentation:
59 </p><p><font face=
"times">
60 This product includes software written by Matthew Mondor.
62 It however obviously is encouraged to report to me the various bug fixes
63 or enhancement patch so that the main publicly available tree also evolve.
65 Considering security aspects, most traditional UNIX internet services software
66 ran as the superuser, and required standard UNIX users to be added for each
67 remote user. I strongly beleive that most administrators enjoy being able to
68 only create virtual users rather than real UNIX shell ones for each of their
69 users. My daemons therefore only allow virtual users. Moreover, none of them
70 require to run as the superuser after their initial startup. Most of them
71 have support for chroot(
2) as well, for administrators who need it.
73 These are public services afterall. I personally use them to contribute
74 software and services which are often free of charge, and would find it quite
75 discouraging if my services were exploited and servers virtually destroyed.
76 I think that many administrators are in the same position and would like to
79 Special care is taken when writing this software to avoid memory leaks (which
80 could be a threat to service uptime and autonomy), and to check every
81 error condition possible. As the services should remain up, system resources
82 error conditions are treated in a safe way; The current operation is cancelled
83 to not execute code which requires these new resources to be allocated,
84 previous allocated ones are released if any (but not all) were obtained for
85 the current operation as well, and the service keeps running as usual. This
86 also implies using I/O operations which can timeout where required. Also,
87 libc functions with uncertain delay periods get executed by an asynchroneous
88 parallel system when userspace threading systems are used, to prevent locking
89 the main process, allowing service to remain fluid among the multiple
90 simultaneous connections being served. Some effort was also made to keep the
93 C was chosen to write these for several reasons. I am well used to it, having
94 used it for many years, was a primary one. A second worthwhile reason is that
95 the UNIX, POSIX and BSD APIs are intended for C programs. It is also possible
96 for the programmer to optimize C code decently rather than only relying on
97 compiler effeciency to do it, gaining speed advantage without having to use
98 less maintainable and unportable assembly. When well written, C programs are
99 also portable. C++ could have suited, but would result in generally less
100 efficient code. I also like to control my own use of memory useage, object
101 allocation and garbage collection, hence it was not worth it to use C++.
102 Where possible, ANSI-C compliance is observed.
109 <!-- Right column --
>
110 <td valign=
"top" bgcolor=
"#d0d0f0">
111 <font face=
"helvetica, arial" color=
"#000066"><b>Languages
</b></font><br>
112 <table border=
"0" cellspacing=
"4" cellpadding=
"2"><tbody><tr><td>
113 <font face=
"helvetica, arial" size=
"-1">
114 <a href=
"index.html"><em>English
</em></a> <br>
115 <a href=
"index_fr.html">French
</a> <br>
116 </font></td></tr></tbody></table></p>
117 <p><font face=
"helvetica, arial" color=
"#000066"><b>Mirrors
</b></font><br>
118 <table border=
"0" cellspacing=
"4" cellpadding=
"2"><tbody><tr><td>
119 <font face=
"helvetica, arial" size=
"-1">
120 <a href=
"http://mmondor.dynup.net/index.html">Canada
</a> <br>
121 <a href=
"http://gobot.accela.net/index.html">United-States
</a> <br>
122 <a href=
"http://mmondor.oostendorp-ict.nl/index.html">Holland
</a> <br>
123 </font></td></tr></tbody></table></td></p>
126 </tr><tr><td valign=
"bottom" align=
"left" colspan=
"3">
127 <font face=
"helvetica, arial" size=
"-2">
128 $Id: philosophy.html,v
1.3 2003/
01/
01 14:
54:
11 mmondor Exp $
<br>
129 This site Copyright (c)
2002-
2003, Matthew Mondor, ALL RIGHTS RESERVED.
130 </font></td></tr></tbody></table>