A few other interesting metrics could be for example:

* Work done on the Specification (Synopses):
svn log docs/Perl6/Spec/

* TimToady hacking ;)
svn log src/perl6/
svn log src/perl6/STD.pm

* Work done on the Official Testsuite:
svn log t/spec/

* Work done on the Testsuite:
svn log t/
(It's interresting to compare it with the developement of the
specification as the correlation are obvious and it also show the Pugs
contribution)

Please note that the parrot commit curve seems to have slow down a
little lately...

It's because the parrot HLL languages have left the nest :)

>     page 80 - graph of parrot commits and releases
>                 I don't have a url for that graph. Do you?
>                 Is it maintained? Can anyone update it for me?

In the Pugs Repository there is the 4 years old util/svnlog2graph.pl,
but beware because it is buggy and not delivering correct results:
(the dayify function and developers counting are both buggy...)

On the old wiki there is a somewhat newer Version of this file as
attachment but it has the same bugs:
http://www.perlfoundation.org/parrot/index.cgi?search_term=svnlog2graph.pl&action=search

An other old file delivering some statistik is parrot_dev_stat.pl:
http://www.perlfoundation.org/parrot/index.cgi?search_term=parrot_dev_stat.pl&action=search

(The parrot repository have moved but otherwise it seems to works, I
don't know if the results delivered are accurate)

Here a proposed fix for the version of svnlog2graph.pl found in the pugs
repository:
Index: util/svnlog2graph.pl
===================================================================
--- util/svnlog2graph.pl        (Revision 28206)
+++ util/svnlog2graph.pl        (Arbeitskopie)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 # Creates a statistic of Pugs' development.
-# Usage: svn log | util/svnlog2graph.pl > /tmp/graph.png   --or
-#        svn log > /tmp/log; util/svnlog2graph /tmp/log
> /tmp/graph.png
+# Usage: LANG=C svn log | util/svnlog2graph.pl > /tmp/graph.png   --or
+#        LANG=C svn log > /tmp/log; util/svnlog2graph /tmp/log
> /tmp/graph.png
 
 use warnings;
 use strict;
@@ -23,10 +23,12 @@
 INFO
 
 # Read the logfile
-while(<>) {
+my @lines = reverse <>;
+foreach my $line (@lines) {
+#while(<>) {
   # Only process headlines
-  next unless m/^r/ and m/lines?$/ and m/\|/;
-  my ($dev, $date) = (split / \| /)[1, 2];
+  next unless $line =~ m/^r/ and $line =~ m/lines?$/ and $line =~
m/\|/;
+  my ($dev, $date) = (split / \| /, $line)[1, 2];
   $date =~ s/ [+-]\d+ \(.*$//;
 
   # Example: $date is now "2005-02-06 17:52:06"
@@ -36,10 +38,6 @@
   $num_commits++;
 }
 
-# $commits[0] should be first commit, not last
-...@commits    = reverse @commits;
-...@developers = reverse @developers;
-
 # Collect commits in days
 # E.g. $commits_till_day[42] = 1500 (1500 commits from day 1 to day 42)
 my @commits_till_day = dayify(@commits);
@@ -52,17 +50,22 @@
 # Create the graph.
 my $graph = GD::Graph::lines->new(500, 350);
 $graph->set(
-  title        => "Pugs development",
+  title        => "Perl 6 development",
   x_label      => "Days",
-  y_label      => "Commits/Developers",
-  x_label_skip => 10,
-  y_max_value  => (int(@commits / 500) + 1) * 500,
+  two_axes     => 1,
+  use_axis     => [1,2],
+  y1_label      => "Commits",
+  y2_label      => "Developers",
+  x_label_skip => 365,
+  logo => "misc/camelia.jpg",
+  logo_resize => 0.1,
+  logo_position => "UL",
 ) or die $graph->error;
 
 my @data = (
   [ 0...@commits_till_day ],              # Day#
   [ 0, @commits_till_day ],              # Commits
-  [ 0, map { 50 * $_ } @devs_till_day ], # Developers (scaled)
+  [ 0, @devs_till_day ],                 # Developers
 );
 
 my $gd = $graph->plot(\...@data) or die $graph->error;
@@ -80,9 +83,8 @@
     if($cur_day != $#till_day) {
       push @till_day, $till_day[-1] || 0
         while $#till_day < $cur_day;
-    } else {
-      $till_day[-1]++;
     }
+    $till_day[-1]++;
   }
 
   return @till_day;


Reply via email to