community-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benson Margulies <>
Subject Project Culture and Commit Rights
Date Sat, 05 Jan 2013 15:35:03 GMT
Over the last several weeks, there has been a length discussion amongst
Apache Foundation members about how the Foundation manages access to source
control, with a focus on Subversion.

Anyone can read to see a
summary of the central idea that started this discussion: that the default
authorization scheme for Subversion at Apache should be to grant technical
permission to commit to all committers across the Foundation.

The purpose of this message is to start a discussion here about the culture
of commit rights. The purpose of this message is *not* to create an
additional debate about the UCB (universal commit bit) itself, which, at
the request of the VP of Infrastructure, is happening on the
operations@mailing list.

(?Does Comdev have a Wiki?)

Let me start by defining two terms: 'Commit Permission' and 'Commit Rights'.

'Commit Permission' is a _technical_ status. If you have commit permission,
and you run an 'svn commit' command, it will succeed.

'Commit Rights' is a _social status_. You have commit rights when a
community has voted to invite you to commit. The people with commit rights
on a project are the 'committers'.

This message is about commit rights. It skips right over the arguments
about changing the relationship between commit rights and commit
privileges, to focus on how communities manage rights.

Commit rights are not necessarily a simple, binary, phenomenon. Committers
on projects are expected to follow community policies, procedures, and
norms. One simple example of this is RTC. If a project operates under RTC
conventions, committers don't go off and commit things without review.
There are many more examples. If a project has agreed to drive towards a
release, committers are expected to not disrupt the process by committing
big, new things. Some projects insist that every commit be tied to a JIRA.

All in all, however, Apache projects have tended to treat commit rights as
a big deal. You don't get commit rights until you earn them via merit. Some
projects are very conservative in evaluating merit. Some projects look for
some level of overall community engagement as a prerequisite to commit

The question at hand here is, 'is this really a good idea? Would project
grow and thrive better if they set a lower bar to grant commit rights?'

Some people (Greg Stein, e.g.) have written eloquently on the historical
justification for conservative commit control. Historically (i.e. in CVS),
it was difficult to monitor changes and it was difficult to cleanly undo an
inappropriate change. So, it was necessary to set a high bar for commit
rights, so as to reduce the risk of something awful happening.

In the modern world, on the other hand, the Foundation provides email with
diffs for review, and Subversion makes it reasonably straightforward to
reverse an untoward commit. Thus, this argument claims, projects have
little to lose by granting commit rights more easily.

What, on the other hand, do they have to gain?

Long-term success of an open source projects depends on continued
acquisition of new participants. Projects that don't grow risk shrinking
and dying.

When a person shows up at a project and reads the message, 'we don't trust
you until you've posted 15 patches, etc.' that is not exactly a welcoming
message. Some people see it as a challenge and rise to it. Other people are
put off.

There are several notable examples of successful open source projects
outside of the Foundation that adopt the opposite tactic. Their publish a
policy like:

"Commit rights to this project are granted upon request. However,
committers must read, understand, and
comply with our policies. When you start out, you may want to ask for
review, or commit to a branch, and get feedback from the community."

It seems that the people who show up at these projects are, almost
universally, responsible adults who are happy to comply. This 'welcoming'
policy has the effect of drawing people in.

What I've presented, so far, is arguable a radical change to the usual
Apache culture. It moves 'karma from merit' entirely from the 'commit'
threshold to the 'supervise' threshold. I already know that there are
people at Apache who don't like the idea, or at least don't think it makes
sense for their projects. I'm not writing to suggest that this scheme be
forced upon anyone. This is comdev@. Here, I think, we talk about ways of
helping projects grow and succeed.

Writing as the IPMC chair, I'm inclined to think that the Incubator would
to well to encourage this model for new projects. By far, the biggest
reason for podlings to fizzle is their failure to grow. I don't mistake
this for a magic bullet, but I think it could help.

To recapitulate a bit, so far I've presented some historical context and an
argument for an alternative model of _commit rights_.  It has no particular
implication for the management of _commit privileges_. If a project adopts
this model, it still adds people to the ACL that controls the subversion
repository, one at a time.

If a project adopts some form of these scheme, the PMC is still responsible
for supervision. 'Commit on request' means that the PMC has, potentially,
more people to supervise after less experience. Some projects will not see
this as a good tradeoff. Others might adopt the attitude of, 'If only we
had enough people show up and ask for commit rights to actually give us
more supervising to do.'

There's a weaker form of this idea that looks at two populations of
potential contributors: the members of the Apache Software Foundation
(members@) and all of the people who have been granted commit rights on all
of the projects (committers@). Projects that don't feel prepared to offer
commit-on-demand to the world at large might feel inclined to do so for
(one or both of) these groups. Not because all communities work the same
way, but because all communities at Apache share a core value: committers
respect the policies and procedure of the community. Once someone has shown
that they are willing to play nicely over _there_, we might do well to
welcome them with open arms _over here_.

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message