Contributing to Apache Commons Math ====================== You have found a bug or you have an idea for a cool new feature? Contributing code is a great way to give something back to the open source community. Before you dig right into the code there are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things. Getting Started --------------- + Make sure you have a [JIRA account](https://issues.apache.org/jira/). + Make sure you have a [GitHub account](https://github.com/signup/free). + If you're planning to implement a new feature it makes sense to discuss you're changes on the [dev list](https://commons.apache.org/mail-lists.html) first. This way you can make sure you're not wasting your time on something that isn't considered to be in Apache Commons Math's scope. + Submit a ticket for your issue, assuming one does not already exist. + Clearly describe the issue including steps to reproduce when it is a bug. + Make sure you fill in the earliest version that you know has the issue. + Fork the repository on GitHub. Making Changes -------------- + Create a topic branch from where you want to base your work (this is usually the develop/trunk branch). + Make commits of logical units. + Respect the original code style: + Only use spaces for indentation. + Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change. + Check for unnecessary whitespace with git diff --check before committing. + Topic branch names should directly correspond to the JIRA issues they are intended to resolve. For example branch names should look like: + `improvement-MATH-852` + `bug-MATH-1329` + `feature-MATH-621` + Make sure your commit messages are in the proper format. Your commit message should contain the key of the JIRA issue. + For example, a commit message might look like `MATH-852: Adding documentation for development` + Make sure you have added the necessary tests for your changes. + Run all the tests with `mvn clean verify` to assure nothing else was accidentally broken. Making Trivial Changes ---------------------- For changes of a trivial nature to comments and documentation, it is not always necessary to create a new ticket in JIRA. In this case, it is appropriate to start the first line of a commit with '(doc)' instead of a ticket number. Submitting Changes ------------------ + Sign the [Contributor License Agreement][cla] if you haven't already. + Push your changes to a topic branch in your fork of the repository. + Submit a pull request to the repository in the apache organization. + Update your JIRA ticket and include a link to the pull request in the ticket. Additional Resources -------------------- + [Contributing patches](https://commons.apache.org/patches.html) + [Apache Commons Math JIRA project page](https://issues.apache.org/jira/browse/MATH) + [Contributor License Agreement][cla] + [General GitHub documentation](https://help.github.com/) + [GitHub pull request documentation](https://help.github.com/send-pull-requests/) + [Apache Commons Twitter Account](https://twitter.com/ApacheCommons) + #apachecommons IRC channel on freenode.org [cla]:https://www.apache.org/licenses/#clas