summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
blob: 649a608384d365a1186883b364c2d4b4a3d46414 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
Ansible Community  Information
==============================

The purpose of the Ansible community is to  unite developers, system administrators, operations, and 
IT managers to share and build great automation solutions.  This document contains all sorts of 
information about how to contribute and interact with Ansible.  Welcome!

Ways to Interact
================

There are a lot of ways to join and  be a part  of the  Ansible community, such as:

Sharing Ansible with Others
---------------------------

You can help share Ansible with others by telling friends and colleagues, writing a blog post, 
or presenting at user groups (like DevOps groups or the local LUG or BUG).  You are also 
welcome to share slides on speakerdeck, sign up for a free account and tag it “Ansible”.   
On Twitter, you can also share things with #ansible.

Sharing Tips and Tricks
-----------------------

Join the [Ansible project mailing list](https://groups.google.com/forum/#!forum/ansible-project) and you 
can share playbooks you may have written and other interesting implementation stories. Put your Ansible 
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) or #ansible
on irc.freenode.net.  

Helping with Documentation
--------------------------

Ansible documentation is a community project too!  If you would like to help with the 
documentation, whether correcting a typo or improving a section, or maybe even 
documenting a new feature, submit a github pull request to  the code that
lives in the “docsite/latest/rst” subdirectory of the project.   Docs are in restructured text
format.  If you aren’t comfortable with restructured text, you can also open a ticket on 
github about any errors you spot or sections you would like to see added. For more information
on creating pull requests, please refer to the
[github help guide](https://help.github.com/articles/using-pull-requests).


Contributing Code
-----------------

The Ansible project keeps it’s source on github at 
[github.com/ansible/ansible](http://github.com/ansible/ansible) 
and takes contributions through
[github pull requests](https://help.github.com/articles/using-pull-requests).

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’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.

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 
to the Module Developers documentation on our website at http://www.ansibleworks.com/docs/moduledev.html.

Ansible's aesthetic encourages simple, readable code and consistent, conservatively extending, 
backwards-compatible improvements.  Code developed for Ansible needs to support Python 2.6+, 
while code in modules must run under Python 2.4 or higher.  Please also use a 4-space indent
and no tabs.

Reporting A Bug
---------------

Bugs can be reported to [github.com/ansible/ansible](http://github.com/ansible/ansible) after 
signing up for a free github account.  Before reporting a bug, please use the bug/issue search 
to see if the issue has already been reported.  

When filing a bug, please make sure to include the following information in the bug report:

* What version of ansible you are using (ansible --version)
* Steps to reproduce the problem
* Expected results
* Actual results.

If you are not sure if something is a bug yet, you are welcome to ask about something on 
the mailing list or IRC first.  As we are a very high volume project, if you determine that 
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.

Online Resources
================

Documentation
-------------

The main ansible documentation can be found at [ansibleworks.com/docs](http://ansibleworks.com/docs). 
As mentioned above this is an open source project, so we accept contributions to the documentation. 
You can also find some best practices examples that we recommend reading at 
[ansible-examples](http://github.com/ansible/ansible-examples).

Mailing lists
-------------

Ansible has several mailing lists.  Your first post to the mailing list will be 
moderated (to reduce spam), so please allow a day or less for your first post.

[ansible-announce](https://groups.google.com/forum/#!forum/ansible-announce) is for release 
announcements and major news.  It is a low traffic read-only list and you should only get a few 
emails a month.

[ansible-project](https://groups.google.com/forum/#!forum/ansible-project) is the main list, and is 
used for sharing cool projects you may have built, talking about Ansible ideas, and for users to ask 
questions or to help other users.

[ansible-devel](https://groups.google.com/forum/#!forum/ansible-devel) is a technical list for 
developers working on Ansible and Ansible modules.  Join here to discuss how to build modules, 
prospective feature implementations, or technical challenges.

To subscribe to a group from a non-google account, you can email the subscription address, for 
example ansible-devel+subscribe@googlegroups.com.

IRC
---

Ansible has a general purpose IRC channel available at #ansible on irc.freenode.net.
Use this channel for all types of conversations, including sharing tips, coordinating 
development work, or getting help from other users.

Miscellaneous Information
=========================

AnsibleWorks Staff
------------------

AnsibleWorks is a company supporting Ansible and building additional solutions based on 
Ansible.  We also do services and support for those that are interested.   Our most 
important task however is enabling all the great things that happen in the Ansible 
community, including organizing software releases of Ansible.  For more information about
any of these things, contact info@ansibleworks.com

On IRC, you can find us as mdehaan, jimi_c, Tybstar, and others.   On the mailing list, 
we post with an @ansibleworks.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.

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, pursuant 
to the license of the project.