That said, MOST of the best bits are largely about the "hub" part, not so much about the "git" part (although clearly git has made the implementation of the hub stuff easier).
There's some great stuff that I'd quite like to have in a "svnhub" that should port fairly easily.
Things like pull requests are a brilliant use of usability rather than technology. Having a separate channel for patches than you do for bug reports helps authors with limited available time to prioritise their attention to the most competant and motivated contributors (whether that was intended or not).
And since you end up using the github gui quite a bit, you are continually being pinged about these patches (something which is NOT true with self-hosted repositories + rt.cpan).
I found myself lusting after this process improvement today, when I discovered that (to my complete surprise) Storable does not support qr// Regexp objects/thingies.
It's had the ABILITY to do so for at least 3 years now, possibly longer. It's just that nobody ever bothered to drop in the two one-line functions needed.
Towhit...
#!/usr/bin/perl
use strict;
use warnings;
use Storable ();
use Test::More tests => 1;
sub Regexp::STORABLE_freeze {
return "$_[0]";
}
sub Regexp::STORABLE_attach {
return qr/$_[0]/;
}
my $foo = qr/foo/;
isa_ok( $foo, 'Regexp' );
# Clone it
my $clone = Storable::dclone( $foo );
isa_ok( $clone, 'Regexp' );
is_deeply( $foo, $clone, Regexp clones correctly );
For competant and motivated contributors, there's clearly a "get it done and move on, and there's actually a half decent chance the maintainer will notice" dynamic going on that makes github great (unless, of course, the maintainer dies or has life issues, and in that case it would seem some of the same problems still apply).
Even if the pull request process isn't any better in this regard, it at least FEELS better, which probably helps improve the contributor rate for high-end contributors.
Being relatively young though, I think the jury is still out on maintaining lots of little things and getting a decent contrib rate for lower end people.
Now I just wish that someone would hurry up and fix the horrible state of git on Windows, which continues to slowly improve. But the rate of improvement still feels rather glacial... :(
And for me, I suspect, the lack of wide adoption due to bad usability (it should not just be "possible" to use git, but easy) will continue to prevent me moving for some time yet, alas.
The round-trip of $x=qr/.../ => "$x" => qr/$x/ is not guaranteed to produce EXACTLY THE SAME regular expression. It would be baffling if it produced a regexp that behaved differently, but that's still something to keep in mind.
You should take a look how YAML::Types does thawing of stringified regexp.
In short: it check flags (e.g. if stringification of regexp is '(?i-xsm:re)') and generates apropriate qr/../ operator (e.g. 'qr{re}i' in this example).