On Sat, Feb 28, 2009 at 04:56:55PM -0600, Chris Dolan wrote:
> On Feb 28, 2009, at 11:07 AM, Patrick R. Michaud wrote:
>> On Sat, Feb 28, 2009 at 10:46:10AM -0600, Andy Lester wrote:
>>> On Feb 28, 2009, at 10:29 AM, Patrick R. Michaud wrote:
>>>> So, for the time being Rakudo's official policy will be to
>>>> accept patch submissions via RT.  I've now cleared the fork queue
>>>> on GitHub; any patches that were previously there need to be
>>>> resubmitted.
>>>
>>> My understanding is that this is bad for everyone else, because it  
>>> loses the changeset history by making your committed patch 
>>> different than the accumulated changesets that you're applying.
>>> [...]
>
> Based on my experience watching the Linux kernel development process via 
> git, I think both Andy and Patrick are partially right.  An important 
> point is that git optimizes for scalability of the project leadership.

Agreed; this was one of the (many) reasons I also decided to make the
jump to git.

> [...] reviewing false starts is an big waste of time 
> for project leaders, who may already be bottlenecks for a project. The 
> Linux dev process insists that submitters do this:
>  1) fork a trunk point
>  2) do work on a branch, which may include false starts
>  3) if the work is more than one commit:
>    a) make a new clean branch
>    b) manually rebuild the patch as a series of commits handling  
> separate concerns
>    c) ask upstream to pull that optimized branch
>  4) submitter deletes dev branch which included the false starts
>
> This process means the submitted branch/patches represents a fictitious 
> optimal development, as if the programmer were perfect and made no false 
> starts along the way.  That means more work for the submitter of a 
> complicated patch, but sometimes raising the bar is not a bad thing.

Agreed.  And I don't think it's important that Rakudo's patch history
contain _all_ of the false starts made and subsequently corrected by 
an individual developer.  I'd much prefer to see it as fictitious
optimal development.

So, I think what we really need is a good guide describing how
submitters can create the "optimized" branches for the maintainers
to pull from.

> On the other hand, if the submitter thinks the patch is awesome but the 
> reviewer thinks it needs a little work, that's a bit harder because the 
> reviewer needs to do one of the following:
>  1) branch and fix
>     a) make a branch
>     b) pull the submission
>     c) edit
>     d) commit
>  2) edit the patch as text and commit
>  3) reject the patch back to the submitter
> Option #2 is the easiest but the worst because it loses attribution.  #3 
> happens the quite often in the Linux kernel process.  We should not view 
> rejection as rude, but as necessary for a good code base.

In general I'm in favor of #3 as well; I think that rejecting patches 
(with explanation and suggestions for improvement) is another really
good mechanism for raising the quality of code and process.  I don't
find #1 to be too much work either, since it's easy to do local edits
and commits before pushing them to rakudo/master.

> All that said, I have not studied the git best practices for reviewing  
> submissions.  I strongly suspect that there's lots more we can learn  
> from Linux.

Agreed.  And thank you very much for this thoughtful and helpful
message, it really helps to clarify some of my thinking on the topic.

Pm

Reply via email to