Chip, some thoughts inline.

Don't mind the pickiness.

On Dec 13, 2012, at 3:30 AM, Chip Childers <chip.child...@sungard.com> wrote:

> Hi all,
> 
> I'd like to start a conversation about our project bylaws.  This is
> something that an Apache project doesn't absolutely require, but I
> believe that some of the larger TLP's have found it to be valuable.
> More specifically, I would like to see us discuss and agree on the
> contents of the bylaws prior to graduating (hence why I'm bringing it
> up now).  If others don't agree that this is the time or place, or
> that they are not needed, then please say so!
> 
> For the draft below, I started with the Hadoop project's version
> (found here: http://hadoop.apache.org/bylaws.html ), and then took a
> stab at editing the contents a bit to match some of the conventions
> that we have been using as a community already.
> 
> In the draft, I'm assuming that the CloudStack trademark will be
> transfered at or before the time of graduation from the incubator, and
> therefore retained the statements about ASF owning the trademark
> (which is not yet true AFAIK).
> 
> I've also retained the references to the PMC, instead of what is
> currently the PPMC.  For the purpose of this discussion, consider PMC
> to be equal to the PPMC today (with the obvious qualification that we
> are under the Incubator PMC today).
> 
> Section 2.1.4 talks about the PMC being responsible to the board, but
> that will only be the case after we graduate.
> 
> Please take a look, and let's start the process of figuring out what's
> good / bad / otherwise about the draft.  All opinions are welcome!
> 
> -chip
> 
> 
> *****************************************************
> Draft Apache CloudStack Project Bylaws
> *****************************************************
> 
> 1. Introduction
> 
> 1.1. This document defines the bylaws under which the Apache
> CloudStack project operates. It defines the roles and responsibilities
> of the project, who may vote, how voting works, how conflicts are
> resolved, etc.
> 
I would not use 'etc'. Either list everything it defines or scratch the whole 
sentence.
In previous bylaws I was involved with the less the better to avoid room for 
interpretation.


> 1.2. CloudStack is a project of the Apache Software Foundation. The
> foundation holds the trademark on the name "CloudStack" and copyright
> on Apache code including the code in the CloudStack codebase. The
> foundation FAQ explains the operation and background of the
> foundation.
> 
> 1.3. CloudStack is typical of Apache projects in that it operates
> under a set of principles, known collectively as the "Apache Way". If
> you are new to Apache development, please refer to the Incubator
> project for more information on how Apache projects operate.
> 
Maybe:
CloudStack is an Apache project that operates under a set of principles known 
collectively as the "Apache Way".

But that still leaves room for interpretation: What are those principles ?

> 2. Roles and Responsibilities
> 
> Apache projects define a set of roles with associated rights and
> responsibilities. These roles govern what tasks an individual may
> perform within the project. The roles are defined in the following
> sections:
> 
> 2.1. Users
> 
> The most important participants in the project are people who use our
> software. Users contribute to the Apache projects by providing
> feedback to developers in the form of bug reports and feature
> suggestions. As well, users participate in the Apache community by
> helping other users on mailing lists and user support forums.
Feature requests instead of feature suggestions ?
Is that all users can do ?
What's their responsibilities ?

> 2.2. Contributors
> 
> Contributors are all of the volunteers who are contributing time,
> code, documentation, or resources to the CloudStack Project.

Devil's advocate hat on: I am contributing time but no code, docs or resources. 
Am I a contributor ?

> A
> Contributor that makes sustained, welcome contributions to the project
> may be invited to become a Committer,
By who ? ( I know you spell it out later, but you may have to write it here)

> though the exact timing of such
> invitations depends on many factors.  

Which ones ?

> The form of contribution is not
> limited to code.
But is it mandatory ?

> It can also include code review, helping out users on
> the mailing lists, documentation, testing, etc.

In the Users roles you said that "users contribute". Are users contributors ? 
If yes, how do users and contributors differ ?


> 
> 2.3. Committers
> 
> The project's Committers are responsible for the project's technical
> management. Committers have access to all project source control
> repositories. Committers may cast binding votes on any technical
> discussion regarding the project (or any sub-project).
> 
> 2.3.1. Committer access is by invitation only and must be approved by
> a majority consensus

You only define Lazy consensus and Lazy majority later on. 

> of the active PMC members. A Committer is
> considered emeritus by their own declaration or by not contributing in
> any form to the project for over six months. An emeritus committer may
> request reinstatement of commit access from the PMC. Such
> reinstatement is subject to lazy consensus of active PMC members.
> 
> 2.3.2. All Apache Committers are required to have a signed Individual
> Contributor License Agreement (ICLA) on file with the Apache Software
> Foundation. There is a Committer FAQ which provides more details on
> the requirements for Committers at Apache.
Is there such as thing as Committer bylaws ? If yes I would say "Committers 
abide to the Apache bylaws" instead of talking about FAQ.

> 
> 2.3.3. A Committer who makes a sustained contribution to the project
> may be invited to become a member of the PMC. The form of contribution
> is not limited to code.

But is code mandatory ?

> It can also include code review, helping out
> users on the mailing lists, documentation, testing, etc.

no etc.

> 
> 2.4. Project Management Committee
> 
> The Project Management Committee (PMC) for Apache CloudStack is
> responsible to the board and the ASF for the management and oversight
> of the Apache CloudStack codebase. The responsibilities of the PMC
> include:
> 
> - Deciding what is distributed as products of the Apache CloudStack
> project. In particular all releases must be approved by the PMC
> - Maintaining the project's shared resources, including the codebase
> repository, mailing lists, websites.
> - Speaking on behalf of the project.

Devil's advocate: If I am not in the PMC does this mean I cannot speak "on 
behalf" ?
What does this allow a PMC member to say that John Doe could not say ?

> - Resolving license disputes regarding products of the project
> - Nominating new PMC members and committers
> - Maintaining these bylaws and other guidelines of the project

Is the list of responsibilities exhaustive ? 

> 
> 2.4.1. Membership of the PMC is by invitation only and must be
> approved by a lazy consensus of active PMC members. A PMC member is
> considered "emeritus" by their own declaration or by not contributing
> in any form to the project for over six months. An emeritus member may
> request reinstatement to the PMC. Such reinstatement is subject to
> lazy consensus of the active PMC members.
> 
> 2.4.2. The chair of the PMC is appointed by the ASF board. The chair
> is an office holder of the Apache Software Foundation (Vice President,
> Apache CloudStack) and has primary responsibility to the board for the
> management of the projects within the scope of the CloudStack PMC. The
> chair reports to the board quarterly on developments within the
> CloudStack project.
> 
> 2.4.3. The chair of the PMC is rotated annually. When the chair is
> rotated or if the current chair of the PMC resigns, the PMC votes to
> recommend a new chair using Single Transferable Vote (STV) voting. See
> http://wiki.apache.org/general/BoardVoting for specifics. The decision
> must be ratified by the Apache board.
> 
> 3. Decision Making
> 
> Within the CloudStack project, different types of decisions require
> different forms of approval.

A bit vague.

> For example, the previous section
> describes several decisions which require "lazy consensus" approval.

no need for example. 

> This section defines how voting is performed, the types of approvals,
> and which types of decision require which type of approval.
> 
> 3.1. Voting
> 
> 3.1.1. Decisions regarding the project are made by votes on the
> primary project development mailing list
> (cloudstack-dev@incubator.apache.org).

How about the users ? they don't get to vote ?

> Where necessary, PMC voting may
> take place on the private CloudStack PMC mailing list. Votes are
> clearly indicated by subject line starting with [VOTE].

who can call a vote ?

> Votes may
> contain multiple items for approval and these should be clearly
> separated. Voting is carried out by replying to the vote mail. Voting
> may take four flavors
> 
> +1 "Yes," "Agree," or "the action should be performed." In general,
> this vote also indicates a willingness on the behalf of the voter in
> "making it happen"
> +0 This vote indicates a willingness for the action under
> consideration to go ahead. The voter, however will not be able to
> help.
> -0 This vote indicates that the voter does not, in general, agree with
> the proposed action but is not concerned enough to prevent the action
> going ahead.
> -1 This is a negative vote. On issues where consensus is required,
> this vote counts as a veto. All vetoes must contain an explanation of
> why the veto is appropriate. Vetoes with no explanation are void. It
> may also be appropriate for a -1 vote to include an alternative course
> of action.
I am not a committer. If I vote -1, does this constitute a veto ?

> 
> 3.1.2. All participants in the CloudStack project are encouraged to
> show their agreement with or against a particular action by voting.
> For technical decisions, only the votes of active committers are
> binding. Non binding votes are still useful for those with binding
> votes to understand the perception of an action in the wider
> CloudStack community. For PMC decisions, only the votes of PMC members
> are binding.

This clarifies 3.1.1 , but is still vague on a non-binding -1

> 
> 3.1.3. Voting can also be applied to changes made to the CloudStack
> codebase. These typically take the form of a veto (-1) in reply to the
> commit message sent when the commit is made.

by a committer
 
> 
> 3.2. Approvals
> 
> These are the types of approvals that can be sought. Different actions
> require different types of approvals

There are three types of approvals that can be sought. Section 3.4 describes 
actions and types of approvals needed.

> 
> Lazy Consensus - Lazy consensus requires 3 binding +1 votes and no
> binding vetoes.
> Lazy Majority - A lazy majority vote requires 3 binding +1 votes and
> more binding +1 votes than -1 votes.
> Lazy 2/3 Majority - Lazy 2/3 majority votes requires at least 3 votes
> and twice as many +1 votes as -1 votes.
> 
> 3.3. Vetoes
> 
> 3.3.1. Vetoes are only possible in a lazy consensus vote.
> 
> 3.3.2. A valid, binding veto cannot be overruled. If a veto is cast,
> it must be accompanied by a valid reason explaining the reasons for
> the veto. The validity of a veto, if challenged, can be confirmed by
> anyone who has a binding vote. This does not necessarily signify
> agreement with the veto - merely that the veto is valid.
> 
> 3.3.3. If you disagree with a valid veto, you must lobby the person
> casting the veto to withdraw their veto. If a veto is not withdrawn,
> any action that has been vetoed must be reversed in a timely manner.
who is you ?
> 
> 3.4. Actions
> 
> This section describes the various actions which are undertaken within
> the project, the corresponding approval required for that action and
> those who have binding votes over the action.
> 
> 3.4.1. Technical Decisions
> 
> Technical decisions should be made by the entire community using
> consensus gathering, and not through formal voting.  The CloudStack
> community will assume that silence represents consensus on a proposal.
> 
Since there is no vote, what is the timeline for considering that consensus has 
been reached.

> During the consensus gathering process, technical decisions may be
> vetoed by any Committer with a valid reason.
> 
> 3.4.2. Release Plan
> 
> Defines the timetable and actions for a release.

"timetable and work items " to avoid using "actions" in this "Actions" section.

> The plan also
> nominates a Release Manager.
> 
> Lazy majority of active committers
> 
> 3.4.3. Product Release
> 
> When a release of one of the project's products is ready, a vote is
> required to accept the release as an official release of the project.
> 
> Lazy Majority of active PMC members
> 
> 3.4.4. Adoption of New Codebase
> 
> When the codebase for an existing, released product is to be replaced
> with an alternative codebase. If such a vote fails to gain approval,
> the existing code base will continue.
> 
> This also covers the creation of new sub-projects within the project
> 
> Lazy 2/3 majority of PMC members
> 
> 3.4.5. New Committer
> 
> When a new committer is proposed for the project
> 
> Lazy consensus of active PMC members
> 
> 3.4.6. New PMC Member
> 
> When a committer is proposed for the PMC
> 
> Lazy consensus of active PMC members
> 
> 3.4.7. Committer Removal
> 
> When removal of commit privileges is sought. Note: Such actions will
> also be referred to the ASF board by the PMC chair
> 
> Lazy 2/3 majority of active PMC members (excluding the committer in
> question if a member of the PMC).
> 
> 3.4.8. PMC Member Removal
> 
> When removal of a PMC member is sought. Note: Such actions will also
> be referred to the ASF board by the PMC chair.
> 
> Lazy 2/3 majority of active PMC members (excluding the member in question)
> 
> 3.4.9. Modifying Bylaws
> 
> Modifying this document.
> 
> Lazy majority of active PMC members
> 

Do we need to set a timeframe on updating/reviewing bylaws ?

> 3.5. Voting Timeframes
> 
> Formal votes are open for a period of at least 72 hours to allow all
> active voters time to consider the vote.
> 
> *****************************************************

-sebastien

Reply via email to