Skip to content

Commit

Permalink
add CLA signers; update related docs and tools
Browse files Browse the repository at this point in the history
Signed-off-by: Kale Franz <[email protected]>
  • Loading branch information
kalefranz committed Jun 2, 2018
1 parent be402ab commit a811715
Show file tree
Hide file tree
Showing 6 changed files with 229 additions and 23 deletions.
21 changes: 18 additions & 3 deletions .cla-signers
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@
# while not an official record, is used by conda-bot for the purposes of CLA status on pull
# requests.

# Each row in this file has three fields. The first field is github username. The second field
# is git id, the output of `git log -n1 --format="%aN <%aE>"` when HEAD is at a specific user's
# latest commit. The third column is the date the CLA was signed, or alternate disposition for
# the user's contributions.

# The second field, which is the git (not GitHub!) identifier for the user, is designed to
# work in conjunction with the .mailmap file at the root of this repository.

3kwa | Eugene Van den Bulke <[email protected]> | 2018-06-01
alexbw | Alex Wiltschko <[email protected]> | 2018-05-23
asmeurer | Aaron Meurer <[email protected]> | Anaconda, Inc.
aterrel | Andy R. Terrel <[email protected]> | Anaconda, Inc.
Expand All @@ -13,16 +22,20 @@ bryevdv | Bryan Van de Ven <[email protected]> | Anaconda, Inc.
campos-ddc | Diogo de Campos <[email protected]> | 2018-06-01
chdoig | Christine Doig <[email protected]> | Anaconda, Inc.
csoja | Crystal Soja <[email protected]> | Anaconda, Inc.
desilinguist | Nitin Madnani <[email protected]> | 2018-05-24
dawehner | Daniel Wehner <[email protected]> | 2018-06-02
dedalusj | Jacopo <[email protected]> | 2018-06-01
desilinguist | Nitin Madnani <[email protected]> | 2018-06-01
dorzel | Dylan Orzel <[email protected]> | Anaconda, Inc.
dsludwig | Derek Ludwig <[email protected]> | Anaconda, Inc.
electronwill | Will Warner <[email protected]> | Anaconda, Inc.
goanpeca | Gonzalo Peña-Castellanos <[email protected]> | Anaconda, Inc.
gqmelo | Guilherme Quentel Melo <[email protected]> | 2018-05-24
hajs | Henning Schroder <[email protected]> | 2018-06-01
HugoTian | Zhang Tian <[email protected]> | Anaconda, Inc.
HugoTian | Tian Zhang <[email protected]> | Anaconda, Inc.
ijstokes | Ian Stokes-Rees <[email protected]> | Anaconda, Inc.
ilanschnell | Ilan Schnell <[email protected]> | Anaconda, Inc.
jaimergp | Jaime RGP <[email protected]> | 2018-06-01
jbcrail | Joseph Crail <> | 2018-06-01
jhunkeler | Joseph Hunkeler <[email protected]> | 2018-06-01
jni | Juan Nunez-Iglesias <[email protected]> | 2018-06-01
joelhullcio | [email protected] <[email protected]> | Anaconda, Inc.
Expand All @@ -39,6 +52,7 @@ mmarchetti | Michael Marchetti <[email protected]> | Anaconda, Inc.
msarahan | Michael Sarahan <[email protected]> | Anaconda, Inc.
mutirri | irritum <[email protected]> | Anaconda, Inc.
mwiebe | Mark Wiebe <[email protected]> | Anaconda, Inc.
nehaljwani | Nehal J Wani <[email protected]> | 2018-06-01
nicoddemus | Bruno Oliveira <[email protected]> | 2018-05-23
njalerikson | Odegard, Ken <[email protected]> | 2018-06-01
petebachant | Pete Bachant <[email protected]> | 2018-05-23
Expand All @@ -51,7 +65,8 @@ soapy1 | Sophia Castellarin <[email protected]> | Anaconda, Inc.
srossross | srossross <[email protected]> | Anaconda, Inc.
stefanseefeld | Stefan Seefeld <[email protected]> | Anaconda, Inc.
teoliphant | Travis E. Oliphant <[email protected]> | Anaconda, Inc.
tpowellcio | Troy Powell <tpowell@MathBook Pro.(none)> | Anaconda, Inc.
tswicegood | Travis Swicegood <[email protected]> | Anaconda, Inc.
ugurthemaster | ugurthemaster <[email protected]> | all commits reviewed and exempt
vestuto | Jason Vestuto <[email protected]> | Anaconda, Inc.
wojdyr | Marcin Wojdyr <q@gmail.com> | 2018-06-01
wojdyr | Marcin Wojdyr <wojdyr@gmail.com> | 2018-06-01
19 changes: 13 additions & 6 deletions .exempt-commits
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
fc35fc22e9c8a5dfc875c45b6a1cae7e5e5b24da | ugurthemaster <[email protected]> | reviewed 2018-06-01 by kalefranz | minor text edits and/or typo fixes
866012b48bb8000bbcc47f6713929c6c1ecd7ab2 | ugurthemaster <[email protected]> | reviewed 2018-06-01 by kalefranz | minor text edits and/or typo fixes
578b13545750aee61efaceb52f21df0f599331b2 | ugurthemaster <[email protected]> | reviewed 2018-06-01 by kalefranz | minor text edits and/or typo fixes
f769cb32e458ca052a27a7128a54be2d90e5381c | ugurthemaster <[email protected]> | reviewed 2018-06-01 by kalefranz | minor text edits and/or typo fixes
f7c6e2c74e6f3bab59d5b34899aabb5bc4a6091c | ugurthemaster <[email protected]> | reviewed 2018-06-01 by kalefranz | minor text edits and/or typo fixes
6e33917125fe11d5305e320bf538d01f3283edd4 | ugurthemaster <[email protected]> | reviewed 2018-06-01 by kalefranz | minor text edits and/or typo fixes
# This file holds a record of commits for which a CLA is not available, but are nonetheless
# reviewed by core maintainers and determined to be exempt from the CLA requirement.

