Skip to content

Commit 1a960e1

Browse files
committed
feat: Improve community readiness and open-source compliance
1 parent dcc4e60 commit 1a960e1

8 files changed

Lines changed: 381 additions & 1 deletion

File tree

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Bug report
2+
description: Report a reproducible problem with SeaSenseLib
3+
title: "[Bug]: "
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thank you for helping improve SeaSenseLib. Please provide a small,
9+
reproducible example. Remove sensitive information from logs and data.
10+
11+
- type: textarea
12+
id: description
13+
attributes:
14+
label: Problem
15+
description: What happened, and what did you expect to happen?
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: reproduce
21+
attributes:
22+
label: Reproducible example
23+
description: Include the smallest code example and input description that reproduce the problem.
24+
render: python
25+
validations:
26+
required: true
27+
28+
- type: input
29+
id: seasenselib_version
30+
attributes:
31+
label: SeaSenseLib version
32+
placeholder: "For example: 0.6.1"
33+
validations:
34+
required: true
35+
36+
- type: input
37+
id: python_version
38+
attributes:
39+
label: Python version
40+
placeholder: "For example: 3.12.4"
41+
validations:
42+
required: true
43+
44+
- type: input
45+
id: operating_system
46+
attributes:
47+
label: Operating system
48+
placeholder: "For example: Ubuntu 24.04, macOS 15, or Windows 11"
49+
validations:
50+
required: true
51+
52+
- type: input
53+
id: data_source
54+
attributes:
55+
label: Instrument or data format
56+
description: If relevant, identify the instrument, file format, and firmware or software version.
57+
58+
- type: textarea
59+
id: traceback
60+
attributes:
61+
label: Error output
62+
description: Paste the complete traceback or relevant log output, if available.
63+
render: shell
64+
65+
- type: textarea
66+
id: context
67+
attributes:
68+
label: Additional context
69+
description: Add anything else that may help diagnose the problem.
70+
71+
- type: checkboxes
72+
id: checks
73+
attributes:
74+
label: Checklist
75+
options:
76+
- label: I searched the existing issues for this problem.
77+
required: true
78+
- label: Any data I attach may be shared publicly, and I have removed sensitive information.
79+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
blank_issues_enabled: true
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Feature request
2+
description: Suggest an improvement or new scientific use case for SeaSenseLib
3+
title: "[Feature]: "
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thank you for suggesting an improvement. For substantial changes,
9+
this issue can be used to agree on scope before implementation starts.
10+
11+
- type: textarea
12+
id: use_case
13+
attributes:
14+
label: Use case
15+
description: What scientific or technical problem would this feature solve?
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: proposed_solution
21+
attributes:
22+
label: Proposed solution
23+
description: Describe the behavior or interface you would like.
24+
validations:
25+
required: true
26+
27+
- type: textarea
28+
id: alternatives
29+
attributes:
30+
label: Alternatives considered
31+
description: Describe any current workaround or alternative approach.
32+
33+
- type: textarea
34+
id: context
35+
attributes:
36+
label: Additional context
37+
description: Add references, examples, sketches, or sample metadata if useful.
38+
39+
- type: checkboxes
40+
id: checks
41+
attributes:
42+
label: Checklist
43+
options:
44+
- label: I searched the existing issues for a similar request.
45+
required: true

CITATION.cff

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
cff-version: 1.2.0
2+
message: "If you use SeaSenseLib in your work, please cite it using this metadata."
3+
title: "SeaSenseLib"
4+
abstract: "Read, convert, and plot oceanographic sensor data."
5+
authors:
6+
- family-names: "Sorge"
7+
given-names: "Yves"
8+
orcid: "https://orcid.org/0009-0007-0043-9207"
9+
- family-names: "Frajka-Williams"
10+
given-names: "Eleanor"
11+
orcid: "https://orcid.org/0000-0001-8773-7838"
12+
doi: "10.5281/zenodo.20044197"
13+
license: "MIT"
14+
repository-code: "https://github.com/ocean-uhh/seasenselib"
15+
repository-artifact: "https://pypi.org/project/seasenselib/"

