diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e980b6eb7da..76aa8dc5167 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,13 +29,9 @@ content up on places like github to share with others. Sharing A Feature Idea ---------------------- -If you have an idea for a new feature, you can open a new ticket at -[github.com/ansible/ansible](https://github.com/ansible/ansible), though in general we like to -talk about feature ideas first and bring in lots of people into the discussion. Consider stopping -by the -[Ansible project mailing list](https://groups.google.com/forum/#!forum/ansible-project) ([Subscribe](https://groups.google.com/forum/#!forum/ansible-project/join)) -or #ansible on irc.freenode.net. There is an overview about more mailing lists -later in this document. +Ideas are very welcome and the best place to share them is the [Ansible project mailing list](https://groups.google.com/forum/#!forum/ansible-project) ([Subscribe](https://groups.google.com/forum/#!forum/ansible-project/join)) or #ansible on irc.freenode.net. + +While you can file a feature request on GitHub, pull requests are a much better way to get your feature added than submitting a feature request. Open source is all about itch scratching, and it's less likely that someone else will have the same itches as yourself. We keep code reasonably simple on purpose so it's easy to dive in and make additions, but be sure to read the "Contributing Code" section below too -- as it doesn't hurt to have a discussion about a feature first -- we're inclined to have preferences about how incoming features might be implemented, and that can save confusion later. Helping with Documentation -------------------------- @@ -58,18 +54,24 @@ The Ansible project keeps it’s source on github at and takes contributions through [github pull requests](https://help.github.com/articles/using-pull-requests). -It is usually a good idea to join the ansible-devel list to discuss any large features prior to submission, and this -especially helps in avoiding duplicate work or efforts where we decide, upon seeing a pull request for the first -time, that revisions are needed. (This is not usually needed for module development) +It is usually a good idea to join the ansible-devel list to discuss any large features prior to submission, and this especially helps in avoiding duplicate work or efforts where we decide, upon seeing a pull request for the first time, that revisions are needed. (This is not usually needed for module development) + +Note that we do keep Ansible to a particular aesthetic, so if you are unclear about whether a feature +is a good fit or not, having the discussion on the development list is often a lot easier than having +to modify a pull request later. When submitting patches, be sure to run the unit tests first “make tests” and always use “git rebase” vs “git merge” (aliasing git pull to git pull --rebase is a great idea) to -avoid merge commits in your submissions. We will require resubmission of pull requests that -contain merge commits. +avoid merge commits in your submissions. There are also integration tests that can be run in the "tests/integration" directory. -We’ll then review your contributions and engage with you about questions and so on. Please be -advised we have a very large and active community, so it may take awhile to get your contributions -in! Patches should be made against the 'devel' branch. +In order to keep the history clean and better audit incoming code, we will require resubmission of pull requests that contain merge commits. Use "git pull --rebase" vs "git pull" and "git rebase" vs "git merge". Also be sure to use topic branches to keep your additions on different branches, such that they won't pick up stray commits later. + +We’ll then review your contributions and engage with you about questions and so on. + +As we have a very large and active community, so it may take awhile to get your contributions +in! See the notes about priorities in a later section for understanding our work queue. + +Patches should be made against the 'devel' branch. Contributions can be for new features like modules, or to fix bugs you or others have found. If you are interested in writing new modules to be included in the core Ansible distribution, please refer @@ -108,6 +110,44 @@ the mailing list or IRC first. As we are a very high volume project, if you det you do have a bug, please be sure to open the issue yourself to ensure we have a record of it. Don’t rely on someone else in the community to file the bug report for you. +It may take some time to get to your report, see "A Note About Priorities" below. + +A Note About Priorities +======================= + +Ansible was one of the top 5 projects with the most OSS contributors on GitHub in 2013, and well over +600 people have added code to the project. As a result, we have a LOT of incoming activity to process. + +In the interest of transparency, we're telling you how we do this. + +In our bug tracker you'll notice some labels - P1, P2, P3, P4, and P5. These are our internal +priority orders that we use to sort tickets. + +With some exceptions for easy merges (like documentation typos for instance), +we're going to spend most of our time working on P1 and P2 items first, including pull requests. +These usually relate to important +bugs or features affecting large segments of the userbase. So if you see something categorized +"P3 or P4", and it's not appearing to get a lot of immediate attention, this is why. + +These labels don't really have definition - they are a simple ordering. However something +affecting a major module (yum, apt, etc) is likely to be prioritized higher than a module +affecting a smaller number of users. + +Since we place a strong emphasis on testing and code review, it may take a few months for a minor feature to get merged. + +Don't worry though -- we'll also take periodic sweeps through the lower priority queues and give +them some attention as well, particularly in the area of new module changes. So it doesn't neccessarily +mean that we'll be exhausting all of the higher-priority queues before getting to your ticket. + +Release Numbering +================= + +Releases ending in ".0" are major releases and this is where all new features land. Releases ending +in another integer, like "0.X.1" and "0.X.2" are dot releases, and these are only going to contain +bugfixes. Typically we don't do dot releases for minor releases, but may occasionally decide to cut +dot releases containing a large number of smaller fixes if it's still a fairly long time before +the next release comes out. + Online Resources ================ @@ -165,11 +205,10 @@ we post with an @ansible.com address. Community Code of Conduct ------------------------- -Ansible’s community welcomes users of all types, backgrounds, and skill levels. Please -treat others as you expect to be treated, keep discussions positive, and avoid discrimination -or engaging in controversial debates (except vi vs emacs is cool). Posts to mailing lists -should remain focused around Ansible and IT automation. Abuse of these community guidelines -will not be tolerated and may result in banning from community resources. +Ansible’s community welcomes users of all types, backgrounds, and skill levels. Please +treat others as you expect to be treated, keep discussions positive, and avoid discrimination, profanity, allegations of Cthulhu worship, or engaging in controversial debates (except vi vs emacs is cool). + +Posts to mailing lists should remain focused around Ansible and IT automation. Abuse of these community guidelines will not be tolerated and may result in banning from community resources. Contributors License Agreement ------------------------------