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.
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 email@example.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