aboutsummaryrefslogtreecommitdiffstats
path: root/growthplot
blob: 07fa436f3e150c52a44209d09965c3d277b1778d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/sh
#
# growthplot -- plot the fetchmail population's growth as a function of time
#

# Get data from the NEWS file
timeseries >/tmp/growthplot$$
grep "^[0-9]" /tmp/growthplot$$ >/tmp/growthnumbers$$
grep "^[0-9.]*.[05].0	" /tmp/growthplot$$ >/tmp/growthmajors$$
sed '/^4.2.9/,$d' </tmp/growthnumbers$$ >/tmp/growthannounce$$

cat >/tmp/growthimage$$ <<EOF
set title "Fetchmail project growth history"
set xlabel 'Days since baseline'
set ylabel 'Participants'
set y2label 'Lines of code'
set ytics nomirror
set y2tics
set tics out
set autoscale  y
set y2range [5000:50000]
set key bottom right box
set terminal png color

EOF

# OK, now write the event labels
(
	echo "count=0"
	echo "breakheight=510"
	while read version size friends announce total days date
	do
		if [ "$version" = '%' ]
		then
			legend="$size $friends $announce $total $days $date"
			echo "# Associate $lastday to '$legend'"
			echo "count = count + 1"
			echo "lastday = $lastday - 5"
			echo "lasttotal = $lasttotal"
			echo "endy = breakheight + 50 + count * 50"
			echo set arrow \
				from lastday, endy \
				to lastday, lasttotal+50 \
				head
			echo "set label '$legend' at lastday-10, endy+15"
		else
			lastday=$days
			lasttotal=$total
		fi
	done
) </tmp/growthplot$$ >>/tmp/growthimage$$ 

# OK, now write the major-release labels
(
	while read version size friends announce total days date
	do
	    echo "set arrow from $days, $total - 55 to $days, $total - 15 head"
	    echo "set label '$version' at $days - 5, $total - 65"
	done
) </tmp/growthmajors$$ >>/tmp/growthimage$$ 

cat >>/tmp/growthimage$$ <<EOF
plot [] [0:] '/tmp/growthnumbers$$' using 6:5 \
		title "Both lists" with points 3, \
     '/tmp/growthannounce$$' using 6:4 \
		title "fetchmail-announce" with points 5, \
     '/tmp/growthannounce$$' using 6:3 \
		title "fetchmail-friends" with points 2, \
     '/tmp/growthnumbers$$' using 6:2 axes x1y2 \
		title "Lines of code" with points 7
EOF

gnuplot /tmp/growthimage$$ >growth.png

rm -f /tmp/growth*

# growthplot ends here
="nt">LI> Support for ESMTP ETRN command. <LI> The stripcr & forcecr options to explicitly control carriage-return stripping and LF->CRLF mapping before mail forwarding. </UL> <H2>Since 2.0:</H2> <UL> <LI> Support for secure use with ssh. <LI> Mailserver passwords can be parsed out of your .netrc file. <LI> When forwarding mail via SMTP, fetchmail respects the 571 "spam filter" response and discards any mail that triggers it. <LI> Transaction and error logging may optionally be done via syslog. <LI> (Linux only) Security option to permit fetchmail to poll a host only when a point-to-point link to a particular IP address is up. <LI> RPOP support (restored; had been removed in 1.8). </UL> <H2>2.0 and earlier versions:</H2> <UL> <LI> Support POP2, APOP, RPOP, IMAP2, IMAP2bis, IMAP3, IMAP4, IMAP4rev1. . <LI> Support for Kerberos V4 user authentication (either MIT or Cygnus). <LI> Host is auto-probed for a working server if no protocol is specified for the connection. Thus you don't need to know what servers are running on your mail host in advance; the verbose option will tell you which one succeeds. <LI> Delivery via SMTP to the client machine's port 25. This means the retrieved mail automatically goes to the system default MDA as if it were normal sender-initiated SMTP mail. <LI> Configurable timeout to detect if server connection is dropped. <LI> Support for retrieving and forwarding from multi-drop mailboxes that is guaranteed not to cause mail loops. <LI> Large user community -- fetchmail has a large user base (the author's beta list includes well over two hundred people). This means feedback is rapid, bugs get found and fixed rapidly. <LI> Carefully written, comprehensive and up-to-date man page describing not only modes of operation but also how to diagnose the most common kinds of problems and what to do about deficient servers. <LI> Rugged, simple, and well-tested code -- the author relies on it every day and it has never lost mail, not even in experimental versions. (In the project's entire history there has only been one recorded instance of lost mail, and that was due to a quirk in some Microsoft code.) <LI> Strict conformance to relevant RFCs and good debugging options. You could use fetchmail to test and debug server implementatations. </UL> <H2>Features in common with other remote-mail retrieval programs:</H2> The other programs I have checked include fetchpop1.9, PopTart-0.9.3, get-mail, gwpop, pimp-1.0, pop-perl5-1.2, popc, popmail-1.6 and upop.<P> <UL> <LI> Support for POP3. <LI> Easy control via command line or free-format run control file. <LI> Daemon mode -- fetchmail can be run in background to poll one or more hosts at a specified interval. <LI> From:, To:, Cc:, and Reply-To: headers are rewritten so that usernames relative to the fetchmail host become fully-qualified Internet addresses. This enables replies to work correctly. (Would be unique to fetchmail if I hadn't added it to fetchpop.) <LI> Message and header processing are 8-bit clean. </UL> <HR> <table width="100%" cellpadding=0><tr> <td width="30%">Back to <a href="index.html">Fetchmail Home Page</a> <td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a> <td width="30%" align=right>$Date: 1997/12/18 00:45:07 $ </table> <P><ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS> </BODY> </BODY> </HTML>