How to Contribute Source Code and Documentation

Pylons Project projects follow a coding style with minimum standards. All substantive code contributions to the Pylons Project must be tested. See Unit Testing Guidelines. Documentation contributions should follow the Pylons Project Documentation Style Guide.

For substantive contributions to its major projects, The Pylons Project requires the following of its contributors:

  • An assignment of half-ownership of submitted code or documentation for substantive contributions to its official projects. We require the assignment because we are interested in, eventually, giving the copyright of the code to a foundation. Obtaining half-ownership of the code makes it possible for us to do this credibly without chasing people for permission to do so when that time comes.
  • Assurance that the contributor will not check in incompatibly-licensed code.
  • Assurance that the contributor will not allow their submission credentials to be used by a third party who may not agree to the constraints of a contribution agreement.
  • Assurance that the submitted code does not infringe upon or violate the rights of a third party.
  • Assurance that the contributor understands any licensing exceptions local to the repository they are contributing to.

"Signing" a contribution agreement is simple: just add your name and a date to the bottom of a "CONTRIBUTORS" file found in the root of the Pylons Project project to which you would like to contribute. Optimally, this will be done when you submit code through GitHub (whether via a pull request from a separate repository fork, or by direct push if you have push access to the canonical project repository). Your intent to abide by the contributor agreement is signified by your commit to the "CONTRIBUTORS.md" file with your name and a date.

Examples of "substantive" contributions:

  • Submitting a new feature for review.
  • Submitting artwork.
  • Submitting a new chapter to documentation.

For bugfixes and other minor contributions, signing the contributor file is usually not required. However, the reviewer of a particular submission is the arbiter of whether that submission requires the signing of the contributors file.

Contributor Agreement

A sample of the current contributor agreement is reproduced in full below:

Pylons Project Contributor Agreement
====================================

The submitter agrees by adding his or her name within the section below
named "Contributors" and submitting the resulting modified document to
the canonical shared repository location for this software project
(whether directly, as a user with "direct commit access", or via a "pull
request"), he or she is signing a contract electronically.  The submitter
becomes a Contributor after a) he or she signs this document by adding
their name beneath the "Contributors" section below, and b) the resulting
document is accepted into the canonical version control repository.

Treatment of Account
---------------------

Contributor will not allow anyone other than the Contributor to use his
or her username or source repository login to submit code to a Pylons
Project source repository. Should Contributor become aware of any such
use, Contributor will immediately notify Agendaless Consulting.
Notification must be performed by sending an email to
webmaster@agendaless.com.  Until such notice is received, Contributor
will be presumed to have taken all actions made through Contributor's
account. If the Contributor has direct commit access, Agendaless
Consulting will have complete control and discretion over capabilities
assigned to Contributor's account, and may disable Contributor's account
for any reason at any time.

Legal Effect of Contribution
----------------------------

Upon submitting a change or new work to a Pylons Project source
Repository (a "Contribution"), you agree to assign, and hereby do assign,
a one-half interest of all right, title and interest in and to copyright
and other intellectual property rights with respect to your new and
original portions of the Contribution to Agendaless Consulting. You and
Agendaless Consulting each agree that the other shall be free to exercise
any and all exclusive rights in and to the Contribution, without
accounting to one another, including without limitation, the right to
license the Contribution to others under the Repoze Public License. This
agreement shall run with title to the Contribution. Agendaless Consulting
does not convey to you any right, title or interest in or to the Program
or such portions of the Contribution that were taken from the
Program. Your transmission of a submission to the Pylons Project source
Repository and marks of identification concerning the Contribution itself
constitute your intent to contribute and your assignment of the work in
accordance with the provisions of this Agreement.

License Terms
-------------

Code committed to the Pylons Project source repository (Committed Code)
must be governed by the Repoze Public License
(http://repoze.org/LICENSE.txt, aka "the RPL") or another license
acceptable to Agendaless Consulting.  Until Agendaless Consulting
declares in writing an acceptable license other than the RPL, only the
RPL shall be used.  A list of exceptions is detailed within the
"Licensing Exceptions" section of this document, if one exists.

Representations, Warranty, and Indemnification
----------------------------------------------

Contributor represents and warrants that the Committed Code does not
violate the rights of any person or entity, and that the Contributor has
legal authority to enter into this Agreement and legal authority over
Contributed Code. Further, Contributor indemnifies Agendaless Consulting
against violations.

Cryptography
------------

Contributor understands that cryptographic code may be subject to
government regulations with which Agendaless Consulting and/or entities
using Committed Code must comply. Any code which contains any of the
items listed below must not be checked-in until Agendaless Consulting
staff has been notified and has approved such contribution in writing.

- Cryptographic capabilities or features

- Calls to cryptographic features

- User interface elements which provide context relating to cryptography

- Code which may, under casual inspection, appear to be cryptographic.

Notices
-------

Contributor confirms that any notices required will be included in any
Committed Code.

Licensing Exceptions
====================

None

List of Contributors
====================

The below-signed are contributors to a code repository that is part of
the project named "XXX".  Each below-signed contributor has read,
understand and agrees to the terms above in the section within this
document entitled "Pylons Project Contributor Agreement" as of the date
beside his or her name.

Contributors
------------

- Wile E. Coyote, 2010/11/08