Contributing to the Spring Framework
First off, thank you for taking the time to contribute!
Table of Contents
- Code of Conduct
- How to Contribute
- Build from Source
- Source Code Style
- Reference Docs
Code of Conduct
How to Contribute
If you have a question, check StackOverflow using this list of tags, organized by Spring project. Find an existing discussion or start a new one if necessary.
If you suspect an issue, perform a search in the GitHub issue tracker, using a few different keywords. When you find related issues and discussions, prior or current, it helps you to learn and it helps us to make a decision.
Create a Ticket
Reporting an issue or making a feature request is a great way to contribute. Your feedback and the conversations that result from it provide a continuous flow of ideas.
Before you create a ticket, please take the time to research first.
If creating a ticket after a discussion on StackOverflow, please provide a self-sufficient description in the ticket, independent of the details on StackOverview. We understand this is extra work but the issue tracker is an important place of record for design discussions and decisions that can often be referenced long after the fix version, for example to revisit decisions, to understand the origin of a feature, and so on.
When ready create a ticket in the GitHub issue tracker.
When an issue is first created, it may not be assigned and will not have a fix version. Within a day or two, the issue is assigned to a specific committer and the target version is set to "Waiting for Triage". The committer will then review the issue, ask for further information if needed, and based on the findings, the issue is either assigned a fix version or rejected.
When a fix is ready, the issue is marked "Resolved" and may still be re-opened. Once a fix is released, the issue is permanently "Closed". If necessary, you will need to create a new, related ticket with a fresh description.
Submit a Pull Request
You can contribute a source code change by submitting a pull request.
If you have not previously done so, please sign the Contributor License Agreement. You will also be reminded automatically when you submit a pull request.
For all but the most trivial of contributions, please create a ticket. The purpose of the ticket is to understand and discuss the underlying issue or feature. We use the GitHub issue tracker as the preferred place of record for conversations and conclusions. In that sense discussions directly under a PR are more implementation detail oriented and transient in nature.
Always check out the
masterbranch and submit pull requests against it (for target version see settings.gradle). Backports to prior versions will be considered on a case-by-case basis and reflected as the fix version in the issue tracker.
Use short branch names, preferably based on the GitHub issue (e.g.
22276), or otherwise using succinct, lower-case, dash (-) delimited names, such as
Choose the granularity of your commits consciously and squash commits that represent multiple edits or corrections of the same logical change. See Rewriting History section of Pro Git for an overview of streamlining commit history.
Format commit messages using 55 characters for the subject line, 72 lines for the description, followed by the issue fixed, e.g.
Fixes #22276. See the Commit Guidelines section of Pro Git for best practices around commit messages and use
git logto see some examples.
List the GitHub issue number in the PR description.
If accepted, your contribution may be heavily modified as needed prior to merging. You will likely retain author attribution for your Git commits granted that the bulk of your changes remain intact. You may also be asked to rework the submission.
If asked to make corrections, simply push the changes against the same branch, and your pull request will be updated. In other words, you do not need to create a new pull request when asked to make changes.
Build from Source
See the Build from Source wiki page for instructions on how to check out, build, and import the Spring Framework source code into your IDE.
Source Code Style
When making changes locally, use
./gradlew asciidoctor and then browse the result under