# For each row, the first column is the git sha of the commit, the second column is the git
# identifier for the individual who made the commit, the third column is the date and person
# who reviewed the commit, and the fourth column is the reason the commit is determined to be
# exempt from CLA.

fc35fc22e9c8a5dfc875c45b6a1cae7e5e5b24da | ugurthemaster <[email protected]> | 2018-06-01 by kalefranz | minor text edits and/or typo fixes
866012b48bb8000bbcc47f6713929c6c1ecd7ab2 | ugurthemaster <[email protected]> | 2018-06-01 by kalefranz | minor text edits and/or typo fixes
578b13545750aee61efaceb52f21df0f599331b2 | ugurthemaster <[email protected]> | 2018-06-01 by kalefranz | minor text edits and/or typo fixes
f769cb32e458ca052a27a7128a54be2d90e5381c | ugurthemaster <[email protected]> | 2018-06-01 by kalefranz | minor text edits and/or typo fixes
f7c6e2c74e6f3bab59d5b34899aabb5bc4a6091c | ugurthemaster <[email protected]> | 2018-06-01 by kalefranz | minor text edits and/or typo fixes
6e33917125fe11d5305e320bf538d01f3283edd4 | ugurthemaster <[email protected]> | 2018-06-01 by kalefranz | minor text edits and/or typo fixes
9 changes: 3 additions & 6 deletions .github-map
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
3kwa | Eugene Van den Bulke <[email protected]>
# This is a temporary file that holds github username to git id mappings. As user's sign
# the CLA, the entry here is moved to the .cla-signers file.

