Source code contributions fall into two categories: patches or grants. This document describes both and how to handle each.
A patch is a small change to existing code, typically in response to a bug fix or improvement. If you have created a patch, you should:
- Create a JIRA issue (or find a pertinent existing issue) describing the issue needing to be addressed.
- Attach the patch (in the form of a diff) to the above issue and describe how the patch addresses the issue.
- If you intend to have your patch used by us, make sure you grant Apache the rights to use it when you attach the patch to the issue.
- The patch will eventually be reviewed and applied (if accepted) by a Felix committer, but feel free to bug us [nicely] if you get impatient.
Providing patches is a very good way to become a committer at Felix, since we'd rather have you review and apply the patches than us.
A grant involves donating a larger chunk of code developed elsewhere. The line dividing a patch and a grant is sort of like the definition of pornography, we know it when we see it. The steps for granting software are a little more complicated since we need to ensure proper IP handling. For grants, you should:
- Verify that you have the authorization to donate the code.
- Review our developer documentation as well as the general Apache documentation to determine whether you would really like be involved with us and how we work.
- Assuming you're still interested, create a JIRA issue describing the code you wish to donate.
- Attach an archive containing the code along with an MD5 signature of the archive to the above issue. You should remove any existing headers from the source files and add the standard Apache header to each. Note that you keep the rights to your code and can do anything with it you want, you will just grant us the right to use it too.
- Allow the community time to discuss the contribution, after which a vote will be called to accept the contribution.
- If the vote passes, then you will need to submit a software grant form.
- It is also a good idea to submit an ICLA to ease future contributions. Depending on the company you work for, they may also want to contribute a CCLA, although this isn't strictly necessary from an Apache point of view, since it is your responsibility to verify your ability to submit an ICLA.
- Once all of this information is received, then we will gather it and perform IP clearance.
- After a few days, if no red flags are raised, then we'll commit the code and we're good to go.
Granting code is also a path to committership at Felix, since we look more highly on contributions from developers who wish to stay involved in the continuing evolution and maintenance of the donated code.