1 Contributing to ParaView
2 ========================
4 This page documents at a very high level how to contribute to ParaView.
5 Please check our [developer instructions][] for a more detailed guide to
6 developing and contributing to the project, and our [ParaView Git README][]
7 for additional information.
9 The ParaView development cycle is built upon the following components:
11 1. [Issues][] identify any issues including bugs and feature requests. In
12 general, every code change should have an associated issue which identifies
13 the bug being fixed or the feature being added.
15 2. [Merge Requests][] are collections of changes that address issues.
17 3. [Labels][] are labels or tags that can be added and removed to/from issues
18 and/or merge requests to annotate them including indicating their state in
19 the development cycle. See [Labels Glossary][].
21 4. [Milestones][] refer to development milestones such as numbered public
22 releases, or named internal releases.
27 If you have a bug report or a feature request for ParaView, you can use the
28 [issues][] tracker to report a [new issue][].
32 1. Register [GitLab Access] to create an account and select a user name.
33 2. Create a [new issue][].
34 3. Ensure that the issue has a **Title** and **Description**
35 with enough details for someone from the development team to reproduce the
36 issue. See [Gitlab Markdown] guide for styling the **Description**. Include
37 screenshots and sample datasets whenever possible. Typically, reporter
38 **should not** set any other fields for the issue, including
39 **Assignee**, **Milestone**, or **Labels**. These get set by members of the
41 4. If developers need more information on an issue, they will add the
42 `triage:needinfo` label and add a comment for the reporter soliciting more
43 information. Once the reporter has provided the necessary information, he/she
44 should remove the `triage:needinfo` label from the issue to notify the
47 When a developer starts working on an issue, the developer will add the
48 `workflow:active-development` label. Once the development is complete and the issue
49 resolved, the issue will be closed, and the `workflow:active-development` label
50 will be replaced by `workflow:customer-review`. At that point, the reporter can
51 checkout the latest `master` and confirm that the issue has been addressed. If so,
52 the reporter can remove the `workflow:customer-review` label. If the issue was not
53 addressed then the reporter should reopen the issue or solicit more information
54 from the developer by adding the `triage:needinfo` label.
56 To keep the number of open issues manageable, we will periodically expire old issues
57 with no activity. Such issues will be closed and tagged with the label
58 `triage:expired`. Such issues can be reopened if needed.
60 Notes for project managers
61 --------------------------
63 For every issue, project managers can assign:
64 1. `project:...` label to indicate which project this issue is necessary for. An issue
65 may have multiple projects associated with it.
66 2. **Milestone** to indicate which release this issue fix is planned for.
67 3. `priority:...` label to indicate how critical is this issue for the specific
68 milestone, ranging from `priority:required`, `priority:important`,
69 `priority:nice-to-have`, and `priority:low`. Only one priority label makes
75 For every issue, developers can assign:
76 1. `area:...` labels to indicate which area this issue relates to e.g. `area:web`,
78 2. `triage:...` labels to indicate issue triage status. `triage:confirmed` is added
79 when the issue has been confirmed. `triage:easy` is added for issues that are
80 easy to fix. `triage:feature` is added to issues that are new feature requests.
81 `triage:needinfo` is added to solicit more information from the reporter.
82 3. `triage:needinfo` label on closed issues means the reporter or reviewer is
83 requesting more information from the developer before the fix can be reviewed.
84 Please provide such information and then remove the label.
85 4. `workflow:active-development` label should be added to issues under development.
91 Typically, one addresses issues by writing code. To start contributing to ParaView:
93 1. Register [GitLab Access] to create an account and select a user name.
95 2. [Fork ParaView][] into your user's namespace on GitLab.
97 3. Create a local clone of the main ParaView repository. Optionally configure
98 Git to [use SSH instead of HTTPS][].
101 $ git clone --recursive https://gitlab.kitware.com/paraview/paraview.git ParaView
103 The main repository will be configured as your `origin` remote.
105 For more information see: [Setup][] and [download instructions][]
107 4. Run the [developer setup script][] to prepare your ParaView work
108 tree and create Git command aliases used below:
110 $ ./Utilities/SetupForDevelopment.sh
111 This will prompt for your GitLab user name and configure a remote
112 called `gitlab` to refer to it. Choose the defaults for ParaView Data questions.
114 For more information see: [Setup][]
116 5. [Build Paraview][] and run it.
118 6. Edit files and create commits (repeat as needed):
120 $ edit file1 file2 file3
121 $ git add file1 file2 file3
124 Commit messages must be thorough and informative so that
125 reviewers will have a good understanding of why the change is
126 needed before looking at the code. Appropriately refer to the issue
127 number, if applicable.
129 For more information see: [Create a Topic][]
131 7. Push commits in your topic branch to your fork in GitLab:
135 For more information see: [Share a Topic][]
137 8. Run tests with ctest, or use the dashboard
139 9. Visit your fork in GitLab, browse to the "**Merge Requests**" link on the
140 left, and use the "**New Merge Request**" button in the upper right to
141 create a Merge Request.
143 For more information see: [Create a Merge Request][]
145 8. Follow the [review][] process to get your merge request reviewed and tested.
146 On success, the merge-request can be merged and closed.
148 For more information see: [Review a Merge Request][]
150 9. When a merge request is closed, any related issue should be closed (if not
151 closed automatically) and assigned the `workflow:customer-review` label to
152 request a review from the reporter.
154 10. Monitor the related issue for any `triage:needinfo` label additions to provide
155 the customer with any details necessary to test the fix.
157 Our [Wiki][] is used to document features, flesh out designs and host other
158 documentation. We have a [ParaView Discourse][] forum to coordinate development
159 and to provide support.
161 [ParaView Git README]: Documentation/dev/git/README.md
162 [developer instructions]: Documentation/dev/git/develop.md
163 [GitLab Access]: https://gitlab.kitware.com/users/sign_in
164 [Fork ParaView]: https://gitlab.kitware.com/paraview/paraview/-/forks/new
165 [use SSH instead of HTTPS]: Documentation/dev/git/download.md#use-ssh-instead-of-https
166 [download instructions]: Documentation/dev/git/download.md#clone
167 [developer setup script]: /Utilities/SetupForDevelopment.sh
168 [Setup]: Documentation/dev/git/develop.md#Setup
169 [Build Paraview]: Documentation/dev/build.md
170 [Create a Topic]: Documentation/dev/git/develop.md#create-a-topic
171 [Share a Topic]: Documentation/dev/git/develop.md#share-a-topic
172 [Create a Merge Request]: Documentation/dev/git/develop.md#create-a-merge-request
173 [Review a Merge Request]: Documentation/dev/git/develop.md#review-a-merge-request
174 [review]: Documentation/dev/git/develop.md#review-a-merge-request
175 [Issues]: https://gitlab.kitware.com/paraview/paraview/-/issues
176 [Merge Requests]: https://gitlab.kitware.com/paraview/paraview/-/merge_requests
177 [Labels]: https://gitlab.kitware.com/paraview/paraview/-/labels
178 [Milestones]: https://gitlab.kitware.com/paraview/paraview/-/milestones
179 [Wiki]: http://www.paraview.org/Wiki/ParaView
180 [ParaView Discourse]: https://discourse.paraview.org/
181 [Gitlab Markdown]: https://gitlab.kitware.com/help/markdown/markdown
182 [new issue]: https://gitlab.kitware.com/paraview/paraview/-/issues/new
183 [Labels Glossary]: Documentation/dev/git/labels.md