aboutsummaryrefslogtreecommitdiffstats
path: root/ucs
Commit message (Collapse)AuthorAgeFilesLines
* Fix missing prototype for norm_charmap.Matthias Andree2010-10-092-0/+8
|
* Fix lots of warnings, most around string literals...Matthias Andree2010-03-181-1/+1
| | | | | | | ...that were converted to char* when they should have been converted to const char *. Use braces for empty if/else statements.
* Remove unused assignments/initializations found with llvm-clang.Matthias Andree2010-02-281-2/+2
|
* Update documents/scripts after SVN -> Git move.Matthias Andree2010-02-061-19/+0
|
* Add (C) Copyright and LicenseMatthias Andree2005-07-111-0/+2
| | | | svn path=/trunk/; revision=4115
* Include config.h just in case compiler doesn't know const.Matthias Andree2004-11-071-1/+3
| | | | | | Make argument and return value const. svn path=/trunk/; revision=3978
* Add instructions on updating/merging.Matthias Andree2004-11-071-0/+17
| | | | svn path=/trunk/; revision=3977
* copying Markus Kuhn's ucs 2002-03-11 into trunkMatthias Andree2004-11-072-0/+263
svn path=/trunk/; revision=3976
{ color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
<!doctype HTML public "-//W3O//DTD W3 HTML 3.2//EN">
<HTML>
<HEAD>
<link rev=made href=mailto:esr@snark.thyrsus.com>
<meta name="description" content="Fetchmail participation statistics">
<meta name="keywords" content="fetchmail, growth, analysis"> 
<TITLE>Trends in the fetchmail project's growth</TITLE>
</HEAD>
<BODY>
<table width="100%" cellpadding=0><tr>
<td width="30%">Back to <a href="/~esr">Eric's Home Page</a>
<td width="30%" align=center>Up to <a href="/~esr/sitemap.html">Site Map</a>
<td width="30%" align=right>$Date: 1999/12/20 04:35:07 $
</table>
<HR>
<H1 ALIGN=CENTER>Trends in the fetchmail project's growth</H1>

The scattergram below was made with Gnuplot 3.7 from data pulled
directly out of the project NEWS file using two custom shellscripts,
<a href="timeseries">timeseries</a> and <a
href="growthplot">growthplot</a>.  If you see a broken-image icon, upgrade
to a <a href="http://www.cdrom.com/pub/png/pngapbr.html">browser that
can view PNGs</a>.<p>

<center><img src="growth.png"></center><p>

The graph shows the population growth of the fetchmail project.  The
horizontal scale is days since baseline, which is when I started
collecting statistics in October 1996 at version 1.9.0.  Left vertical
scale is number of participants. There is one data point for each
release; therefore, the changes in density of marks indicate release
frequency.<p>

The peak in the earliest part of the graph (before the note "Bad
addresses dropped") seems to be an artifact; I was not regularly
dropping addresses that became invalid at the time.  Turnover on the
list seems to be about 5% per month (but that's just my estimate, I
don't have numbers on this).<p>

The <font color="blue">blue scatter of squares</font> is total
participants.  The <font color="lime">green scatter of crosses</font> is
the count of people on fetchmail-friends after I split the list.  The
<font color="purple">violet scatter of triangles</font> is the population
of fetchmail-announce after the split.<P>

The <font color="brown">brown scatter of diamonds</font> tracks project
size in lines of code (right vertical axis). The scale relationship
between this scatter and the other three is arbitrary.<p>

This graph is quite revealing.  Several trends stand out: <p>

<ul>
<li>
Over time, the project population displays rather consistent linear growth.<p>

<li>
The key event in the project's lifetime was release 4.3.0 in October
1997, when I declared the code to be out of development and in
maintainance mode, and split the fetchmail list.<p>

<li>
The run-up to 4.3.0 saw the most intensive spate of releases in the 
project's history (the gap in that run happened when I took a two-week
vacation).  It was followed by a significant slowdown.<p>

<li>
After 4.3.0, the developer population remained fairly stable around
an average of about 250 participants.<p>

<li>
Essentially all population growth after 4.3.0 happened on the announce list,
among people using fetchmail but not  active co-developers.<p>

<li>
The growth trend in code size looks sublinear, perhaps logarithmic.
</ul>

The linear growth trend in population is particularly interesting; a
priori we might expect geometric or logistic growth, given that the
project spreads by word of mouth.<P>

It has been suggested that the linear growth rate is the result of a 
situation in which both number of projects and the population of
eligible programmers are rising on trend curves of the same (probably
exponential) rate.<p>

There are some other pages doing similar things:<p>

<ul>
<li>
<a href="http://kitenet.net/programs/debhelper/stats/">Here</a>
are growth statistics on the debhelper packaging utility.<p>

<li>
<a href="http://durak.org:81/sean/pubs/kfc/">Here</a> is a page on the
vocabulary of the Linux kernel.<p>
</ul>

<HR>
<table width="100%" cellpadding=0><tr>
<td width="30%">Back to <a href="/~esr">Eric's Home Page</a>
<td width="30%" align=center>Up to <a href="/~esr/sitemap.html">Site Map</a>
<td width="30%" align=right>$Date: 1999/12/20 04:35:07 $
</table>

<P><ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@thyrsus.com&gt;</A></ADDRESS>
</BODY>
</HTML>