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: CONTRIBUTING.rst
+38-29Lines changed: 38 additions & 29 deletions
Original file line number
Diff line number
Diff line change
@@ -1,109 +1,117 @@
1
+
======================
1
2
Contributing to Slicer
2
3
======================
3
4
4
5
There are many ways to contribute to Slicer, with varying levels of effort. Do try to
5
-
look through the [documentation](https://www.slicer.org/wiki/Documentation/Nightly/Developers) first if something is unclear, and let us know how we can
6
+
look through the `documentation<https://www.slicer.org/wiki/Documentation/Nightly/Developers>`_ first if something is unclear, and let us know how we can
6
7
do better.
7
8
8
-
* Ask a question on the [slicer-devel email list](http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel)
9
-
* Submit a feature request or bug, or add to the discussion on the [Slicer issue tracker](http://na-mic.org/Mantis)
10
-
* Submit a [Pull Request](https://github.com/Slicer/Slicer/pulls) to improve Slicer or its documentation
9
+
* Ask a question on the `slicer-devel email list<http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel>`_
10
+
* Submit a feature request or bug, or add to the discussion on the `Slicer issue tracker<http://na-mic.org/Mantis>`_
11
+
* Submit a `Pull Request<https://github.com/Slicer/Slicer/pulls>`_ to improve Slicer or its documentation
11
12
12
13
We encourage a range of Pull Requests, from patches that include passing tests and
13
14
documentation, all the way down to half-baked ideas that launch discussions.
14
15
15
16
The PR Process, Circle CI, and Related Gotchas
16
17
----------------------------------------------
17
18
18
-
#### How to submit a PR ?
19
+
How to submit a PR ?
20
+
~~~~~~~~~~~~~~~~~~~~
19
21
20
22
If you are new to Slicer development and you don't have push access to the Slicer
21
23
repository, here are the steps:
22
24
23
-
1.[Fork and clone](https://help.github.com/articles/fork-a-repo/) the repository.
25
+
1. `Fork and clone<https://help.github.com/articles/fork-a-repo/>`_ the repository.
24
26
3. Create a branch.
25
-
4.[Push](https://help.github.com/articles/pushing-to-a-remote/) the branch to your GitHub fork.
26
-
5. Create a [Pull Request](https://github.com/Slicer/Slicer/pulls).
27
+
4. `Push<https://help.github.com/articles/pushing-to-a-remote/>`_ the branch to your GitHub fork.
28
+
5. Create a `Pull Request<https://github.com/Slicer/Slicer/pulls>`_.
27
29
28
-
This corresponds to the `Fork & Pull Model` mentioned in the [GitHub flow](https://guides.github.com/introduction/flow/index.html)
30
+
This corresponds to the ``Fork & Pull Model`` mentioned in the `GitHub flow<https://guides.github.com/introduction/flow/index.html>`_
29
31
guides.
30
32
31
33
When submitting a PR, the developers following the project will be notified. That
32
-
said, to engage specific developers, you can add `Cc: @<username>` comment to notify
34
+
said, to engage specific developers, you can add ``Cc: @<username>`` comment to notify
33
35
them of your awesome contributions.
34
36
Based on the comments posted by the reviewers, you may have to revisit your patches.
35
37
36
38
37
-
#### How to efficiently contribute ?
39
+
How to efficiently contribute ?
40
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38
41
39
42
We encourage all developers to:
40
43
41
44
* review and follow the style guidelines described
42
-
[on the wiki](https://www.slicer.org/wiki/Documentation/Nightly/Developers/Style_Guide#Commits).
45
+
`on the wiki<https://www.slicer.org/wiki/Documentation/Nightly/Developers/Style_Guide#Commits>`_.
43
46
44
47
* add or update tests. There are plenty of existing tests to inspire from. The
45
-
testing [how-tos](https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/Testing) are
48
+
testing `how-tos<https://www.slicer.org/wiki/Documentation/Nightly/Developers/Tutorials/Testing>`_ are
46
49
also resourceful.
47
50
48
51
* consider potential backward compatibility breakage and discuss these on the
49
52
mailing list. For example, update of ITK, Python, Qt or VTK version, change to
50
53
core functionality, should be carefully reviewed and integrated. Ideally, several
51
54
developers would test that the changes don't break extensions.
52
55
53
-
#### How to integrate a PR ?
56
+
How to integrate a PR ?
57
+
~~~~~~~~~~~~~~~~~~~~~~~
54
58
55
59
Getting your contributions integrated is relatively straightforward, here
56
60
is the checklist:
57
61
58
62
* All tests pass
59
63
* Consensus is reached. This usually means that at least two reviewers approved
60
-
the changes (or added a `LGTM` comment) and at least one business day passed
61
-
without anyone objecting. `LGTM` is an acronym for _Looks Good to Me_.
64
+
the changes (or added a ``LGTM`` comment) and at least one business day passed
65
+
without anyone objecting. `LGTM` is an acronym for `Looks Good to Me`.
62
66
* To accommodate developers explicitly asking for more time to test the
63
67
proposed changes, integration time can be delayed by few more days.
64
68
65
69
Next, there are two scenarios:
70
+
66
71
* You do NOT have push access: A Slicer core developer will integrate your PR. If
67
72
you would like to speed up the integration, do not hesitate to send a note on
68
73
the mailing list.
69
-
* You have push access: Follow [Integrating topic from external contributor](https://www.slicer.org/wiki/Slicer:git-svn#Integrating_topic_from_external_contributor)
74
+
* You have push access: Follow `Integrating topic from external contributor<https://www.slicer.org/wiki/Slicer:git-svn#Integrating_topic_from_external_contributor>`_
70
75
instructions on the wiki.
71
76
72
77
73
-
#### Automatic testing of pull requests
78
+
Automatic testing of pull requests
79
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74
80
75
81
Every pull request is tested automatically using CircleCI each time you push a
76
82
commit to it. The Github UI will restrict users from merging pull requests until
77
83
the CI build has returned with a successful result indicating that all tests have
78
84
passed.
79
85
80
86
The testing infrastructure is described in details in the
81
-
[3D Slicer Improves Testing for Pull Requests Using Docker and CircleCI](https://blog.kitware.com/3d-slicer-improves-testing-for-pull-requests-using-docker-and-circleci/)
87
+
`3D Slicer Improves Testing for Pull Requests Using Docker and CircleCI<https://blog.kitware.com/3d-slicer-improves-testing-for-pull-requests-using-docker-and-circleci/>`_
82
88
blog post.
83
89
84
90
85
-
#### Nightly tests
91
+
Nightly tests
92
+
~~~~~~~~~~~~~
86
93
87
94
After changes are integrated, every evening at 10pm EST (3am UTC), Slicer build bots (aka factories)
88
95
will build, test and package Slicer application and all its extensions on Linux, MacOSX
89
-
and Windows. Results are published daily on [CDash](http://slicer.cdash.org/index.php?project=Slicer4)
96
+
and Windows. Results are published daily on `CDash<http://slicer.cdash.org/index.php?project=Slicer4>`_
90
97
and developers introducing changes introducing build or test failures are notified by
91
98
email.
92
99
93
100
94
-
#### Decision-making process
101
+
Decision-making process
102
+
~~~~~~~~~~~~~~~~~~~~~~~
95
103
96
-
1. Given the topic of interest, initiate discussion on the [mailing list](http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel).
104
+
1. Given the topic of interest, initiate discussion on the `mailing list<http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel>`_.
97
105
98
106
2. Identify a small circle of community members that are interested to study the
99
107
topic in more depth.
100
108
101
109
3. Take the discussion off the general list, work on the analysis of options and
102
-
alternatives, summarize findings on the wiki or similar. [Labs](https://www.slicer.org/wiki/Documentation/Labs)
110
+
alternatives, summarize findings on the wiki or similar. `Labs<https://www.slicer.org/wiki/Documentation/Labs>`_
103
111
page are usually a good ground for such summary.
104
112
105
113
4. Announce on the mailing list the in-depth discussion of the topic for the
106
-
[Slicer Community hangout](https://www.slicer.org/wiki/Documentation/Nightly/Developers/Meetings),
114
+
`Slicer Community hangout<https://www.slicer.org/wiki/Documentation/Nightly/Developers/Meetings>`_,
107
115
encourage anyone that is interested in weighing in on the topic to join the
108
116
discussion. If there is someone who is interested to participate in the discussion,
109
117
but cannot join the meeting due to conflict, they should notify the leaders of
@@ -112,12 +120,13 @@ email.
112
120
5. Hopefully, reach consensus at the hangout and proceed with the agreed plan.
113
121
114
122
115
-
*The initial version of these guidelines was established during the [winter
0 commit comments