You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Docs/Contributing.md
+85-30Lines changed: 85 additions & 30 deletions
Original file line number
Diff line number
Diff line change
@@ -10,25 +10,83 @@ Please see the [Community](http://openrails.org/share/community/) page on our we
10
10
11
11
If you've found a bug in Open Rails, please report it in [our bug tracker on Launchpad](https://bugs.launchpad.net/or).
12
12
13
-
## Making a suggestion
13
+
## Suggesting a feature
14
14
15
-
If you've got an idea for Open Rails, please report it in [our road-map on Trello](https://trello.com/b/DS2h3Pxc/open-rails-roadmap).
15
+
If you've got a feature suggestion for Open Rails, please report it in [our road-map on Trello](https://trello.com/b/DS2h3Pxc/open-rails-roadmap).
16
16
17
-
## Writing code
17
+
## Making changes
18
18
19
-
### Choosing what to work on
19
+
You are free to make any modifications to the Open Rails code that you like; that's how open source works. However, if you'd like your feature to be included in the official version, there is a process to ensure that the community agrees and to review the code for potential issues prior to inclusion.
20
+
21
+
In most cases, you can get started immediately with making the changes and creating a pull request. We do ask for some additional steps to be taken for some bugs and all new features, but they can come before or after the pull request. Please feel free to share ideas and proposals as pull requests!
22
+
23
+
**Note:** You must start your work from the "master" branch and merged pull requests back into the "master" branch, unless we direct you otherwise.
24
+
25
+
### Documentation and translations
26
+
27
+
If you'd like to improve the [documentation](./), [manual](../Source/Documentation/Manual), or [translations](../Source/Locales) you can get started immediately.
28
+
29
+
There are no requirements for the pull request.
30
+
31
+
### Bug process
32
+
33
+
If you'd like to fix a bug, you can get started immediately. If the fix turns out to be very small, you do not even need a bug report. Otherwise, you will need to make sure it has been reported on [our bug tracker on Launchpad](https://bugs.launchpad.net/or). If it has not, you can report the bug *and* fix it!
34
+
35
+
There are no requirements for creating the pull request.
36
+
37
+
These things must be done in the required order:
38
+
39
+
1. If the changes adds or removes more than 10 lines each, a bug report must be linked in the description before it can be approved
40
+
41
+
### Feature process
42
+
43
+
If you'd like to add a feature, you can get started immediately. However, we would prefer you to to do some things first. These will ensure that people are aware you are working on a particular feature and give the community some time to resolve any potential issues.
44
+
45
+
The following diagram shows the required order (solid lines) and recommended order (dashed lines):
46
+
47
+
```mermaid
48
+
flowchart
49
+
roadmapCreated(["Road-map (created)"])
50
+
roadmapApproved(["Road-map (approved)"])
51
+
discussion(["Discussion (1 week)"])
52
+
prDraft(["Pull request (draft)"])
53
+
prReadyForReview(["Pull request (ready for review)"])
All new features must result in the following three things existing:
61
+
62
+
1. A road-map card in [Trello](https://trello.com/b/DS2h3Pxc/open-rails-roadmap)
63
+
2. A forum discussion in [Elvas Tower](http://www.elvastower.com/forums/index.php?/forum/299-open-rails-development-testing-and-support/) more than one week old with all issues resolved
64
+
3. A pull request
20
65
21
-
You are free to make any modifications to the Open Rails code that you like; that's how open source works. However, we won't necessarily include all changes in the official version, so here are the ways to ensure that what you're working on will be accepted:
66
+
These things must be done in the required order:
22
67
23
-
* If you'd like to work on something that is already known about and accepted, please check through [the confirmed bugs](https://bugs.launchpad.net/or/+bugs?orderby=-importance&field.status%3Alist=TRIAGED) and [accepted feature requests (anything except the first two columns)](https://trello.com/b/DS2h3Pxc/open-rails-roadmap).
24
-
* If you don't see anything you'd like to work on in the _confirmed bugs_ or _accepted feature requests_, please reach out to us in the [Elvas Tower forums](http://www.elvastower.com/forums/index.php?/forum/299-open-rails-development-testing-and-support/). You can also [report a bug](https://bugs.launchpad.net/or/+filebug), [make a suggestion for the road-map](https://trello.com/c/zznjApL8/102-click-me-to-read-how-this-works), or [create a blueprint](https://blueprints.launchpad.net/or/+addspec) yourself. Blueprints should only be used by seasoned Open Rails developers. In each case, we'll get back to you on whether we think it is appropriate for inclusion (see [how bugs and feature requests are accepted](#how-bugs-and-features-are-accepted)).
68
+
1. The road-map card cannot be approved without the completed discussion
69
+
2. The pull request cannot be ready for review without the completed discussion
70
+
3. The pull request cannot be approved without the approved road-map card
25
71
26
-
When choosing what to work on from the road-map, if multiple things are interesting to you, we would prefer that you choose the item with the highest priority (see list below). This is only a guideline for helping to choose, though, so if you do want to work on something with a low priority, that's fine - all we ask is that you let us know in the [Elvas Tower forums](http://www.elvastower.com/forums/index.php?/forum/299-open-rails-development-testing-and-support/).
72
+
Our recommended order is:
27
73
28
-
1. The next minor release (e.g. 1.4)
29
-
2. Current major release (e.g. 1.x)
30
-
3. Next major release (e.g. 2.x)
31
-
4. Future
74
+
1. Create road-map card
75
+
2. Create forum discussion
76
+
3. Create draft pull request
77
+
4. When discussion is completed, pull request can be ready for review
78
+
5. When road-map card is approved, pull request can be approved (if code review is okay)
79
+
80
+
**Note:** A blueprint can be used by a seasoned Open Rails developer in place of a road-map card.
81
+
82
+
### Choosing what to work on
83
+
84
+
If you do not know what to work on, you can find bugs and features we are interested in fixed/adding here:
*[Accepted feature requests (anything in an N.M or N.x list)](https://trello.com/b/DS2h3Pxc/open-rails-roadmap)
88
+
89
+
If multiple things are interesting to you, we would prefer that you choose the item with the highest priority to us - a higher importance or heat in Launchpad bugs and lowest version number in Trello cards.
32
90
33
91
If you're unsure what you could contribute to in the code, and nothing looks interesting in the _confirmed bugs_ and _accepted feature requests_, please get in touch on the [Elvas Tower forums](http://www.elvastower.com/forums/index.php?/forum/299-open-rails-development-testing-and-support/), giving us some idea of your experience and interests, and we'll do our best to find something for you.
34
92
@@ -81,15 +139,22 @@ If you are in any doubt about the use of data by multiple threads, or your imple
81
139
82
140
Your code should be fixing exactly one bug or adding a single new feature; mixing multiple bug fixes or new features makes it harder to review your changes and risks them not being accepted.
83
141
84
-
### Testing and Unstable Versions
142
+
### Different versions of code
143
+
144
+
When your pull request is draft or ready for review, it will not be included in any version of Open Rails unless:
145
+
146
+
* You are a member of the core team
147
+
* A member of the core team adds a particular label
148
+
149
+
If your pull request satisfies the above criteria, it will be automatically included in the Unstable Version (unless there are merge conflicts).
85
150
86
-
Changes to the Git "master" branch are selected by peer review and the branch is automatically published as the "Testing Version" every Friday.
87
-
Changes to the Git "unstable" branch are automatically selected and published as the "Unstable Version" every 15 minutes.
88
-
Your changes should always start from the "master" branch and not the "unstable" branch.
151
+
After your pull request is merged, it will be included in the Testing Version and Unstable Version.
152
+
153
+
When we start preparing for a new Stable Version, all code in the Testing Version is used, but no further changes are included during the preparation time (typically 1 month).
89
154
90
155
### Submitting your code
91
156
92
-
When you're done writing code, you should make a pull request on GitHub or a merge request on Launchpad. The title and description of the requests should clearly and concisely indicate what bug or feature you've implemented and you will need to include links to whichever of the following are appropriate:
157
+
When you're done writing code, you should make a pull request on GitHub. The title and description of the requests should concisely indicate what bug or feature you've implemented and you will need to include links to whichever of the following are appropriate:
93
158
94
159
* Bug report
95
160
* Road-map card
@@ -115,12 +180,12 @@ A member of [our management team](https://launchpad.net/~orsupervisors/+members)
115
180
116
181
## Reviewing pull requests
117
182
118
-
If you are reviewing someone elses code for Open Rails, you will need to ensure that they have met the above "Writing code" guidelines as best as possible. This will necessitate, at minimum:
183
+
If you are reviewing someone else's code for Open Rails, you will need to ensure that they have met the above "Making changes" guidelines as best as possible. This will necessitate, at minimum:
119
184
120
185
* Check for linked bug report or feature request
121
186
* Check bug report is triaged, and feature request is approved
122
187
* For a bug report, it should have status "Triaged"
123
-
* For a road-map card, it should not be in the first two columns ("Unsorted" and "Not planned")
188
+
* For a road-map card, it should be in an N.M or N.x list
124
189
* For a blueprint, it should have direction "Approved"
125
190
* Read through all of the changes to the code
126
191
* Check that all new code follows the requirements:
@@ -136,7 +201,7 @@ If you are reviewing someone elses code for Open Rails, you will need to ensure
136
201
137
202
Although we'd like all code written to exactly match the guidelines given in this document, that is not practical - not least because nobody is likely able to remember every single detail of the guidelines at any one time, whether writing or reviewing code. Therefore, there is always going to be some leeway between the guidelines and what is accepted into Open Rails.
138
203
139
-
You should take special care when reviewing first-time and new contributors, to ensure that we accept their contribution even when it does not strictly conform to the guidelines, as this will encourage them to continue contributing.
204
+
You should take extra care when reviewing first-time and new contributors, to ensure that we accept their contribution even when it does not strictly conform to the guidelines, as this will encourage them to continue contributing.
140
205
141
206
For all contributions that deviate from the guidelines, there are a few approaches you can take:
142
207
@@ -145,13 +210,3 @@ For all contributions that deviate from the guidelines, there are a few approach
145
210
* Accept the code as-is, leaving a note for how to improve for the next pull request
146
211
147
212
It is expected that most contributors will quickly correct their code based on feedback, either in the same pull request or subsequent ones, depending on the path taken above. However, if a contributor continues to not meet the same part of the guidelines, you are free to become more strict with them - it's still helpful to suggest the corrected code, but do not feel obliged to spend time helping the same person with the same part of the guidelines repeatedly.
148
-
149
-
## Merging pull requests
150
-
151
-
If you are merging a pull request, you will need to ensure that the merge commit message contains links to whichever of the following are appropriate:
152
-
153
-
* Bug report
154
-
* Road-map card
155
-
* Blueprint
156
-
157
-
These links will be used by automated and manual processes to check on the progress of the project.
0 commit comments