aburgm | Armin Burgmeier <[email protected]>
akanehira | kanehira <[email protected]>
alanhdu | Alan Du <[email protected]>
Expand All @@ -24,9 +26,7 @@ chrislf | Chris Linton-Ford <[email protected]>
cstich | Christoph Stich <[email protected]>
daineseh | Dainese Hsiao <[email protected]>
dan-blanchard | Dan Blanchard <[email protected]>
dawehner | Daniel Wehner <[email protected]>
ddale | Darren Dale <[email protected]>
dedalusj | Jacopo <[email protected]>
delicb | Bojan Delic <[email protected]>
dfroger | David Froger <[email protected]>
dhirschfeld | David Hirschfeld <[email protected]>
Expand All @@ -39,7 +39,6 @@ esc | Valentin Haenel <[email protected]>
faph | Florenz A. P. Hollebrandse <[email protected]>
flaviomartins | Flavio Martins <[email protected]>
frol | Vlad Frolov <[email protected]>
goanpeca | Gonzalo Peña-Castellanos <[email protected]>
gomyhr | Geir Ove Myhr <[email protected]>
groutr | Ryan Grout <[email protected]>
guoci | guoci <[email protected]>
Expand Down Expand Up @@ -83,7 +82,6 @@ mikecroucher | Mike Croucher <[email protected]>
minrk | MinRK <[email protected]>
mjuric | Mario Juric <[email protected]>
natefoo | Nate Coraor <[email protected]>
nehaljwani | Nehal J Wani <[email protected]>
NewbiZ | Aurelien Vallee <[email protected]>
nickeubank | Nick Eubank <[email protected]>
NixonK | Nixon Kwok <[email protected]>
Expand Down Expand Up @@ -113,7 +111,6 @@ tdhopper| Tim Hopper <[email protected]>
teake | Teake Nutma <[email protected]>
tomkinsc | Chris Tomkins-Tinch <[email protected]>
tpn | Trent Nelson <[email protected]>
tpowellcio | Troy Powell <tpowell@MathBook Pro.(none)>
twiecki | Thomas Wiecki <[email protected]>
tyler-thetyrant | Tyler Kim <[email protected]>
ukoethe | Ullrich Koethe <[email protected]>
Expand Down
2 changes: 1 addition & 1 deletion .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Skipper Seabold <[email protected]> Skipper Seabold <[email protected]
Sophia Castellarin <[email protected]> sophia <[email protected]>
Tian Zhang <[email protected]> tester <[email protected]>
Tian Zhang <[email protected]> tester <[email protected]>
Tian Zhang <[email protected]> Tian Zhang <[email protected]>
Tian Zhang <[email protected]> Zhang Tian <[email protected]>
Travis Swicegood <[email protected]> Travis Swicegood <[email protected]>
Tyler Kim <[email protected]> Tyler Kim <[email protected]>
Wolfgang Ulmer <[email protected]> Wolfgang Ulmer <[email protected]>
Expand Down
96 changes: 89 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,95 @@ In these steps, we assume `git` is installed and available on `PATH`.

## Conda Contributor License Agreement

