| # Contributing to the AWS SDK for Java |
| Thank you for your interest in contributing the AWS SDK for Java! We work hard |
| to provide a high quality and useful SDK for our customers, and we appreciate |
| your interest in helping us and the rest of our community of users. We welcome |
| bug reports, feature requests, and code contributions. |
| |
| __Jump To:__ |
| * [Bug Reports](#bug-reports) |
| * [Feature Requests](#feature-requests) |
| * [Code Contributions](#code-contributions) |
| * [Additional Resources](#additional-resources) |
| |
| ## Bug Reports |
| Bug reports are accepted through the [this][bug-report] page. |
| |
| The following labels are used to track bug related issues: [Bug][label-bug], |
| [Documentation Issue][label-doc-issue]. |
| |
| ### Before Submitting a Bug Report |
| Before submitting a bug report, please do the following: |
| |
| 1. Do a search through the existing issues to make sure it has not already been |
| reported. If there's an existing one, be sure give a 👍 reaction which will |
| help us prioritize which issues to address first. |
| |
| 2. If possible, upgrade to the latest release of the SDK. The SDK has a near |
| daily release cadence so it's possible the bug has already been fixed in the |
| latest version. We maintain a strong backwards compatibility guarantee |
| between patch version releases so you can be confident that your application |
| will continue to work as expected with the newer version. |
| |
| If, after doing the above steps, you determine that you need to submit a bug |
| report, refer to the next section. |
| |
| ### Submitting a Bug Report |
| So that we are able to assist you as effectively as possible with the issue, |
| please ensure that your bug report has the following: |
| |
| * A short, descriptive title. Ideally, other community members should be able |
| to get a good idea of the issue just from reading the title. |
| * A succint, detailed description of the problem you're experiencing. This |
| should include: |
| * Expected behavior of the SDK and the actual behavior exhibited. |
| * Any details of your application environment that may be relevant. At |
| minimum, this should include the __SDK version__ and __JRE version__. |
| * If applicable, the exception stacktrace. |
| * If you are able to create one, include a [Minimal Working Example][mwe] |
| that reproduces the issue. |
| * [Markdown][markdown] formatting as appropriate to make the report easier to |
| read; for example use code blocks when pasting a code snippet and exception |
| stacktraces. |
| |
| ## Feature Requests |
| Feature requests are submitted through the [this][feature-request] page. |
| |
| As with Bug Reports, please do a search of the open requests first before |
| submitting a new one to avoid duplicates. If you find an existing one, give it |
| a +1. |
| |
| __NOTE:__ If this is a feature you intend to implement, please be sure to |
| submit the feature request *before* working on any code changes. This will |
| allow members on the SDK team to have a discussion with you to ensure that it's |
| the right design and that it makes sense to include in the SDK. Keep in mind |
| that other concerns like source and binary compatibility will also play a |
| deciding factor. |
| |
| Feature requests are labeled with [feature-request][label-feature-request]. |
| |
| ### Submitting a Feature Request |
| Open an [issue][issues] with the following: |
| |
| * A short, descriptive title. Ideally, other community members should be able |
| to get a good idea of the feature just from reading the title. |
| * A detailed description of the the proposed feature. Include justification for |
| why it should be added to the SDK, and possibly example code to illustrate |
| how it should work. |
| * [Markdown][markdown] formatting as appropriate to make the request easier to |
| read. |
| * If you intend to implement this feature, indicate that you'd like to the |
| issue to be assigned to you |
| |
| ## Code Contributions |
| Code contributions to the SDK are done through [Pull Requests][pull-requests]. |
| Please keep the following in mind when considering a code contribution: |
| |
| * The SDK is released under the [Apache 2.0 License][license]. |
| |
| Any code you submit will be released under this license. If you are |
| contributing a large/substantial feature, you may be asked to sign a |
| Contributor License Agreement (CLA). |
| * For anything but very small or quick changes, you should always start by |
| checking the [Issues][issues] page to see if the work is already being done |
| by another person. |
| |
| If you're working on a bug fix, check to see if the bug has already been |
| reported. If it has but no one is assigned to it, ask one of the maintainers |
| to assign it to you before beginning work. If you're confident the bug |
| hasn't been reported yet, create a new [Bug Report](#bug-reports) then ask to |
| be assigned to it. |
| |
| If you are thinking about adding entirely new functionality, open a [Feature |
| Request](#feature-requests) or [ping][gitter] the maintainers to ask for |
| feedback first before beginning work; again this is to make sure that no one |
| else is already working on it, and also that it makes sense to be included in |
| the SDK. |
| * All code contributions must be accompanied with new or modified tests that |
| verify that the code works as expected; i.e. that the issue has been fixed or |
| that the functionality works as intended. |
| |
| ### Your First Code Change |
| For detailed information on getting started building and making code changes to |
| the SDK, refer to our [Working on the SDK](./docs/GettingStarted.md) doc |
| |
| ### Pull Request Readiness |
| Before submitting your pull request, refer to the pull request readiness |
| checklist below: |
| |
| * [ ] Includes tests to exercise the new behavior |
| * [ ] Code is documented, especially public and user-facing constructs |
| * [ ] Local run of `./mvnw package`(Linux) or `./mvnw.cmd package`(Windows) succeeds |
| * [ ] Git commit message is detailed and includes context behind the change |
| * [ ] If the change is related to an existing Bug Report or Feature Request, |
| the issue number is referenced |
| * [ ] A short description of the change added to |
| [CHANGELOG.md](./CHANGELOG.md). Adding a new entry must be accomplished by |
| running the `scripts/new-change` script and following the instructions. |
| Commit the new file created by the script in `.changes/next-release` with |
| your changes. |
| |
| __Note__: Some changes have additional requirements. Refer to the section below |
| to see if your change will require additional work to be accepted. |
| |
| #### Additional Pull Request Requirements |
| ##### Reactive Streams |
| If the change includes implementations of the [Reactive Streams |
| interfaces](https://github.com/reactive-streams/reactive-streams-jvm), the |
| change must also contain verification tests using the [Reactive Streams |
| Technology Compatibility |
| Kit](https://github.com/reactive-streams/reactive-streams-jvm/tree/master/tck) |
| to ensure specificiation compliance. |
| |
| ### Getting Your Pull Request Merged |
| All Pull Requests must be approved by at least one member of the SDK team |
| before it can be merged in. The members only have limited bandwitdth to review |
| Pull Requests so it's not unusual for a Pull Request to go unreviewed for a few |
| days, especially if it's a large or complex one. If, after a week, your Pull |
| Request has not had any engagement from the SDK team, feel free to ping a |
| member to ask for a review. |
| |
| ## Additional Resources |
| We maintain [docs](docs/README.md) where information like design decisions, internal |
| architecture, and style conventions are documented that you may find helpful |
| when contributing to the SDK. |
| |
| |
| [license]: ./LICENSE.txt |
| [mwe]: https://en.wikipedia.org/wiki/Minimal_Working_Example |
| [markdown]: https://guides.github.com/features/mastering-markdown/ |
| [issues]: https://github.com/aws/aws-sdk-java-v2/issues |
| [pull-requests]: https://github.com/aws/aws-sdk-java-v2/pulls |
| [label-bug]: https://github.com/aws/aws-sdk-java-v2/labels/bug |
| [label-doc-issue]: https://github.com/aws/aws-sdk-java-v2/labels/documentation |
| [label-feature-request]: https://github.com/aws/aws-sdk-java-v2/labels/feature-request |
| [git-rewriting-history]: https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History |
| [gitter]: https://gitter.im/aws/aws-sdk-java-v2 |
| [bug-report]: https://github.com/aws/aws-sdk-java-v2/issues/new?assignees=&labels=bug%2Cneeds-triage&template=bug-report.yml&title=%28short+issue+description%29 |
| [feature-request]: https://github.com/aws/aws-sdk-java-v2/issues/new?assignees=&labels=feature-request%2Cneeds-triage&template=feature-request.yml&title=%28short+issue+description%29 |