Skip to content

Commit 552396b

Browse files
Add citation.cff and core team guide in order to get a DOI (#340)
* Add citation.cff and core team guide * Apply suggestions from code review Co-authored-by: Tom Nicholas <[email protected]> * Fix link to contributing guide * Add authors listed in #459 * Format --------- Co-authored-by: Tom Nicholas <[email protected]>
1 parent a79950c commit 552396b

File tree

3 files changed

+276
-0
lines changed

3 files changed

+276
-0
lines changed

citation.cff

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
cff-version: 1.2.0
2+
message: "If you use this software, please cite it as below."
3+
authors:
4+
- family-names: "Nicholas"
5+
given-names: "Thomas"
6+
orcid: "https://orcid.org/0000-0002-2176-0530"
7+
- family-names: "Hagen"
8+
given-names: "Norland"
9+
orcid: ""
10+
- family-names: "Harkins"
11+
given-names: "Sean"
12+
orcid: ""
13+
- family-names: "Barciauskas"
14+
given-names: "Aimee"
15+
orcid: "https://orcid.org/0000-0002-3158-9554"
16+
- family-names: "Jones"
17+
given-names: "Max"
18+
orcid: "https://orcid.org/0000-0003-0180-8928"
19+
- family-names: "Signell"
20+
given-names: "Julia"
21+
orcid: "https://orcid.org/0000-0002-4120-3192"
22+
- family-names: "Nag"
23+
given-names: "Ayush"
24+
orcid: "https://orcid.org/0009-0008-1790-597X"
25+
- family-names: "Hidalgo"
26+
given-names: "Gustavo"
27+
orcid: ""
28+
- family-names: "Augspurger"
29+
given-names: "Tom"
30+
orcid: "https://orcid.org/0000-0002-8136-7087"
31+
- family-names: "Abernathey"
32+
given-names: "Ryan"
33+
orcid: "https://orcid.org/0000-0001-5999-4917"

docs/core_team_guide.md

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
> **_Note:_** This Core Team Member Guide was adapted from [Xarray's code team guide](https://github.com/pydata/xarray/blob/main/CORE_TEAM_GUIDE.md), [napari project's Core Developer Guide](https://napari.org/stable/developers/core_dev_guide.html), and the [Pandas maintainers guide](https://pandas.pydata.org/docs/development/maintaining.html).
2+
3+
# Core Team Member Guide
4+
5+
Welcome, new core team member! We appreciate the quality of your work, and enjoy working with you!
6+
Thank you for your numerous contributions to the project so far.
7+
8+
By accepting the invitation to become a core team member you are **not required to commit to doing any more work** -
9+
VirtualiZarr is a volunteer project, and we value the contributions you have made already.
10+
11+
You can see a list of all the current core team members on our
12+
[@zarr-developers/virtualizarr](https://github.com/orgs/zarr-developers/teams/virtualizarr-core-devs)
13+
GitHub team. Once accepted, you should now be on that list too.
14+
This document offers guidelines for your new role.
15+
16+
## Tasks
17+
18+
VirtualiZarr values a wide range of contributions, only some of which involve writing code.
19+
As such, we do not currently make a distinction between a "core team member", "core developer", "maintainer",
20+
or "triage team member" as some projects do (e.g. [pandas](https://pandas.pydata.org/docs/development/maintaining.html)).
21+
That said, if you prefer to refer to your role as one of the other titles above then that is fine by us!
22+
23+
VirtualiZarr is mostly a volunteer project, so these tasks shouldn’t be read as “expectations”.
24+
**There are no strict expectations**, other than to adhere to our [Code of Conduct](https://github.com/zarr-developers/virtualizarr?tab=coc-ov-file#readme).
25+
Rather, the tasks that follow are general descriptions of what it might mean to be a core team member:
26+
27+
- Facilitate a welcoming environment for those who file issues, make pull requests, and open discussion topics,
28+
- Triage newly filed issues,
29+
- Review newly opened pull requests,
30+
- Respond to updates on existing issues and pull requests,
31+
- Drive discussion and decisions on stalled issues and pull requests,
32+
- Provide experience / wisdom on API design questions to ensure consistency and maintainability,
33+
- Project organization (run developer meetings, coordinate with sponsors),
34+
- Project evangelism (advertise VirtualiZarr to new users),
35+
- Community contact (represent VirtualiZarr in user communities such as [Pangeo](https://pangeo.io/)),
36+
- Key project contact (represent VirtualiZarr's perspective within key related projects like Xarray, Zarr, Icechunk, or Kerchunk),
37+
- Project fundraising (help write and administrate grants that will support VirtualiZarr),
38+
- Improve documentation or tutorials,
39+
- Attend the bi-weekly coordination meeting ([see Zarr community calendar](https://zarr.dev/community-calls/)),
40+
- Contribute to the VirtualiZarr codebase.
41+
42+
(Matt Rocklin's post on [the role of a maintainer](https://matthewrocklin.com/blog/2019/05/18/maintainer) may be
43+
interesting background reading, but should not be taken to strictly apply to the VirtualiZarr project.)
44+
45+
Obviously you are not expected to contribute in all (or even more than one) of these ways!
46+
They are listed so as to indicate the many types of work that go into maintaining VirtualiZarr.
47+
48+
It is natural that your available time and enthusiasm for the project will wax and wane - this is fine and expected!
49+
It is also common for core team members to have a "niche" - a particular part of the codebase they have specific expertise
50+
with, or certain types of task above which they primarily perform.
51+
52+
If however you feel that is unlikely you will be able to be actively contribute in the foreseeable future
53+
(or especially if you won't be available to answer questions about pieces of code that you wrote previously)
54+
then you may want to consider letting us know you would rather be listed as an "Emeritus Core Team Member",
55+
as this would help us in evaluating the overall health of the project.
56+
57+
## Issue triage
58+
59+
One of the main ways you might spend your contribution time is by responding to or triaging new issues.
60+
Here’s a typical workflow for triaging a newly opened issue or discussion:
61+
62+
1. **Thank the reporter for opening an issue.**
63+
64+
The issue tracker is many people’s first interaction with the VirtualiZarr project itself, beyond just using the library.
65+
It may also be their first open-source contribution of any kind. As such, we want it to be a welcoming, pleasant experience.
66+
67+
2. **Is the necessary information provided?**
68+
69+
Ideally reporters would fill out the issue template, but many don’t. If crucial information (like the version of VirtualiZarr they used),
70+
is missing feel free to ask for that and label the issue with “needs info”.
71+
72+
Make sure that the title accurately reflects the issue. Edit it yourself if it’s not clear.
73+
Remember also that issues can be converted to discussions and vice versa if appropriate.
74+
75+
3. **Is this a duplicate issue?**
76+
77+
If a new issue is clearly a duplicate, label the new issue as “duplicate”, and close the issue with a link to the original issue.
78+
Make sure to still thank the reporter, and encourage them to chime in on the original issue, and perhaps try to fix it.
79+
80+
If the new issue provides relevant information, such as a better or slightly different example, add it to the original issue as a comment or an edit to the original post.
81+
82+
4. **Is the issue minimal and reproducible?**
83+
84+
For bug reports, we ask that the reporter provide a minimal reproducible example.
85+
See [minimal-bug-reports](https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) for a good explanation.
86+
If the example is not reproducible, or if it’s clearly not minimal, feel free to ask the reporter if they can provide and example or simplify the provided one.
87+
Do acknowledge that writing minimal reproducible examples is hard work. If the reporter is struggling, you can try to write one yourself and we’ll edit the original post to include it.
88+
89+
If a nice reproducible example has been provided, thank the reporter for that.
90+
If a reproducible example can’t be provided, add the “needs mcve” label.
91+
92+
If a reproducible example is provided, but you see a simplification, edit the original post with your simpler reproducible example.
93+
94+
5. **Is this a clearly defined feature request?**
95+
96+
Generally, VirtualiZarr prefers to discuss and design new features in issues, before a pull request is made.
97+
Encourage the submitter to include a proposed API for the new feature. Having them write a full docstring is a good way to pin down specifics.
98+
99+
6. **Is this a usage question?**
100+
101+
We prefer that usage questions are asked as a [GitHub discussion topic](https://github.com/zarr-developers/VirtualiZarr/discussions).
102+
103+
If it’s easy to answer, feel free to link to the relevant documentation section, let them know that in the future this kind of question should be on the discussions section, and close the issue.
104+
105+
7. **What labels and milestones should I add?**
106+
107+
Apply the relevant labels. This is a bit of an art, and comes with experience. Look at similar issues to get a feel for how things are labeled.
108+
109+
If the issue is clearly defined and the fix seems relatively straightforward, label the issue as `good-first-issue`.
110+
111+
8. **Where should the poster look to fix the issue?**
112+
113+
If you can, it is very helpful to point to the approximate location in the codebase where a contributor might begin to fix the issue.
114+
This helps ease the way in for new contributors to the repository.
115+
116+
## Code review and contributions
117+
118+
As a core team member, you are a representative of the project,
119+
and trusted to make decisions that will serve the long term interests
120+
of all users. You also gain the responsibility of shepherding
121+
other contributors through the review process; here are some
122+
guidelines for how to do that.
123+
124+
### All contributors are treated the same
125+
126+
You should now have gained the ability to merge or approve
127+
other contributors' pull requests. Merging contributions is a shared power:
128+
only merge contributions you yourself have carefully reviewed, and that are
129+
clear improvements for the project. When in doubt, and especially for more
130+
complex changes, wait until at least one other core team member has approved.
131+
(See [Reviewing](#how-to-conduct-a-good-review) and especially
132+
[Merge Only Changes You Understand](#merge-only-changes-you-understand) below.)
133+
134+
It should also be considered best practice to leave a reasonable (24hr) time window
135+
after approval before merge to ensure that other core team members have a reasonable
136+
chance to weigh in.
137+
138+
We are also an international community, with contributors from many different time zones,
139+
some of whom will only contribute during their working hours, others who might only be able
140+
to contribute during nights and weekends. It is important to be respectful of other peoples
141+
schedules and working habits, even if it slows the project down slightly - we are in this
142+
for the long run. In the same vein you also shouldn't feel pressured to be constantly
143+
available or online, and users or contributors who are overly demanding and unreasonable
144+
to the point of harassment will be directed to our [Code of Conduct](https://github.com/zarr-developers/virtualizarr?tab=coc-ov-file#readme).
145+
We value sustainable development practices over mad rushes.
146+
147+
When merging, we automatically use GitHub's
148+
[Squash and Merge](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request#merging-a-pull-request)
149+
to ensure a clean git history.
150+
151+
You should also continue to make your own pull requests as before and in accordance
152+
with the [general contributing guide](https://virtualizarr.readthedocs.io/en/latest/contributing.html). These pull requests still
153+
require the approval of another core team member before they can be merged.
154+
155+
### How to conduct a good review
156+
157+
*Always* be kind to contributors. Contributors are often doing
158+
volunteer work, for which we are tremendously grateful. Provide
159+
constructive criticism on ideas and implementations, and remind
160+
yourself of how it felt when your own work was being evaluated as a
161+
novice.
162+
163+
``VirtualiZarr`` strongly values mentorship in code review. New users
164+
often need more hand-holding, having little to no git
165+
experience. Repeat yourself liberally, and, if you don’t recognize a
166+
contributor, point them to our development guide, or other GitHub
167+
workflow tutorials around the web. Do not assume that they know how
168+
GitHub works (many don't realize that adding a commit
169+
automatically updates a pull request, for example). Gentle, polite, kind
170+
encouragement can make the difference between a new core team member and
171+
an abandoned pull request.
172+
173+
### Merge only changes you understand
174+
175+
*Long-term maintainability* is an important concern. Code doesn't
176+
merely have to *work*, but should be *understood* by multiple core
177+
developers. Changes will have to be made in the future, and the
178+
original contributor may have moved on.
179+
180+
Therefore, *do not merge a code change unless you understand it*. Ask
181+
for help freely: we can consult community members, or even external developers,
182+
for added insight where needed, and see this as a great learning opportunity.
183+
184+
While we collectively "own" any patches (and bugs!) that become part
185+
of the code base, you are vouching for changes you merge. Please take
186+
that responsibility seriously.
187+
188+
Feel free to ping other active maintainers with any questions you may have.
189+
190+
## Further resources
191+
192+
As a core member, you should be familiar with community and developer
193+
resources such as:
194+
195+
- Our [contributor guide](https://virtualizarr.readthedocs.io/en/stable/contributing.html).
196+
- Our [code of conduct](https://github.com/zarr-developers/virtualizarr?tab=coc-ov-file#readme).
197+
- [PEP8](https://peps.python.org/pep-0008/) for Python style.
198+
- [PEP257](https://peps.python.org/pep-0257/) and the
199+
[NumPy documentation guide](https://numpy.org/devdocs/dev/howto-docs.html#documentation-style)
200+
for docstring conventions.
201+
- [`pre-commit`](https://pre-commit.com) hooks for autoformatting.
202+
- [`ruff`](https://github.com/astral-sh/ruff) autoformatting and linting.
203+
204+
You are not required to monitor any of the social resources.
205+
206+
Where possible we prefer to point people towards asynchronous forms of communication
207+
like github issues instead of realtime chat options as they are far easier
208+
for a global community to consume and refer back to.
209+
210+
We hold a [bi-weekly coordination meeting](https://zarr.dev/community-calls/) via video call.
211+
This is a great place to bring up any questions you have, raise visibility of an issue and/or gather more perspectives.
212+
Attendance is absolutely optional, and we keep the meeting to 1 hour in respect of your valuable time.
213+
This meeting is public, so we occasionally have non-core team members join us.
214+
215+
## Inviting new core members
216+
217+
Any core member may nominate other contributors to join the core team.
218+
While there is no hard-and-fast rule about who can be nominated, ideally,
219+
they should have: been part of the project for at least two months, contributed
220+
significant changes of their own, contributed to the discussion and
221+
review of others' work, and collaborated in a way befitting our
222+
community values. **We strongly encourage nominating anyone who has made significant non-code contributions
223+
to the VirtualiZarr community in any way**. After nomination voting will happen on a private mailing list.
224+
While it is expected that most votes will be unanimous, a two-thirds majority of
225+
the cast votes is enough.
226+
227+
Core team members can choose to become emeritus core team members and suspend
228+
their approval and voting rights until they become active again.
229+
230+
## Contribute to this guide (!)
231+
232+
This guide reflects the experience of the current core team members. We
233+
may well have missed things that, by now, have become second
234+
nature—things that you, as a new team member, will spot more easily.
235+
Please ask the other core team members if you have any questions, and
236+
submit a pull request with insights gained.
237+
238+
## Conclusion
239+
240+
We are excited to have you on board! We look forward to your
241+
contributions to the code base and the community. Thank you in
242+
advance!

docs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ faq
8383
api
8484
releases
8585
contributing
86+
core_team_guide
8687
```
8788

8889
## References

0 commit comments

Comments
 (0)