On May 4, 2012, at 8:37 AM, David Nalley wrote:
> On Fri, May 4, 2012 at 12:24 AM, John Kinsella <j...@stratosec.co> wrote:
>> Guys - during the developer on-ramp this week, we held a group discussion 
>> around the topics of reviewing patch submissions, code maintainers, voting, 
>> and overall care and management of the official source tree. We wanted to 
>> continue the discussion on the developer list to look for the best way to 
>> set this up for CloudStack and I volunteered to kick off the discussion.
>> 
>> For the overall scope of the discussion, I'm using "maintainer" to describe 
>> a person who has been given commit rights to trunk, and who reviews 
>> potential code modifications for inclusion into the CloudStack source. This 
>> is a separate responsibility from that of setting direction and priorities 
>> for the CS project. Just want to be clear. :)
>> 
>> I'm going to list out some of the points and goals we discussed, but this 
>> probably isn't a complete list of things we should be considering:
>> 
>> Goals:
>>  * Responsive maintainer team that nurtures involvement from the community 
>> by providing friendly, useful, efficient responses to code modification 
>> submissions
>>  * Responsibility vs authority - the goal is not to grant authority to 
>> maintain the codebase, but to culture responsibility and respect for the 
>> codebase and the community.
>> 
>> Points to consider:
>>  * Maintainer scope: Is a maintainer responsible for certain parts of CS, or 
>> the overall codebase? As CS moves to a more modular architecture, maybe a 
>> maintainer focuses on a particular module? The concept of "super" 
>> maintainers was mentioned, a select group of people who have the ability to 
>> effect change across the entire code base. That one has such ability does 
>> not mean that it should be wielded often.
>>  * Single or multiple maintainers: Be there a given scope for a module, 
>> sub-project, or whatever, CS could adopt a model of a single "ultimate" 
>> maintainer who has to do all reviews/commits, or a team of maintainers. The 
>> single person model provides "ultimate" responsibility for that scope and a 
>> more predictable response to submissions, while a team distributes the 
>> workload and minimizes the impact of a single person becoming 
>> sick/distracted/trapped under bus/etc.
>>  * Code modification voting: General process for Apache projects is to vote 
>> +1/0/-1. Question is, when do we use this? It probably isn't necessary for a 
>> 3 line commit.
>>  * Responsiveness to patch submissions: One option to ensure prompt response 
>> to patch submissions would be to have some form of guidance similar to 
>> "maintainers will review and respond to patch submissions within 5 days" 
>> (pick a number). This isn't really enforceable as the community is neither 
>> employed by nor reports to a single entity, although repeated failures to 
>> meet the guideline could result in removal from the maintainer position.
>>  * Patch testing: It would be great to have a test suite for a maintainer to 
>> easily confirm that a patch does not inadvertently affect 
>> functionality/logic outside the intended scope of the patch
>> 
>> What have I left out? We referenced both the Linux (I can't find a good page 
>> describing their process?) and Drupal 
>> (http://drupal.org/contribute/core-maintainers) maintenance methods, but 
>> open to any others we can look at. Please give any thoughts on the subject, 
>> and definitely add any viewpoints/experiences/concepts that you may have.
>> 
>> Thanks!
>> 
>> John
> 
> Thanks for starting the discussion John and bringing all of this back
> to the mailing list.
> 
> I am a fan of the module maintainer method - but I think that it has
> some weaknesses - not necessarily unworkable, but things we should at
> least acknowledge if we think module maintainer is the way we begin to
> handle things. Namely:
> 
> * Tends to result in SPOF - may need some mitigation strategies.

What might work is for smaller or less critical modules a single maintainer is 
OK, but PMC has ability to specify certain modules have multiple maintainers? 
That could provide flexibility to minimize overhead on some parts. Wouldn't 
want to make a module seem less important, though...

> * Need to ensure that it's not seen as authority or a place where
> decisions are made, but rather as a place of responsibility - with
> those responsibilities being the occasionally competing demands of
> getting changes in and maintaining quality.
> * This needs to be rotated regularly

I'm not sure about the regular rotation part - when I think of the large OSS 
projects, the maintainers have been in place for years...rotation requires 
getting somebody else up to speed?

> Of course, at best, these could only be informal rules - any committer
> could commit to anything in the repo.
> 
> Anyone want to draft a proposal for us to try out?

I'm willing to take a stab, happy to work with others...

> I am also interested in some other workflow pieces. How do we do
> feature development (topic branches in git strike me as a good idea),
> how do we handle patches, etc.


Sorry, I left this off the initial email, wasn't sure if it was within scope of 
the discussion. Browsing through https://git-wip-us.apache.org/repos/asf, it 
looks like most projects branch either for feature dev or version branches...

Just found http://incubator.apache.org/isis/docbkx/html/guide/pt03.html while 
browsing - I can see borrowing from that. :) Voting on releases also makes 
sense.

John

Reply via email to