CONTRIBUTING.md
086400cd
 Contributing to Ansible
 =======================
 
a478e5c9
 It is required that you read the following information to learn how to contribute to this project.
086400cd
 
 Branch Info
 ===========
 
a478e5c9
 Here's how to understand the branches.
 
086400cd
    * The devel branch corresponds to the latest ongoing release
    * Various release-X.Y branches exist for previous releases
    * All feature work happens on the development branch.
    * Major bug fixes will be made to the last release branch only
    * See CHANGELOG.md for release notes to track each release.
 
 Patch Instructions
 ==================
 
 Contributions to the core and modules are greatly welcome.
 
    * Required Process:
        * Submit github pull requests to the "ansible/devel" branch for features
        * Fixes for bugs may also be submitted to "ansible/release-X.Y" for the last release
        * Make sure "make tests" passes before submitting any requests.
    * Bonus points:
        * Joining the mailing list
        * Fixing bugs instead of sending bug reports.
        * Using squash merges
35fdc541
        * Updating the "rst/*" files in the "docsite/" directory and "docs/" manpage content
086400cd
        * Adding more unit tests
    * Avoid:
        * Sending patches to the mailing list directly.
        * Sending feature pull requests to the 'release' branch instead of the devel branch
        * Sending pull requests to mpdehaan's personal ansible fork.
a478e5c9
        * Sending pull requests about more than one feature in the same pull request.
        * Whitespace restructuring
        * Large scale refactoring without a discussion on the list
 
 Coding Standards
 ================
 
 We're not too strict on style considerations, but we require:
 
    * python 2.6 compliant code, unless in ansible modules, then python *2.4* compliant code (no 'with', etc)
    * 4-space indents, no tabs except in Makefiles
    * under_scores for method names and variables, not camelCase
    * GPLv3 license headers on all files, with copyright on new files with your name on it
    * no single-line if statements, deeply nested list comprehensions, or clever use of metaclasses -- keep it simple
    * comments where appropriate
 
cc30eb74
 Testing Requirements
 ====================
 
572c66b7
 Automation tests are run by "make tests" and contain a mixture of integration and "unit" level tests.  To run the tests you need the following:
cc30eb74
 
    * nose must be installed - https://nose.readthedocs.org/en/latest/
572c66b7
    * ansible tests require paramiko, PyYAML python modules, and python 2.6+.
    * Some tests require additional components (facter, ohai) and will be skipped if not available.
    * Your user environment should allow "ssh 127.0.0.1"
      without a password - so a key held in ssh-agent and an authorized_keys entry.
cc30eb74
 
a478e5c9
 Contributors License Agreement
 ==============================
 
 By contributing you agree that these contributions are your own (or approved by your employer) and you grant a full, complete, irrevocable
 copyright license to all users and developers of the project, present and future, persusant to the license of the project.
086400cd