Skip to content

Commit f39a3b7

Browse files
authored
Merge pull request #35 from PermafrostDiscoveryGateway/develop
Develop
2 parents 7cef9e3 + a039821 commit f39a3b7

8 files changed

+367
-220
lines changed

CONTRIBUTING.md

+192
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
# Contributing
2+
3+
:tada: First off, thanks for contributing! :tada:
4+
5+
- [Types of contributions](#types-of-contributions)
6+
- [Pull Requests](#pull-requests)
7+
- [Development Workflow](#development-workflow)
8+
- [Release process](#release-process)
9+
- [Testing](#testing)
10+
- [Code style](#code-style)
11+
- [Contributor license agreement](#contributor-license-agreement)
12+
13+
## Types of contributions
14+
15+
We welcome all types of contributions, including bug fixes, feature enhancements,
16+
bug reports, documentation, graphics, and many others. You might consider contributing by:
17+
18+
- Report a bug or request a new feature in our [issue tracker](https://github.com/PermafrostDiscoveryGateway/viz-staging/issues)
19+
- Fix a bug and contribute the code with a Pull Request
20+
- Write or edit some documentation
21+
- Sharing helpful tips or FAQ-type answers to users or future contributors
22+
- ...
23+
24+
This is an open source project, and we welcome full
25+
participation in the project. Contributions are reviewed and suggestions are
26+
made to increase the value of this software to the community. We strive to
27+
incorporate code, documentation, and other useful contributions quickly and
28+
efficiently while maintaining a high-quality software product.
29+
30+
## Pull Requests
31+
We use the pull-request model for contributions. See [GitHub's help on pull-requests](https://help.github.com/articles/about-pull-requests/).
32+
33+
In short:
34+
35+
- add an [issue](https://github.com/PermafrostDiscoveryGateway/viz-staging/issues) describing your planned changes, or add a comment to an existing issue;
36+
- on GitHub, fork the [repository](https://github.com/PermafrostDiscoveryGateway/viz-staging)
37+
- on your computer, clone your forked copy of the repository
38+
- base your work on the `develop` branch and commit your changes
39+
- push your branch to your forked repository, and submit a pull-request
40+
- our team will be notified of your Pull Request and will review your changes
41+
- our team may request changes before we will approve the Pull Request, or we will make them for you
42+
- once the code is reviewed, our team will merge in your changes to `develop` for the next planned release
43+
44+
## Development Workflow
45+
46+
Development is managed through the git repository at https://github.com/PermafrostDiscoveryGateway/viz-workflow. The repository is organized into several branches, each with a specific purpose.
47+
48+
**main**. The `main` branch represents the stable branch that is constantly maintained with the current release. It should generally be safe to install and use the `main` branch the same way as binary releases. The version number in all configuration files and the README on the `main` branch follows [semantic versioning](https://semver.org/) and should always be set to the current stable release, for example `2.8.5`.
49+
50+
**develop**. Development takes place on a single branch for integrated development and testing of the set of features
51+
targeting the next release. Commits should only be pushed to this branch once they are ready to be deployed to
52+
production immediately after being pushed. This keeps the `develop` branch in a state of readiness for the next release.
53+
Any unreleased code changes on the `develop` branch represent changes that have been tested and staged for the next
54+
release.
55+
The tip of the `develop` branch always represents the set of features that are awaiting the next release. The develop
56+
branch represents the opportunity to integrate changes from multiple features for integrated testing before release.
57+
58+
Version numbers on the `develop` branch represent either the planned next release number (e.g., `2.9.0`), or the planned next release number with a `beta` designator or release candidate `rc` designator appended as appropriate. For example, `2.8.6-beta1` or `2.9.0-rc1`.
59+
60+
**feature**. To isolate development on a specific set of capabilities, especially if it may be disruptive to other
61+
developers working on the `develop` branch, feature branches should be created.
62+
63+
Feature branches are named as `feature-` + `{issue}` + `-{short-description}`, with `{issue}` being the GitHub issue number related to that new feature. e.g. `feature-23-refactor-storage`.
64+
65+
All `feature-*` branches should be frequently merged with changes from `develop` to
66+
ensure that the branch stays up to date with other features that have
67+
been tested and are awaiting release. Thus, each `feature-*` branch can be tested on its own before it is merged with other features on develop, and afterwards as well. Once a feature is complete and ready for full integration testing, it is generally merged into the `develop` branch after review through a pull request.
68+
69+
**bugfix**. A final branch type are `bugfix` branches, which work the same as feature branches, but fix bugs rather than adding new functionality. Sometimes it is hard to distinguish features from bug fixes, so some repositories may choose to use `feature` branches for both types of change. Bugfix branches are named similarly, following the pattern: `bugfix-` + `{issue}` + `-{short-description}`, with `{issue}` being the GitHub issue number related to that bug. e.g. `bugfix-83-fix-name-display`.
70+
71+
### Development flow overview
72+
73+
```mermaid
74+
%%{init: { 'theme': 'base',
75+
'gitGraph': {
76+
'rotateCommitLabel': false,
77+
'showCommitLabel': false
78+
},
79+
'themeVariables': {
80+
'commitLabelColor': '#ffffffff',
81+
'commitLabelBackground': '#000000'
82+
}
83+
}}%%
84+
gitGraph
85+
commit id: "1" tag: "v1.0.0"
86+
branch develop
87+
checkout develop
88+
commit id: "2"
89+
branch feature-A
90+
commit id: "3"
91+
commit id: "4"
92+
checkout develop
93+
merge feature-A id: "5"
94+
commit id: "6"
95+
commit id: "7"
96+
branch feature-B
97+
commit id: "8"
98+
commit id: "9"
99+
checkout develop
100+
merge feature-B id: "10" type: NORMAL
101+
checkout main
102+
merge develop id: "11" tag: "v1.1.0"
103+
```
104+
105+
## Release process
106+
107+
1. Our release process starts with integration testing in a `develop` branch. Once all
108+
changes that are desired in a release are merged into the `develop` branch, we run
109+
the full set of tests on a clean checkout of the `develop` branch.
110+
2. After testing, the `develop` branch is merged to main, and the `main` branch is tagged with
111+
the new version number (e.g. `2.11.2`). At this point, the tip of the `main` branch will
112+
reflect the new release and the `develop` branch can be fast-forwarded to sync with `main` to
113+
start work on the next release.
114+
3. Releases can be downloaded from the [GitHub releases page](https://github.com/PermafrostDiscoveryGateway/viz-staging/releases).
115+
116+
## Code style
117+
118+
Code should be written to professional standards to enable clean, well-documented,
119+
readable, and maintainable software. While there has been significant variability
120+
in the coding styles applied historically, new contributions should strive for
121+
clean code formatting. We generally follow PEP8 guidelines for Python code formatting,
122+
typically enforced through the `black` code formatting package.
123+
124+
## Contributor license agreement
125+
126+
In order to clarify the intellectual property license
127+
granted with Contributions from any person or entity, you agree to
128+
a Contributor License Agreement ("CLA") with the Regents of the University of
129+
California (hereafter, the "Regents").
130+
131+
1. Definitions.
132+
"You" (or "Your") shall mean the copyright owner or legal entity
133+
authorized by the copyright owner that is making this Agreement
134+
with the Regents. For legal entities, the entity making a
135+
Contribution and all other entities that control, are controlled
136+
by, or are under common control with that entity are considered to
137+
be a single Contributor. For the purposes of this definition,
138+
"control" means (i) the power, direct or indirect, to cause the
139+
direction or management of such entity, whether by contract or
140+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
141+
outstanding shares, or (iii) beneficial ownership of such entity.
142+
"Contribution" shall mean any original work of authorship,
143+
including any modifications or additions to an existing work, that
144+
is intentionally submitted by You to the Regents for inclusion
145+
in, or documentation of, any of the products owned or managed by
146+
the Regents (the "Work"). For the purposes of this definition,
147+
"submitted" means any form of electronic, verbal, or written
148+
communication sent to the Regents or its representatives,
149+
including but not limited to communication on electronic mailing
150+
lists, source code control systems, and issue tracking systems that
151+
are managed by, or on behalf of, the Regents for the purpose of
152+
discussing and improving the Work, but excluding communication that
153+
is conspicuously marked or otherwise designated in writing by You
154+
as "Not a Contribution."
155+
2. Grant of Copyright License. Subject to the terms and conditions of
156+
this Agreement, You hereby grant to the Regents and to
157+
recipients of software distributed by the Regents a perpetual,
158+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
159+
copyright license to reproduce, prepare derivative works of,
160+
publicly display, publicly perform, sublicense, and distribute Your
161+
Contributions and such derivative works.
162+
3. Grant of Patent License. Subject to the terms and conditions of
163+
this Agreement, You hereby grant to the Regents and to
164+
recipients of software distributed by the Regents a perpetual,
165+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
166+
(except as stated in this section) patent license to make, have
167+
made, use, offer to sell, sell, import, and otherwise transfer the
168+
Work, where such license applies only to those patent claims
169+
licensable by You that are necessarily infringed by Your
170+
Contribution(s) alone or by combination of Your Contribution(s)
171+
with the Work to which such Contribution(s) was submitted. If any
172+
entity institutes patent litigation against You or any other entity
173+
(including a cross-claim or counterclaim in a lawsuit) alleging
174+
that your Contribution, or the Work to which you have contributed,
175+
constitutes direct or contributory patent infringement, then any
176+
patent licenses granted to that entity under this Agreement for
177+
that Contribution or Work shall terminate as of the date such
178+
litigation is filed.
179+
4. You represent that you are legally entitled to grant the above
180+
license. If your employer(s) has rights to intellectual property
181+
that you create that includes your Contributions, you represent
182+
that you have received permission to make Contributions on behalf
183+
of that employer, that your employer has waived such rights for
184+
your Contributions to the Regents, or that your employer has
185+
executed a separate Corporate CLA with the Regents.
186+
5. You represent that each of Your Contributions is Your original
187+
creation (see section 7 for submissions on behalf of others). You
188+
represent that Your Contribution submissions include complete
189+
details of any third-party license or other restriction (including,
190+
but not limited to, related patents and trademarks) of which you
191+
are personally aware and which are associated with any part of Your
192+
Contributions.

0 commit comments

Comments
 (0)