CODE_OF_CONDUCT.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
- Demonstrating empathy and kindness toward other people
21+
- Being respectful of differing opinions, viewpoints, and experiences
22+
- Giving and gracefully accepting constructive feedback
23+
- Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
- Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
- The use of sexualized language or imagery, and sexual attention or advances
31+
of any kind
32+
- Trolling, insulting or derogatory comments, and personal or political attacks
33+
- Public or private harassment
34+
- Publishing others' private information, such as a physical or email address,
35+
without their explicit permission
36+
- Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are not
48+
aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official email address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported privately to the maintainer identified in the project metadata in
63+
[`pyproject.toml`](pyproject.toml). Use the maintainer's contact details listed
64+
there. All complaints will be reviewed and investigated promptly and fairly.
65+
66+
All community leaders are obligated to respect the privacy and security of the
67+
reporter of any incident.
68+
69+
## Enforcement Guidelines
70+
71+
Community leaders will follow these Community Impact Guidelines in determining
72+
the consequences for any action they deem in violation of this Code of Conduct:
73+
74+
### 1. Correction
75+
76+
**Community Impact**: Use of inappropriate language or other behavior deemed
77+
unprofessional or unwelcome in the community.
78+
79+
**Consequence**: A private, written warning from community leaders, providing
80+
clarity around the nature of the violation and an explanation of why the
81+
behavior was inappropriate. A public apology may be requested.
82+
83+
### 2. Warning
84+
85+
**Community Impact**: A violation through a single incident or series of
86+
actions.
87+
88+
**Consequence**: A warning with consequences for continued behavior. No
89+
interaction with the people involved, including unsolicited interaction with
90+
those enforcing the Code of Conduct, for a specified period of time. This
91+
includes avoiding interactions in community spaces as well as external channels
92+
like social media. Violating these terms may lead to a temporary or permanent
93+
ban.
94+
95+
### 3. Temporary Ban
96+
97+
**Community Impact**: A serious violation of community standards, including
98+
sustained inappropriate behavior.
99+
100+
**Consequence**: A temporary ban from any sort of interaction or public
101+
communication with the community for a specified period of time. No public or
102+
private interaction with the people involved, including unsolicited interaction
103+
with those enforcing the Code of Conduct, is allowed during this period.
104+
Violating these terms may lead to a permanent ban.
105+
106+
### 4. Permanent Ban
107+
108+
**Community Impact**: Demonstrating a pattern of violation of community
109+
standards, including sustained inappropriate behavior, harassment of an
110+
individual, or aggression toward or disparagement of classes of individuals.
111+
112+
**Consequence**: A permanent ban from any sort of public interaction within the
113+
community.
114+
115+
## Attribution
116+
117+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118+
version 2.1, available at the [Contributor Covenant Code of Conduct][version].
119+
120+
Community Impact Guidelines were inspired by
121+
[Mozilla's code of conduct enforcement ladder][mozilla].
122+
123+
For answers to common questions about this code of conduct, see the
124+
[Contributor Covenant FAQ][faq]. Translations are available on the
125+
[Contributor Covenant translations page][translations].
126+
127+
[homepage]: https://www.contributor-covenant.org
128+
[version]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
129+
[mozilla]: https://github.com/mozilla/diversity
130+
[faq]: https://www.contributor-covenant.org/faq
131+
[translations]: https://www.contributor-covenant.org/translations

CONTRIBUTING.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Contributing to SeaSenseLib
2+
3+
Thank you for helping improve SeaSenseLib. Bug reports, documentation fixes,
4+
tests, and code contributions are welcome. By participating, you agree to
5+
follow our [Code of Conduct](CODE_OF_CONDUCT.md).
6+
7+
By submitting a contribution, you agree that it will be licensed under the
8+
[MIT License](LICENSE) and confirm that you have the right to submit it.
9+
10+
For substantial changes, open an issue before starting work so that the scope
11+
and approach can be discussed. Small, focused fixes may be submitted directly.
12+
Please do not use public issues to report security vulnerabilities. Contact the
13+
maintainer listed in [`pyproject.toml`](pyproject.toml) privately instead.
14+
15+
## Development setup
16+
17+
If you do not have write access to the SeaSenseLib repository, first fork it on
18+
GitHub and clone your fork. Maintainers and collaborators with write access may
19+
clone the main repository directly. Then create a virtual environment and
20+
install the package with its development dependencies:
21+
22+
```bash
23+
python -m venv .venv
24+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
25+
python -m pip install --upgrade pip
26+
python -m pip install -e ".[dev]"
27+
```
28+
29+
Create a branch from the latest `main` branch and keep each pull request focused
30+
on one change.
31+
32+
## Coding standards
33+
34+
- Follow PEP 8 and the style of the surrounding code. Use four spaces for
35+
indentation and clear, descriptive names.
36+
- Add docstrings to new public modules, classes, functions, and methods. Add
37+
type hints to new public interfaces where practical.
38+
- Preserve backward compatibility unless a breaking change has been discussed
39+
and documented.
40+
- For scientific or format-specific behavior, document assumptions and retain
41+
source metadata and provenance where possible.
42+
- Keep dependencies and test data minimal. Do not commit generated files,
43+
credentials, private data, or data that cannot be redistributed.
44+
- Update user documentation when behavior or public APIs change.
45+
46+
## Testing expectations
47+
48+
Run the test suite before submitting a pull request:
49+
50+
```bash
51+
python -m pytest tests/
52+
```
53+
54+
New features and bug fixes should include focused tests, including relevant
55+
edge cases. A bug fix should contain a regression test that fails without the
56+
fix. Changes to readers or writers should use the smallest redistributable test
57+
fixture that demonstrates the behavior.
58+
59+
For documentation changes, also build the documentation and address warnings
60+
introduced by the change:
61+
62+
```bash
63+
make -C docs html
64+
```
65+
66+
Continuous integration runs the test suite on the supported Python versions.
67+
68+
## Pull request checklist
69+
70+
- [ ] The change is focused and its purpose is clearly described.
71+
- [ ] Relevant tests were added or updated and pass locally.
72+
- [ ] Documentation and examples were updated where needed.
73+
- [ ] Public API and compatibility implications are described.
74+
- [ ] New dependencies have been justified and documented. New data files
75+
include their sources and terms that permit redistribution.
76+
- [ ] The branch contains no unrelated changes, generated files, or sensitive
77+
information.
78+
- [ ] User-facing changes are noted in the pull request description.
79+
80+
## Review workflow
81+
82+
1. Open a pull request against `main` and link any related issue. Draft pull
83+
requests are welcome for early feedback.
84+
2. Automated checks run on the pull request. Please resolve failures before
85+
requesting final review.
86+
3. A maintainer reviews the design, scientific correctness, tests,
87+
documentation, and compatibility. Other community members may also review.
88+
4. Address feedback with additional commits and resolve discussions with the
89+
reviewer. Review may take more than one round.
90+
5. A maintainer merges the pull request after the checks pass, required changes
91+
are addressed, and at least one maintainer has approved it.
92+
93+
Review is collaborative. Keep discussions technical, constructive, and aligned
94+
with the [Code of Conduct](CODE_OF_CONDUCT.md).

CONTRIBUTORS.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Contributors
2+
3+
SeaSenseLib gratefully acknowledges the following contributors in addition to
4+
the core team. Keep one row per contributor, order the rows alphabetically by
5+
family name, and use an em dash when no ORCID is available.
6+
7+
| Contributor | GitHub | ORCID | First contributed release |
8+
| --- | --- | --- | --- |
9+
| Jonathan Mette | [@jmetteUni](https://github.com/jmetteUni) | [0009-0007-4463-2658](https://orcid.org/0009-0007-4463-2658) | 0.6.0 |
10+
| Isabelle Schmitz | [@isaschmitz](https://github.com/isaschmitz) | [0009-0009-1369-1748](https://orcid.org/0009-0009-1369-1748) | 0.2.0 |

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,12 @@ SeaSenseLib is a community-driven open source project in active development. The
524524

525525
### Contributing
526526

527-
Pull requests are welcome! Please open an issue first to discuss what you would like to change.
527+
Pull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for coding and
528+
testing guidance and the review process. Additional community contributors are
529+
recognized in [CONTRIBUTORS.md](CONTRIBUTORS.md). Participation is governed by
530+
our [Code of Conduct](CODE_OF_CONDUCT.md).
531+
532+
To cite SeaSenseLib, use the metadata in [CITATION.cff](CITATION.cff).
528533

529534
### License
530535

0 commit comments

Comments
 (0)