In case you're new to CLAs, this is rather standard procedure for larger projects.
[Django](https://www.djangoproject.com/foundation/cla/) and even
[Python](https://www.python.org/psf/contrib/contrib-form/) itself both use something similar.

### Process

New contributors should email [email protected] to request a Contributor License Agreement
that can be electronically signed. A signed contributor license agreement for a pull request author
needs to be on file with Anaconda, Inc. for pull requests to be merged. A record of signatories is
kept in the `.cla-signers` file in the project root.

### Individual Contributor License Agreement

TODO: Include full CLA text here.
that can be electronically signed. A signed contributor license agreement for a pull request
author needs to be on file with Anaconda, Inc. for pull requests to be merged. A record of
signatories is kept in the `.cla-signers` file in the project root.

### Individual Contributor License Agreement – Conda Code Organization

In order to clarify the intellectual property license granted with Contributions from any person
or entity, all projects under the **Conda Code Organization** (“Conda”) must have a Contributor
License Agreement (“Agreement”) on file that has been signed by each Contributor, indicating
agreement to the license terms below for each project. This license is for your protection as a
Contributor as well as the protection of **Anaconda, Inc.** (“Anaconda”) as project manager and
Conda users; it does not change your rights to use your own Contributions for any other purpose.
This agreement applies to any current and all future Conda projects, including conda, conda-build,
constructor, and associated projects under the Conda Code Organization. While currently hosted on
GitHub at https://github.com/conda, the project hosting site is subject to change at Anaconda's
sole discretion.

You accept and agree to the following terms and conditions for Your present and future
Contributions submitted to Anaconda under Conda. In return, Anaconda shall not use Your
Contributions in a way that is contrary to the public benefit. Except for the license granted
herein to Anaconda and recipients of software distributed by Anaconda, you reserve all right,
title, and interest in and to Your Contributions.

1. Definitions. "You" (or "Your") shall mean the copyright owner or legal entity authorized
by the copyright owner that is making this Agreement with Anaconda. For legal entities, the entity
making a Contribution and all other entities that control, are controlled by, or are under common
control with that entity are considered to be a single Contributor. For the purposes of this
definition, "control" means (i) the power, direct or indirect, to cause the direction or
management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent
(50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"Contribution" shall mean any original work of authorship, including any modifications or
additions to an existing work, that is intentionally submitted by You to Anaconda for inclusion
in, or documentation of, any of the projects owned or managed by Anaconda (the "Work"). For the
purposes of this definition, "submitted" means any form of electronic, verbal, or written
communication sent to Anaconda or its representatives, including but not limited to communication
on electronic mailing lists, source code control systems, and issue tracking systems that are
managed by, or on behalf of, Anaconda for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise designated in writing by You as
"Not a Contribution."

2. Grant of Copyright License. Subject to the terms and conditions of this Agreement, You hereby
grant to Anaconda and to recipients of software distributed by Anaconda a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
derivative works of, publicly display, publicly perform, sublicense, and distribute Your
Contributions and such derivative works.

3. Grant of Patent License. Subject to the terms and conditions of this Agreement, You hereby
grant to Anaconda and to recipients of software distributed by Anaconda a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent
license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable by You that are necessarily
infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work
to which such Contribution(s) was submitted. If any entity institutes patent litigation against
You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that Your
Contribution, or the Work to which You have contributed, constitutes direct or contributory patent
infringement, then any patent licenses granted to that entity under this Agreement for that
Contribution or Work shall terminate as of the date such litigation is filed.

4. You represent that you are legally entitled to grant the above license. If your employer(s) has
rights to intellectual property that you create that includes your Contributions, You represent
that you have received permission to make Contributions on behalf of that employer, that your
employer has waived such rights for your Contributions to Anaconda, or that your employer has
executed a separate Corporate Contributor License Agreement with Anaconda.

5. You represent that each of Your Contributions is Your original creation (see Section 7 for
submissions on behalf of others). You represent that Your Contribution submissions include
complete details of any third-party license or other restriction (including, but not limited to,
related patents and trademarks) of which you are personally aware and which are associated with
any part of Your Contributions.

6. You are not expected to provide support for Your Contributions, except to the extent You
desire to provide support. You may provide support for free, for a fee, or not at all. Unless
required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without
limitation, any warranties or conditions of TITLE, NONINFRINGEMENT, MERCHANTABILITY, or FITNESS
FOR A PARTICULAR PURPOSE.

7. Should You wish to submit work that is not Your original creation, You may submit it to
Anaconda separately from any Contribution, identifying the complete details of its source and of
any license or other restriction (including, but not limited to, related patents, trademarks,
and license agreements) of which you are personally aware, and conspicuously marking the work as
"Submitted on behalf of a third-party: [named here]".

8. You agree to notify Anaconda of any facts or circumstances of which you become aware that
would make these representations inaccurate in any respect.
105 changes: 105 additions & 0 deletions utils/cla_check.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2012 Anaconda, Inc
# SPDX-License-Identifier: BSD-3-Clause
from __future__ import absolute_import, division, print_function, unicode_literals

from subprocess import check_output


contributors = sorted(set(x.strip('"') for x in check_output(
['git', 'log', '--format="%aN <%aE>"']
).decode("utf-8").splitlines()))


with open('.cla-signers') as fh:
github_map_lines = fh.read().strip().split('\n')


def get_cla_signers():
with open('.cla-signers') as fh:
for line in fh:
line = line.strip()
if line.startswith('#') or not line:
continue
yield line

signers_map = {}

for line in get_cla_signers():
username, contributor_name, _ = line.split('|')
username = username.strip()
contributor_name = contributor_name.strip()
if username:
signers_map[contributor_name] = username



def get_github_map_line():
with open('.github-map') as fh:
for line in fh:
line = line.strip()
if line.startswith('#') or not line:
continue
github_username, git_id = line.split('|')
yield git_id.strip(), github_username.strip()


github_username_map = dict(x for x in get_github_map_line())

sent = [
"alanhdu",
"arkottke",
"almarklein",
"groutr",
"delicb",
"chrislf",
"dan-blanchard",
"Horta",
"dhirschfeld",
"dfroger",
"dawehner",
"dedalusj",
"e-gillies-ix",
"3kwa",
"faph",
"flaviomartins",
"aldanor",
"jacoblsmith",
"jrovegno",
"jbcrail",
"jerowe",
"kdeldycke",
"Korijn",
"mikecroucher",
"blindgaenger",
"mdengler",
"melund",
"megies",
"mheilman",
"elehcim",
"mika-fischer",
"natefoo",
"nickeubank",
"rcthomas",
"remram44",
"rleecivis",
"tdhopper",
"twiecki",
"tpn",
"ukoethe",
"esc",
"NewbiZ",
"wojdyr",
"wulmer",
]



for contributor in contributors:
if contributor not in signers_map:
github_username = github_username_map[contributor]
if github_username not in sent:
print(contributor)



0 comments on commit a811715

Please sign in to comment.