One of the most common problems in many software projects is the Bus Factor. This can be especially true of Open Source projects even if they have a lot of contributors, because it is not often that a project will get another developer who is as steeped in the code as the original author.
I am happy to say that the Bus Factor for Moose is now a solid 2 and able to expand easily up to 5 and Class::MOP is the same if not better. This is not to count out the other 50+ contributors at all. Several of them have been steadily climbing in these lists over the past few months.
Here is the output of git-blame for Moose.
Total lines: 45996
18954 41.21% Stevan Little
15270 33.20% Dave Rolsky
3556 7.73% Yuval Kogman
2414 5.25% Shawn M Moore
1038 2.26% Chris Prather
414 0.90% John Napiorkowski
387 0.84% Tomas Doran
333 0.72% Guillermo Roditi
298 0.65% Jesse Luehrs
274 0.60% Todd Hepler
259 0.56% Lars Dieckow
259 0.56% Hans Dieter Pearcey
195 0.42% Anders Nor Berle
187 0.41% Matt S Trout
186 0.40% Nathan Gray
186 0.40% Aankhen
182 0.40% Jonathan Rockway
177 0.38% Jesse Vincent
172 0.37% Aran Clary Deltac
150 0.33% *initial checkin
110 0.24% John Goulah
103 0.22% Tomas Doran (t0m)
89 0.19% Dann
88 0.19% Marcel Grunauer
88 0.19% Ricardo SIGNES
73 0.16% Jess Robinson
63 0.14% Evan Carroll
56 0.12% Justin DeVuyst
55 0.12% Ash Berlin
50 0.11% Daisuke Maki (lestrrat)
46 0.10% Wallace Reis
41 0.09% Florian Ragwitz
40 0.09% Tokuhiro Matsuno
33 0.07% Adam J. Foxson
32 0.07% Marc Mims
23 0.05% Robert 'phaylon' Sedlacek
18 0.04% Cory G Watson
18 0.04% Scott McWhirter
15 0.03% Paul Jamieson Fenwick
13 0.03% michaelr
11 0.02% Tomas Doran (t0m
7 0.02% Adam Kennedy
5 0.01% Robert Boone
5 0.01% Nelo Onyiah
4 0.01% t0m
4 0.01% Mike Whitaker
2 0.00% Piotr Roszatycki
2 0.00% Eric Wilhelm
2 0.00% Paul Driver
2 0.00% Christian Hansen
2 0.00% hakim
1 0.00% Marcus Ramberg
1 0.00% John Douglas Porter
1 0.00% Jay Hannah
1 0.00% Shlomi Fish
1 0.00% Cory Watson
And here are the same for Class::MOP.
Total lines: 26107
11109 42.55% Stevan Little
5107 19.56% Dave Rolsky
4525 17.33% Chris Prather
1919 7.35% Yuval Kogman
1606 6.15% Florian Ragwitz
702 2.69% Guillermo Roditi
647 2.48% Shawn M Moore
98 0.38% nperez
89 0.34% Matt S Trout
70 0.27% Ricardo SIGNES
50 0.19% *initial checkin
42 0.16% Tomas Doran
36 0.14% Todd Hepler
29 0.11% Hans Dieter Pearcey
26 0.10% Jesse Luehrs
24 0.09% Marc Mims
11 0.04% Brandon L Black
5 0.02% Robert Boone
4 0.02% Scott McWhirter
3 0.01% Jonathan Rockway
2 0.01% Flavio Poletti
2 0.01% Shlomi Fish
1 0.00% Rob Kinyon
I am quite happy with this, as it now means that I can cross the street without fear.
Personally I think the bus number is much higher, more like 6.
ReplyDeleteThough if any one would get hit by a bus the project would be hurt, it wouldn't be doomed.
If these 6 people died then we'd be fucked.
Yeah, you are probably correct that it is closer to 6, but I disagree that we would be fucked if those 6 were to die. We have a few "specialists" in that list, whose combined efforts could form some kind of MooseX::Voltron that could maintain Moose while we all burn in hell.
ReplyDeletePeople like Tomas Doran (t0m) and Florian Ragwitz (rafl) have been making some serious contributes to the MooseX:: namespace of late. John Napiorkowski has really dove into the type constraint system with his MooseX::Types:: extensions.
However, all that said, only Rolsky could cut a release as they zipped my mangled corpse into the body bag, everyone else would have to take a day to get up to speed.
Sounds good!
ReplyDelete(Just curious: how did you tickle git-blame to make those nice lists?)
I'd love to see how this was done and compare Moose to some other high profile Perl projects. I've been claiming that one way Moose makes Perl better is that it provides a better shared context for developers which smooths the learning curve, making it easier for people to join in. This feeling I have is just an educated guess based on my experience and on my examination of other high profile Perl projects. But would be fantastic to get some additional data behind it. For example, if we could get the bus data for Template::Toolkit, or Catalyst both before and after the Moose port, etc.
ReplyDeleteThis is the kind of evidence which helps counter the "Perl is write only unmaintainable garbage" which I am hearing.
I'd say the bus numbers for Catalyst, DBIx::Class and Moose are all at least 6 - though a fair number of us overlap between more than one project.
ReplyDeletePlus the "well volunteered" process for all three projects has a bus number of at least two or three now, so were we to lose a couple of critical people at once I'm sure we'd manage to talk enough new contributors into being involved soon enough to bring it back up comfortably.
-- mst
@asjo - I didn't run the scripts, Chris Prather did. He did do some tickling though IIRC.
ReplyDeleteStevan, perhaps you forget my tenure as Moose release monkey. When the bus does strike, I'll be ready to release Shawn M Moose..
ReplyDelete