[webkit-dev] Patch process - let's make it better

Luke Kenneth Casson Leighton luke.leighton at googlemail.com
Sun Jul 12 22:47:12 PDT 2009


> Hi everyone,
>
> One common topic for discussion has been how to make our process
> around patch submission better. As the project grows, it's becoming
> more important for this process to work really smoothly, and we are
> seeing some breakdowns.

 well, this is interesting - some good timing on sending this message.
 i believe it would be reasonable to say that regarding #16401, "breakdown"
 would be an understatement of the first order.

> I've been doing a lot of thinking about this,
> and discussion with some project old hands. I think the right way to
> tackle this is to identify the process problems, and make sure we
> address each one.

 yes.

 perhaps, as i have been on the receiving end of some quite shit and
 unnecessary treatment, i can help give some insights here.

 1) there is no charter for webkit.

 one absolutely vital thing which prevents problems is to have a
 charter which outlines, up-front, the expectations and development
 of the project.

 the apache foundation charter states clearly that:

 * "developers shall treat each other with mutual respect".

 * "contributions shall be considered on technical merit"

 for the freedce foundation, after the samba fiasco in which continuous
 goal-post moving and technical bullying was utilised to make significant
 technical contributions - and their contributors - look like shit, we
 modified this to:

 * "contributions shall be considered on strategic technical merit"

 providing a charter clearly outlines an encouraging environment,
 and also allows you to gently - or forcefully - bring people back
 into line.

 in the case of webkit, then, a charter containing these vital
 guidelines would have stopped the disrespectful treatment i got
 absolutely dead in its tracks.  if a free software developer says,
 "no, i am a free software _contributor_, not a paid-up employee
 whom you can [effectively] _demand_ [sponge off].  i don't have time or
 money to give more than i have to get this issue dealt with",
 it xxxxing well means "no, you can't ask for more than i've already
 gifted to this project", and the people who were asking should,
 instead of getting stroppy, go "oh - sorry, i apologise for that!
 i didn't mean in any way to .... etc." and generally indicate
 gratitude for, and respect for, the contributions made.

 read the comments on #16401 bearing in mind that they are _free_
 and _unpaid_ contributions (not funded by any company or sponsor),
 and watch the breakdown in the conversation due to assumptions made
 by apple paid-up employees - it's very interesting reading.

 2) there are no branches

 the KDE development process has what, over a hundred contributors.
 they don't step on each others' toes.  why?  because the committers
 are allowed to create branches.

 a branch, with relaxed conditions, allows people to collaborate
 BEFORE quotes landing quotes and still feel like they are part of
 the project.

 take the #16401 work as a classic example: with over 5,000 lines,
 not one of the groups of contributors could "officially" collaborate
 on improvements because the contributors had no central "official"
 place in which to collaborate, to meet the over-strict and far too
 time-consuming "review" requirements.

 also, if you look around, there are one hell of a lot of unofficial
 branches of webkit.  i found _yet another one_ recently, this time by
 intel, as part of their 3D desktop project!

 intel should never have felt it necessary to create a separate
 repository: they should have been _invited_ to have commit rights.

 there are plenty of scripts out there that can protect commits to
 branches etc.  so the main trunk can be protected.

 3) the review process is hostile and confrontational.

 it even says, up-front, "this process may seem daunting".
 that's got to stop.  i would not be surprised if the confrontational
 approach is a hang-over from internal apple development ethos.

 it doesn't work in the free software world: if you're going to state,
 up-front, "we're going to be tough on you", then potential contributors
 will just say "sod you, then" and walk away.

 4) automation of coding standards checking

 this is trivial to do.  hindent immediately springs to mind.
 it could even be added as a commit hook to trunk (leaving branches
 alone of course).

 5) assumptions that people know where to read about webkit standards
    and processes

 there seems to be an assumption that people know all about webkit's
 "standards", and irritation and in some cases outright hostility when
 people with enthusiasm and the willingness to contribute simply are
 not aware of these "standards".
 5) assumptions that people know where to read about webkit standards
    and processes

 there seems to be an assumption that people know all about webkit's
 "standards", and irritation and in some cases outright hostility when
 people with enthusiasm and the willingness to contribute simply are
 not aware of these "standards".

 why _should_ they be?  where in the world is it made clear?
 how do contributors find _out_ that there are these standards and
 processes?

 both i _and_ adam, in contributing to #16401, had absolutely no idea
 about the "review" process.  absolutely not a damn clue.

 so we both sat there wondering why the bloody hell nobody from
 apple was looking at the patch, and nobody bothered to tell us,
 either.

 in the case of #16401, due to the size that the patch had to become
 in order to do even the most basic of testing, that led to some
 problems [understatement].  the time to _catch_ those problems was
 wayyyy back at the beginning of the development process, and it was far
 too late to catch them, even a few weeks on, and it's thanks to nobody
 explaining what "review" is.


overall, then, the "patch" process is only half the story.  it's the
support _behind_ the patch process that's far more important, and key
to that support infrastructure is to have respect for the abilities
and the available resources of contributors, and to trust the
contributors to commit [their resources, time and abilities] to the
project.

if you look carefully at everything i've said, you will see that my
comments are a mixture of indicating respect for the reviewers'
technical ability and contributions whilst also absolutely _not_
letting them get off the hook for stepping over the line, and saying
so in no uncertain terms.

from experience, i know that when i say things to projects (that
people don't like), they can get _really_ stroppy about it, and do
stupid things like censor me from mailing lists.

yet, six months to six years down the line, i do a periodic check, and
i find that *other people* are still complaining about exactly the
same issues that i'd raised.

so - with me, you get an "advance warning".  a litmus test, so to speak.

bottom line: look at #16401, and _learn_ from it.

l.


More information about the webkit-dev mailing list