CONTRIBUTING.md 6.4 KB
Newer Older
R
Polish  
Rossen Stoyanchev 已提交
1
# Contributing  to the Spring Framework
2

R
Rossen Stoyanchev 已提交
3
First off, thank you for taking the time to contribute! :+1: :tada: 
4

R
Polish  
Rossen Stoyanchev 已提交
5
### Table of Contents
6

R
Rossen Stoyanchev 已提交
7 8 9 10
* [Code of Conduct](#code-of-conduct)
* [How to Contribute](#how-to-contribute)
  * [Discuss](#discuss)
  * [Create a Ticket](#create-a-ticket)
R
Rossen Stoyanchev 已提交
11
  * [Ticket Lifecycle](#ticket-lifecycle)
R
Rossen Stoyanchev 已提交
12 13 14 15
  * [Submit a Pull Request](#submit-a-pull-request)
* [Build from Source](#build-from-source)
* [Source Code Style](#source-code-style)
* [Reference Docs](#reference-docs)
16

17
### Code of Conduct
18

19
This project is governed by the [Spring Code of Conduct](CODE_OF_CONDUCT.adoc).
20 21 22
By participating you are expected to uphold this code.
Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.

23
### How to Contribute
24

25
#### Discuss
26

27
If you have a question, check StackOverflow using
28
[this list of tags](https://spring.io/questions), organized by Spring project.
29
Find an existing discussion or start a new one if necessary.
30

31
If you suspect an issue, perform a search in the
32
[GitHub issue tracker](https://github.com/spring-projects/spring-framework/issues), using a few different keywords.
33 34
When you find related issues and discussions, prior or current, it helps you to learn and
it helps us to make a decision.
35

36
#### Create a Ticket
37

38
Reporting an issue or making a feature request is a great way to contribute. Your feedback
R
Rossen Stoyanchev 已提交
39 40
and the conversations that result from it provide a continuous flow of ideas. 

H
hasheniuk 已提交
41
Before you create a ticket, please take the time to [research first](#discuss).
R
Rossen Stoyanchev 已提交
42

G
Gaurav Deshpande 已提交
43
If creating a ticket after a discussion on StackOverflow, please provide a self-sufficient description in the ticket, independent of the details on StackOverflow. 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.
R
Rossen Stoyanchev 已提交
44

45
When ready create a ticket in the [GitHub issue tracker](https://github.com/spring-projects/spring-framework/issues).
R
Rossen Stoyanchev 已提交
46

R
Rossen Stoyanchev 已提交
47
#### Ticket Lifecycle
48

S
Polish  
Stephane Nicoll 已提交
49 50 51 52 53 54 55
When an issue is first created, it is flagged `waiting-for-triage` waiting for a team
member to triage it. Within a day or two, the issue will then be reviewed and the team
may ask for further information if needed. Based on the findings, the issue is either
assigned a fix version or declined.

When a fix is ready, the issue is closed and may still be re-opened. Once a fix is
released, the issue can't be reopened. If necessary, you will need to create a new,
56
related ticket with a fresh description.
57

58
#### Submit a Pull Request
59 60 61 62

You can contribute a source code change by submitting a pull request.

1. If you have not previously done so, please sign the
63
[Contributor License Agreement](https://cla.pivotal.io/sign/spring). You will also be reminded
64 65
automatically when you submit a pull request.

66 67 68 69 70
1. Should you create a ticket first? The answer is no. Just create the pull request and use
the description to provide context and motivation, as you would for an issue. If you want
to start a discussion first or have already created an issue, once a pull request is created,
we will close the issue as superseded by the pull request, and the discussion of the issue
will continue under the pull request.
71 72

1. Always check out the `master` branch and submit pull requests against it
73
(for target version see [settings.gradle](settings.gradle)).
74 75 76
Backports to prior versions will be considered on a case-by-case basis and reflected as
the fix version in the issue tracker.

77
1. Use short branch names, preferably based on the GitHub issue (e.g. `22276`), or
横云断岭's avatar
横云断岭 已提交
78
otherwise using succinct, lower-case, dash (-) delimited names, such as `fix-warnings`.
79 80 81

1. Choose the granularity of your commits consciously and squash commits that represent
multiple edits or corrections of the same logical change. See
S
Spring Operator 已提交
82
[Rewriting History section of Pro Git](https://git-scm.com/book/en/Git-Tools-Rewriting-History)
83
for an overview of streamlining commit history.
84

S
Stephane Nicoll 已提交
85
1. Format commit messages using 55 characters for the subject line, 72 characters per line
S
Polish  
Stephane Nicoll 已提交
86
for the description, followed by the issue fixed, e.g. `Closes gh-22276`. See the
S
Spring Operator 已提交
87
[Commit Guidelines section of Pro Git](https://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project#Commit-Guidelines)
88
for best practices around commit messages and use `git log` to see some examples.
89

90
1. List the GitHub issue number in the PR description.
91

92 93 94
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.
95

96 97 98
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.
99

100 101 102 103 104 105 106
#### Participate in Reviews

Helping to review pull requests is another great way to contribute. Your feedback
can help to shape the implementation of new features. When reviewing pull requests,
however, please refrain from approving or rejecting a PR unless you are a core
committer for the Spring Framework.

107 108 109 110 111 112
### Build from Source

See the [Build from Source](https://github.com/spring-projects/spring-framework/wiki/Build-from-Source)
wiki page for instructions on how to check out, build, and import the Spring Framework
source code into your IDE.

113
### Source Code Style
114

R
Rossen Stoyanchev 已提交
115 116 117 118
The wiki pages
[Code Style](https://github.com/spring-projects/spring-framework/wiki/Code-Style) and
[IntelliJ IDEA Editor Settings](https://github.com/spring-projects/spring-framework/wiki/IntelliJ-IDEA-Editor-Settings)
defines the source file coding standards we use along with some IDEA editor settings we customize.
119

120
### Reference Docs
121

122
The reference documentation is in the [src/docs/asciidoc](src/docs/asciidoc) directory and, in
S
Spring Operator 已提交
123
[Asciidoctor](https://asciidoctor.org/) format. For trivial changes, you may be able to browse,
124
edit source files, and submit directly from GitHub.
125

126 127
When making changes locally, use `./gradlew asciidoctor` and then browse the result under
`build/asciidoc/html5/index.html`.
128

129
Asciidoctor also supports live editing. For more details read
S
Spring Operator 已提交
130
[Editing AsciiDoc with Live Preview](https://asciidoctor.org/docs/editing-asciidoc-with-live-preview/).
131
Note that if you choose the
S
Spring Operator 已提交
132
[System Monitor](https://asciidoctor.org/docs/editing-asciidoc-with-live-preview/#using-a-system-monitor)
133
option, you can find a Guardfile under `src/docs/asciidoc`.