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.
* 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

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 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.

--David

Reply via email to