The CDK is an open source project open to contribution from anyone who chooses to do so. Anyone may contribute anything to the project they wish. This includes, but is not limited to: code, build system enhancements, documentation, examples, and supporting tools. There are, however, a few guidelines, as well as even fewer hard rules we ask you to follow.
In order to accept any contribution, the contributor must complete and return a Contributor License Agreement, or CLA. Separate CLAs exist for individuals (an individual contributor license agreement, or ICLA) and corporations (a CCLA). The CLA grants a copyright and patent license to Cloudera, and users of the software, states that you are legally entitled to grant such a license, as well as other important stuff. See the Cloudera ICLA and Cloudera CCLA files included with this software for all of the details.
Completed CLAs may be emailed to cla@cloudera.com, faxed, or snail mailed to Cloudera.
This project uses Github. Pull requests are the easiest form of contribution to accept and preferred. If this sounds like Klingon to you, Github has an excellent description of using pull requests. We follow the _Fork & Pull_ model described in the Github documentation.
Contributions are strongly encouraged. Its the easiest way to get the features you want into the code, and fast. However, the project maintainers are tasked with developing software for many people with diverse requirements and, as a result, may not accept all contributions. Here are some tips for ensuring a contribution is accepted.
Its really important to remember that many people use this software. Features, improvements, or changes that do not apply to a wide audience may not make sense to include in the project. Put yourself in other peoples shoes and ask if this is something that is useful to them.
Its critical that the code base, docs, and examples behave and look the same. If some parts of the code use different libraries to do the same thing, have slightly different semantics or guarantees, use different naming conventions, or track different standards, its very likely your contribution cant be accepted. Put yourself in the shoes of a new contributor; they should only have to learn a single way of doing things.
Its likely that youll receive feedback on your contribution, especially those who are new to contributing to open source projects. Dont panic! Were all very nice people. Keep a few things in mind:
Disagree and commit
Sometimes, theres no compromise, no middle ground. Sometimes, people are just going to see things differently. Some people like baseball; not everything in life makes sense. When this happens, please understand were all just trying to do what we think is right. If a contribution is rejected, or something doesnt make sense, tell us, accept the decision, and move on.
Watch this: http://ecorner.stanford.edu/authorMaterialInfo.html?mid=1642
Now watch it again: http://ecorner.stanford.edu/authorMaterialInfo.html?mid=1642