From: %YOU%
To: %INDIVIDUAL%
CC: private@couchdb.apache.org
Subject: Invitation to become a CouchDB committer
================================================================================

Dear %NAME%,

The Apache CouchDB Project Management Committee (PMC) would like to invite you to become a committer. Committers are given a binding vote in certain project decisions, as well as write access to public project infrastructure.

We value your contributions to date, and believe that you are committed to the project. We mean this in the sense of being loyal to the project and its interests. It is a position of trust, not an expectation of activity level.

You can read more about the role in our bylaws:

    https://couchdb.apache.org/bylaws.html#committers

Please also familiarise yourself with our code of conduct:

    https://couchdb.apache.org/conduct.html

While these documents apply to all community members, by accepting this invitation you are indicating that you have read and agree to them.

Accepting this invitation does not obligate you to contribute. The ASF is a volunteer organisation and it is normal for people's contribution levels to vary. We welcome more contributions from you, but there is no expectation, and this position of trust will not expire through inactivity.

Of course, you can decline and continue to contribute as you do now. If you do decline, it will be kept private, unless you say otherwise.

Either way, please let us know in reply to the private@couchdb.apache.org list only. If you accept, we will announce your new position on the dev@couchdb.apache.org list after your account is created.

[CHECK https://people.apache.org/committer-index.html - IF PRESENT, USE THIS PARAGRAPH]
If you accept, since you already have an Apache id, the PMC will grant you write access to the repository.

[CHECK https://whimsy.apache.org/officers/unlistedclas.cgi - IF PRESENT, USE THIS PARAGRAPH]
If you accept, since you already have an ICLA on file, the PMC will request an Apache id for you. In your response, please choose an id that is not already in use. See https://people.apache.org/committer-index.html
]

[OTHERWISE, USE THIS SECTION]
If you accept, the next step is to register an ICLA:

  1. Details of the ICLA and the forms are found here: https://www.apache.org/licenses/contributor-agreements.html#clas

  2. Instructions for its completion and return to the Secretary of the ASF are found at https://www.apache.org/licenses/contributor-agreements.html#submitting . Do not submit ICLAs to anyone but the Secretary.

  3. When you transmit the completed ICLA, request to notify Apache CouchDB and choose a unique Apache id. Look to see if your preferred id is already taken at https://people.apache.org/committer-index.html . This will allow the Secretary to notify the PMC when your ICLA has been recorded.

  4. Be sure to reply to this email and let us know you've completed your ICLA.

On behalf of the CouchDB PMC,
