<!---
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

# Inviting New Committers and PMC Members

This is a cookbook of the recommended DataFusion specific process for inviting
new committers and PMC members. It is intended to follow the [Apache Project
Management Committee guidelines], which takes precedence over this document if
there is a conflict.

This process is intended for PMC members. While the process is open, the actual
discussions and invitations are not (one of the very few things that we do not
do in the open).

When following this process, in doubt, check the `private@datafusion.apache.org`
[mailing list archive] for examples of previous emails.

The general process is:

1. A PMC member starts a discussion on `private@datafusion.apache.org`
   about a candidate they feel should be considered who would use the additional
   trust granted to a committer or PMC member to help the community grow and thrive.
2. When consensus is reached a formal [vote] occurs
3. Assuming the vote is successful, that person is granted the appropriate
   access via ASF systems.

[apache project management committee guidelines]: https://www.apache.org/dev/pmc.html
[mailing list archive]: https://lists.apache.org/list.html?dev@datafusion.apache.org
[vote]: https://www.apache.org/foundation/voting

## New Committers

### Step 1: Start a Discussion Thread

The goal of this step is to allow free form discussion prior to calling a vote.
This helps the other PMC members understand why you are proposing to invite the
person to become a committer and makes the voting process easier.

Best practice is to include some details about why you are proposing to invite
the person. Here is an example:

```
To: private@datafusion.apache.org
Subject: [DISCUSS] $PERSONS_NAME for Committer

$PERSONS_NAME has been an active contributor to the DataFusion community for the
last 6 months[1][2], helping others, answering questions, and improving the
project's code.

Are there any thoughts about inviting $PERSONS_NAME to become a committer?

Thanks,
Your Name

[1]: https://github.com/apache/datafusion/issues?q=commenter%3A<github id>
[2]: https://github.com/apache/datafusion/commits?author=<github id>
```

### Step 2: Formal Vote

Assuming the discussion thread goes well, start a formal vote, with an email like:

```
To: private@datafusion.apache.org
Subject: [VOTE] $PERSONS_NAME for DataFusion Committer
I propose to invite $PERSONS_NAME to be a committer. See discussion here [1].

[ ] +1 : Invite $PERSONS_NAME to become a committer
[ ] +0: ...
[ ] -1: I disagree because ...

The vote will be open for at least 7 days.

My vote: +1

Thanks,
Your Name

[1] LINK TO DISCUSSION THREAD (e.g. https://lists.apache.org/thread/7rocc026wckknrjt9j6bsqk3z4c0g5yf)
```

If the vote passes (requires 3 `+1`, and no `-1` votes) , send a result email
like the following (substitute `N` with the number of `+1` votes)

```
to: private@datafusion.apache.org
subject: [RESULT][VOTE] $PERSONS_NAME for DataFusion Committer

The vote carries with N +1 votes.
```

### Step 3: Send Invitation to the Candidate

Once the vote on `private@` has passed and the `[RESULT]` e-mail sent, send an
invitation to the new committer and cc: `private@datafusion.apache.org`

In order to be given write access, the committer needs an apache.org account (e.g. `name@apache.org`). To get one they need:

