Update 12 hours later

Original Text

I received a massive amount of feedback: here, on the mailing list and in private email. I humbly thank all of you for the many words of encouragement. I am planning to summarize in more detail what I took away from this in a separate post soon (once I am back from an internetless trip this weekend).TL;DR - There is this thing called DBIx::Class . It has a number of users, and a number of staunch non-users, which is all fine. Bottom line - it seems to be relatively important . For good AND for bad, I happen to be an integral part of this project for nearly 5 years. A number of my friends (who badgered me into writing this) believe that I am in a relatively unique position to "to boldly take this project where no ORM has gone before". Furthermore I am at a life-junction where Ican consider dedicating more time to such a goal (which includes formalizing proposals, seeking funding etc - this however is all step #2).

The reason for this post is to resolve the #1 problem holding me back from pursuing any of the above - I have conflicting indicators whether my continuous involvement with DBIx::Class does actually deliver a net benefit to its current and potential future users. After several months trying to reconcile facts (detailed further down) surrounding this project, I came to the conclusion that I can not figure this out by myself. And I will remain stuck until I do figure it out. Therefore I am reaching out to the community with what amounts to a blatant "vote of confidence" request (although, as everything in life, it's actually not that simple).

This will be a rather frank and unusually weird post - you have been warned.



To frame the gravity of the problem some graphs and numbers. Compare the overall history (top green-ish graph) with the history of my commits (first red-ish on the left). The impact numbers do not look much different (yes, I know these are crude measurements, the point is to just establish a rough trend):



There are two distinct schools of thought concerning projects of such size and contributor layout. According to the "size matters" camp - I am the current undisputed project pumpking and get to dictate everything, starting from architectural decisions all the way to brace style2. On the other hand followers of the "community matters" scripture would (rightfully) claim that the project is doomed to fail as it hinges on the availability and/or whim of a single individual.

I personally believe mostly in "community matters". And therein lies the problem - I repeatedly failed to build a following around the (hopefully obvious) long term goals of this project. I tried everything I had in my (rather limited) toolbox. At one time or another we had: mandated code review before merge to master, formalized todo lists, weekly irc meetings, attempt of a time boxed release schedule (even though I absolutely abhor the idea), and other stuff I can't currently remember. All of these invariably ended up in quiet failure, and/or deadlock. My personal traits do not help matters either. I have a number of convictions (which I continue to consider non-negotiable). They can roughly be summarized as: The time of a library developer is under no circumstances more valuable than the time of any product developer/system integrator/product tester/etc who happen to be using said library. This (understandably) puts me at odds with pretty much anyone trying to hack on the codebase (both regular and drive-by contributors).

The solution seems to be clear - I am a bad fit for a project manager and need to let someone else take the reigns. But guess what - multiple times in the last several years this is exactly what happened. The unexpected turbulence in my non-digital life would conspire to simply drive me away from Perl and CPAN for multiple months at a time. For reasons still unknown to me, instead of someone else taking the lead and charging ahead, all activity freezes during such times. As I feel largely responsible for "abandoning ship" I succumb to the urge to come back, hack for a while, and the cycle starts over. Such cycles repeated enough times for a very clear trend to emerge: in the land of DBIx::Class/SQL::Abstract/SQL::Translator there seem to be no willing successors. I should note that not so long ago Catalyst was in a similar situation. Kudos to John Napiorkowski for picking up that part of CPAN.

This brings us to the present problem. I have the vision, plan and (apparently) skill to take this project towards something akin to "Plack for RDBMS interaction". I currently have the availability, and seem to have ways to procure funds to maintain this availability. But I find myself unable to pursue any of it, because most of my energy gets sapped away to attempt to continuously prevent implicit3 or explicit crap from entering the codebase. When I fail, I get to play janitor just to put the baseline in a state on which I can once again start building upon, and get basic stuff like CI-testing work again. And while I am at it I naturally get to politely endure whining how we are not doing this or that correctly, and why there hasn't been a release yet. Thus the question boils down to:

Do I begin ignoring some of the noise and continue the present course, or do I take the continuous strain as sign that I should give up and go do something else? Would DBIx::Class benefit more from my continued, albeit somewhat abrasive, presence at the helm (which implies continuous rejection of "worse is better", slow and careful "ready when ready"-style release cycles, multiple layers of checks and testing, and generally slow vetting and acceptance of external contributions)? Or do I officially disclaim any "residual power" and let the project float adrift until someone else steps up and takes it in some direction?

This is not something I can unilaterally decide myself, regardless of the number of commits or authored lines. And this is why this post was written. Thank you in advance for responses/suggestions/guidance/whathaveyou. And most importantly thank you for your time reading this.