<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>List Subscribers (dev)</title>
    <script src="/scripts/api.simile-widgets.org/timeplot/1.1/timeplot-api.js"  type="text/javascript">
    </script>
    <script type="text/javascript">
    var resizeTimerID = null;
    var timeplot;
    function onResize() {
        if (resizeTimerID == null)
        {
            resizeTimerID = window.setTimeout(function(){
                                                    resizeTimerID = null;
                                                   timeplot.repaint();
                                                   }, 100);
        }
    }
    function onLoad() {
        var eventSource = new Timeplot.DefaultEventSource();
        var plotInfo = [
                             Timeplot.createPlotInfo({
                                                     id: "committers",
                                                     dataSource: new Timeplot.ColumnSource(eventSource,1),
                                                     valueGeometry: new Timeplot.DefaultValueGeometry({
                                                                                                      gridColor: "#000000",
                                                                                                      axisLabelsPlacement: "left",
                                                                                                      }),
                                                     timeGeometry: new Timeplot.DefaultTimeGeometry({
                                                                                                    gridColor: new Timeplot.Color("#000000"),
                                                                                                    axisLabelsPlacement: "top"
                                                                                                    }),
                                                     lineColor: "#007DCD",
                                                     fillColor: "#BBC8D0",
                                                     showValues: true
                                                     })
                             ];
        timeplot = Timeplot.create(document.getElementById("ooo-dev"), plotInfo);
        timeplot.loadText("ooo-dev.txt", ",", eventSource);
    }
    </script>
</head>
<body onload="onLoad();" onresize="onResize();">
<h2>Growth in dev List Subscribers</h2>

<div class="label">
    List subscribers (dev)
</div>
<div id="ooo-dev" style="height: 300px;">
</div>

    <p>The dev list is the main mailing list for the project where the community collaborates and coordinates.<br>
	Note: This data is gathered at irregular intervals. The data is accurate at the discrete labeled points
    and interpolated for intermediate dates. The <a href="ooo-dev.txt">raw data</a> is also available.
    </p>

</body>
</html>