1. An [ICLA] on file. Note that Sending an ICLA to `secretary@apache.org` will trigger account creation. If they already have an ICLA on file, but no Apache account, see instructions below.
2. Add GitHub username to the account at [id.apache.org](http://id.apache.org/)
3. Connect [gitbox.apache.org] to their GitHub account
4. Follow the instructions at [gitbox.apache.org] to link your GitHub account with your

[gitbox.apache.org]: https://gitbox.apache.org

If the new committer is already a committer on another Apache project (so they
already had an Apache account), The PMC Chair (or an ASF member) simply needs to
explicitly add them to the roster on the [Whimsy Roster Tool].

### Step 4: Announce and Celebrate the New Committer

Email to Send an email such as the following to
[dev@datafusion.apache.org](mailto:dev@datafusion.apache.org) to celebrate and
acknowledge the new committer to the community.

```
To: dev@datafusion.apache.org
Subject: [ANNOUNCE] New DataFusion committer: $NEW_COMMITTER

On behalf of the DataFusion PMC, I'm happy to announce that $NEW_COMMITTER
has accepted an invitation to become a committer on Apache
DataFusion. Welcome, and thank you for your contributions!

<your name>
```

[icla]: http://www.apache.org/licenses/#clas

## Email Templates for Inviting New Committers

### Committers WITHOUT an Apache account and WITHOUT ICLA on file

You can check here to see if someone has an Apache account: http://people.apache.org/committer-index.html

If you aren't sure whether someone has an ICLA on file, ask the DataFusion PMC
chair or an ASF Member to check [the ICLA file list].

[the icla file list]: https://whimsy.apache.org/officers/unlistedclas.cgi

```
To: $EMAIL
Cc: private@datafusion.apache.org
Subject: Invitation to become a DataFusion Committer

Dear $NEW_COMMITTER,

The DataFusion Project Management Committee (PMC) hereby offers you
committer privileges to the project. These privileges are offered on
the understanding that you'll use them reasonably and with common
sense. We like to work on trust rather than unnecessary constraints.

Being a committer enables you to merge PRs to DataFusion git repositories.

Being a committer does not require you to participate any more than
you already do. It does tend to make one even more committed. You will
probably find that you spend more time here.

Of course, you can decline and instead remain as a contributor,
participating as you do now.

A. This personal invitation is a chance for you to accept or decline
in private. Either way, please let us know in reply to this email, make sure to reply-all (it should send a copy to
private@datafusion.apache.org) for record keeping / log of the project.

B. If you accept, the next step is to register an ICLA:

Details of the iCLA and how to submit them are found through this link:
https://www.apache.org/licenses/contributor-agreements.html#clas

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

Once you are notified that your Apache account has been created, you must then:

1. Add your GitHub username to your account at id.apache.org

2. Follow the instructions at gitbox.apache.org to link your GitHub account
with your Apache account.

You will then have write (but not admin) access to the DataFusion repositories.
If you have questions or run into issues, please reply-all to this e-mail.
```

After the new account has been created, you can announce the new committer on `dev@`

### Committers WITHOUT an Apache account but WITH an ICLA on file

In this scenario, an officer (the project VP or an Apache Member) needs only to
request an account to be created for the new committer, since through the
ordinary process the ASF Secretary will do it automatically. This is done at
https://whimsy.apache.org/officers/acreq. Before requesting the new account,
send an e-mail to the new committer (cc'ing `private@`) like this:

```
To: $EMAIL
Cc: private@datafusion.apache.org
Subject: Invitation to become a DataFusion Committer

Dear $NEW_COMMITTER,

The DataFusion Project Management Committee (PMC) hereby offers you
committer privileges to the project. These privileges are offered on
the understanding that you'll use them reasonably and with common
sense. We like to work on trust rather than unnecessary constraints.

Being a committer enables you to merge PRs to DataFusion git repositories.

Being a committer does not require you to participate any more than
you already do. It does tend to make one even more committed. You will
probably find that you spend more time here.

Of course, you can decline and instead remain as a contributor,
participating as you do now.

This personal invitation is a chance for you to accept or decline
in private. Either way, please let us know in reply to this email, make sure to reply-all (it should send a copy to
private@datafusion.apache.org) for record keeping / log of the project. We will have to request an
Apache account be created for you, so please let us know what user id
you would prefer.

Once you are notified that your Apache account has been created, you must then:

1. Add your GitHub username to your account at id.apache.org

2. Follow the instructions at gitbox.apache.org to link your GitHub account
with your Apache account.

You will then have write (but not admin) access to the DataFusion repositories.
If you have questions or run into issues, please reply-all to this e-mail.
```

### Committers WITH an existing Apache account

In this scenario, an officer (the project PMC Chair or an ASF Member) can simply add
the new committer on the [Whimsy Roster Tool]. Before doing this, e-mail the new
committer inviting them to be a committer like so (cc private@):

```
To: $EMAIL
Cc: private@datafusion.apache.org
Subject: Invitation to become a DataFusion Committer

Dear $NEW_COMMITTER,

The DataFusion Project Management Committee (PMC) hereby offers you
committer privileges to the project. These privileges are offered on
the understanding that you'll use them reasonably and with common
sense. We like to work on trust rather than unnecessary constraints.

Being a committer enables you to merge PRs to DataFusion git repositories.

Being a committer does not require you to participate any more than
you already do. It does tend to make one even more committed. You will
probably find that you spend more time here.

Of course, you can decline and instead remain as a contributor,
participating as you do now.

If you accept, please let us know in reply to this email, make sure to reply-all (it should send a copy to
private@datafusion.apache.org) for record keeping / log of the project.
```

## New PMC Members

This is a DataFusion specific cookbook for the Apache Software Foundation
instructions on [how to add a PMC member].

[how to add a pmc member]: https://www.apache.org/dev/pmc.html#pmcmembers

### Step 1: Start a Discussion Thread

As for committers, start a discussion thread on the `private@` mailing list

```
To: private@datafusion.apache.org
Subject: [DISCUSS] $NEW_PMC_MEMBER for PMC

I would like to propose adding $NEW_PMC_MEMBER[1] to the DataFusion PMC.

$NEW_PMC_MEMBER has been a committer since $COMMITTER_MONTH [2], has a
strong and sustained contribution record for more than a year, and focused on
helping the community and the project grow[3].

Are there any thoughts about inviting $NEW_PMC_MEMBER to become a PMC member?

[1] https://github.com/$NEW_PMC_MEMBERS_GITHUB_ACCOUNT
[2] LINK TO COMMITTER VOTE RESULT THREAD (e.g. https://lists.apache.org/thread/ovgp8z97l1vh0wzjkgn0ktktggomxq9t)
[3]: https://github.com/apache/datafusion/pulls?q=commenter%3A<$NEW_PMC_MEMBERS_GITHUB_ACCOUNT>+

Thanks,
YOUR NAME
```

### Step 2: Formal Vote

Assuming the discussion thread goes well, start a formal vote with an email like:

```
To: private@datafusion.apache.org
Subject: [VOTE] $NEW_PMC_MEMBER for PMC

I propose inviting $NEW_PMC_MEMBER to join the DataFusion PMC. We previously
discussed the merits of inviting $NEW_PMC_MEMBER to join the PMC [1].

The vote will be open for at least 7 days.

[ ] +1 : Invite $NEW_PMC_MEMBER to become a PMC member
[ ] +0: ...
[ ] -1: I disagree because ...

My vote: +1

[1] LINK TO DISCUSSION THREAD (e.g. https://lists.apache.org/thread/x2zno2hs1ormvfy13n7h82hmsxp3j66c)

Thanks,
Your Name
```

If this vote succeeds, send a "RESULT" email to `private@` like this:

```
To: private@datafusion.apache.org
Subject: [RESULT][VOTE] $NEW_PMC_MEMBER for PMC

The vote carries with N +1 votes and no -1 votes. I will send an invitation
```

### Step 3: Send invitation email

Assuming the vote passes, the Chair sends an invitation e-mail to the new PMC
member (cc'ing `private@`) like this:

```
To: $EMAIL
Cc: private@datafusion.apache.org
Subject: Invitation to join the DataFusion PMC
Dear $NEW_PMC_MEMBER,

In recognition of your demonstrated commitment to, and alignment with, the
goals of the Apache DataFusion project, the DataFusion PMC has voted to offer you
membership in the DataFusion PMC ("Project Management Committee").

Please let us know if you accept by subscribing to the private alias [by
sending mail to private-subscribe@datafusion.apache.org], and posting
a message to private@datafusion.apache.org.

The PMC for every top-level project is tasked by the Apache Board of
Directors with official oversight and binding votes in that project.

As a PMC member, you are responsible for continuing the general project, code,
and community oversight that you have exhibited so far. The votes of the PMC
are legally binding.

All PMC members are subscribed to the project's private mail list, which is
used to discuss issues unsuitable for an open, public forum, such as people
issues (e.g. new committers, problematic community members, etc.), security
issues, and the like. It can't be emphasized enough that care should be taken
to minimize the use of the private list, discussing everything possible on the
appropriate public list.

The private PMC list is *private* - it is strictly for the use of the
PMC. Messages are not to be forwarded to anyone else without the express
permission of the PMC. Also note that any Member of the Foundation has the
right to review and participate in any PMC list, as a PMC is acting on behalf
of the Membership.

Finally, the PMC is not meant to create a hierarchy within the committership or
the community. Therefore, in our day-to-day interactions with the rest of the
community, we continue to interact as peers, where every reasonable opinion is
considered, and all community members are invited to participate in our public
voting. If there ever is a situation where the PMC's view differs significantly
from that of the rest of the community, this is a symptom of a problem that
needs to be addressed.

With the expectation of your acceptance, welcome!

The Apache DataFusion PMC
```

### Step 4: Chair Promotes the Committer to PMC

The PMC chair adds the user to the PMC using the [Whimsy Roster Tool].

### Step 5: Announce and Celebrate the New PMC Member

Send an email such as the following to `dev@datafusion.apache.org` to celebrate:

```
To: dev@datafusion.apache.org
Subject: [ANNOUNCE] New DataFusion PMC member: $NEW_PMC_MEMBER

The Project Management Committee (PMC) for Apache DataFusion has invited
$NEW_PMC_MEMBER to become a PMC member and we are pleased to announce
that $NEW_PMC_MEMBER has accepted.

Congratulations and welcome!
```

[whimsy roster tool]: https://whimsy.apache.org/roster/committee/datafusion
