Skip to content

Commit 23f46bb

Browse files
authored
Add: Updated scope document and many link and other fixes
Fix: Update scope document and also fix a few sphinx bugs
2 parents 58a1b9f + f5b50d9 commit 23f46bb

File tree

9 files changed

+253
-95
lines changed

9 files changed

+253
-95
lines changed
File renamed without changes.

about/intro.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Why Open Review Matters </about/why-open-review>
2020
How Review Works <../our-process/how-review-works>
2121
Review Timeline <../our-process/review-timeline>
2222
Peer Review Policies <../our-process/policies>
23-
23+
Code of Conduct <../code-of-conduct>
2424
```
2525

2626

about/package-scope.md

Lines changed: 230 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,246 @@ Currently, the packages that pyOpenSci reviews also need to fall into the
1818
technical and applied scope of our organization. This scope may expand over time
1919
as the organization grows.
2020

21-
22-
2321
## Is Your Package in Scope For pyOpenSci Review?
2422

25-
pyOpenSci only reviews packages that fall within our specified domain and
26-
technical scope listed below.
23+
pyOpenSci reviews packages that fall within a list of specified categories and
24+
domains. Packages must also meet our technical scope requirements.
2725

2826
If you are unsure whether your package is in scope for review, please
2927
open a [pre-submission inquiry using a GitHub Issue](https://github.com/pyOpenSci/software-review/issues/new?assignees=&labels=0%2Fpresubmission&template=presubmission-inquiry.md&title=) to get feedback from
3028
one of our editors. We are happy to look at your package and help you understand
3129
whether it is in scope or not.
3230

33-
```{include} /appendices/scope.md
31+
### About the types of packages that we review
32+
33+
pyOpenSci reviews packages that support open reproducible science,
34+
data processing and and the various stages of managing the
35+
data lifecycle. Packages submitted to pyOpenSci should fit into one or
36+
more of the categories below and should be within our technical scope.
37+
38+
```{admonition} Your Package Does Not Need to Have Widespread Use to be Reviewed
39+
:class: important
40+
41+
We review packages with the goal of improving package quality and usability for scientists.
42+
As such, we review packages across a spectrum of small to large user bases. The popularity of your package is not a consideration in our review process!
43+
44+
When we evaluate whether you package is within our scope, we only consider:
45+
46+
1. how the package is developed and
47+
2. how the package relates to and supports the broader scientific ecosystem.
48+
49+
We welcome young packages that are just entering the scientific Python
50+
ecosystem to apply for review if they are relevant to the science community and
51+
fit into at least one scope category below. We also welcome mature packages with
52+
a growing or established community!
53+
```
54+
55+
If you are unsure whether your package fits into one of the general or
56+
statistical categories, please open an issue as a [pre-submission inquiry](https://github.com/pyOpenSci/software-submission/issues/new?assignees=&labels=0%2Fpresubmission&template=presubmission-inquiry.md&title=).
57+
58+
```{note}
59+
This is a living document. The categories below may change through time.
60+
This may mean in some cases, some previously peer review-accepted packages
61+
may not be in-scope today. We strive for consistency in our peer review process. However, we also evaluate packages on a case-by-case basis.
62+
In some cases exceptions are made.
63+
```
64+
65+
## Package categories
66+
67+
The following are the current categories that fall into scope for
68+
pyOpenSci. In addition to fitting into one or more of these categories, your package should have some level of
69+
demonstrated scientific application. This could be a use case that you can
70+
link to or a tutorial that demonstrates its potential application for science.
71+
72+
Below we provide examples of packages from pyOpenSci ecosystem. Because we
73+
have growing community of packages, in some cases we link to R packages
74+
within the rOpenSci community that match the category scope for reference.
75+
76+
We will update this page as our review process evolves.
77+
78+
```{note}
79+
Many of the example packages below perform tasks that might fit in multiple
80+
categories. There examples are there to provide you with a flavor of the types
81+
of packages that would fall into that category.
3482
```
3583

84+
### Data retrieval
85+
Packages for accessing and downloading data from online sources. This category
86+
includes wrappers for accessing APIs.
87+
88+
Our definition of scientific applications is broad, including data storage
89+
services, journals, and other remote servers, as many data sources may be of
90+
interest to scientists. However, retrieval packages should be focused on data
91+
sources / topics, rather than services. For example a general client for Amazon
92+
Web Services data storage would not be in-scope.
93+
94+
* Examples: [OpenOmics](https://github.com/pyOpenSci/software-submission/issues/31), [pyDov](https://github.com/pyOpenSci/software-submission/issues/19), [Physcraper](https://github.com/pyOpenSci/software-review/issues/26)
95+
96+
97+
### Data extraction
98+
99+
These packages aid in retrieving data from unstructured sources such as text,
100+
images, and PDFs. They might also parse scientific data types and outputs from
101+
scientific equipment.
102+
103+
* Examples: [devicely](https://github.com/pyOpenSci/software-submission/issues/37), [jointly](https://github.com/pyOpenSci/software-submission/issues/45)
104+
105+
### Data processing & munging
106+
107+
Data [munging tools transform data in a way that makes further analysis possible (as [defined on Wikipedia](https://en.wikipedia.org/wiki/Data_wrangling)). Munging complements the other categories so it's common for packages to include some functionality to munge data. This
108+
category focuses on tools for handling data in specific formats that scientists
109+
may be interested in working with. These data may also be generated from
110+
scientific workflows or exported from instruments and wearables.
111+
112+
* Examples: [devicely](https://github.com/pyOpenSci/software-submission/issues/37), [jointly](https://github.com/pyOpenSci/software-submission/issues/45), [MovingPandas](https://github.com/pyOpenSci/software-submission/issues/18), [OpenOmics](https://github.com/pyOpenSci/software-submission/issues/31), [Physcraper](https://github.com/pyOpenSci/software-submission/issues/26)
113+
114+
115+
### Data deposition
116+
117+
Tools for depositing data into scientific research repositories.
118+
119+
* Examples: [This is an example from rOpenSci - eml](https://github.com/ropensci/software-review/issues/80)
120+
121+
### Data validation and testing:
122+
123+
Tools that enable automated validation and checking of data quality and
124+
completeness. These tools should be able to support scientific workflows.
125+
126+
* Example: [pandera](https://github.com/pyOpenSci/software-submission/issues/12)
127+
128+
### Scientific software wrappers
129+
130+
Scientific software wrappers refer to packages that provide a Python interface
131+
for existing scientific packages written in other languages.
132+
133+
These packages should have a clear scientific application. Wrappers must provide
134+
significant added value to the scientific ecosystem be it in data handling, or
135+
improved installation processes for Python users.
136+
137+
We strongly encourage submissions that wrap tools that are open-source with
138+
an OSI-approved license. Exceptions will be evaluated case-by-case,
139+
considering whether open-source options exist.
140+
141+
* Examples: [PyGMT](https://github.com/pyOpenSci/software-submission/issues/43)
142+
143+
### Workflow automation & versioning
144+
Tools that automate and link together workflows and as such support
145+
reproducible workflows. These
146+
tools may include build systems and tools to manage continuous integration.
147+
This also includes tools that support version control.
148+
149+
* Examples: Both of these tools are not pyOpenSci reviewed as of yet but are examples of tools that might be in scope for this category - [snakemake](https://snakemake.readthedocs.io/en/stable/), [pyGitHub ](https://github.com/PyGithub/PyGithub)
150+
151+
### Citation management and bibliometrics:
152+
153+
Tools that facilitate managing references, such as for writing manuscripts,
154+
creating CVs or otherwise attributing scientific contributions, or accessing,
155+
manipulating or otherwise working with bibliometric data. (Example: [Example from rOpenSci - RefManageR](https://github.com/ropensci/software-review/issues/119))
156+
157+
### Data visualization & analysis
158+
These are packages that enhance a scientists experience visualizing and
159+
analyzing data.
160+
161+
* Examples: [PyGMT - (also spatial and data munging)](https://github.com/pyOpenSci/software-submission/issues/43),
162+
163+
### Database software bindings
164+
165+
Bindings and wrappers for database APIs.
166+
167+
* Example: [Example from rOpenSci - rrlite](https://github.com/ropensci/software-review/issues/6)
168+
169+
170+
## Domain areas
171+
172+
In addition, our scope includes focused domain areas. These areas are based on
173+
partnerships that we form with communities and also expertise that we hold
174+
within our organization. As we develop [new community partnerships](/partners/scientific-communities) and grow,
175+
we will expand this list.
176+
177+
### Geospatial
178+
179+
Packages focused on the retrieval, manipulation, and analysis of spatial data.
180+
181+
* Examples: [PyGmt](https://github.com/pyOpenSci/software-submission/issues/43),
182+
[Moving Pandas ](https://github.com/pyOpenSci/software-submission/issues/18)
183+
184+
### Pangeo
185+
186+
We have a [partnership with Pangeo](../partners/pangeo). Often times packages submitted as a part of that partnership are also in the geospatial domain.
187+
188+
* Examples: [xclim - under review now](https://github.com/pyOpenSci/software-submission/issues/73)
189+
190+
### Education
191+
192+
Packages to aid with instruction.
193+
194+
* Examples: [pyrolite](https://github.com/morganjwilliams/pyrolite)
195+
196+
## Package technical scope
197+
198+
To be in technical scope for a pyOpenSci review, your package:
199+
200+
* Should have maintenance workflows documented.
201+
* Should declare vendor dependencies using standard approaches rather than including code from other packages within your repository.
202+
* Should not have an exceedingly complex structure. Others should be able to contribute and/or take over maintenance if needed.
203+
204+
```{admonition} pyOpenSci's goal is to support long(er) term maintenance
205+
pyOpenSci has a goal of supporting long term maintenance of open source
206+
Python tools. It is thus important for us to know that if you need to step down as a maintainer, the package infrastructure and documentation is
207+
in place to support us finding a new maintainer who can take over you
208+
package's maintenance.
209+
```
210+
211+
### What if my package seems like its category or domain is out of scope?
212+
- pyOpenSci is still developing as a community. If your scientific Python
213+
package does not fit into one of the categories or if you have any other
214+
questions, we'd encourage you to open a pre-submission inquiry. We're happy to help.
215+
- Data visualization packages come in many varieties, ranging from small
216+
hyper-specific methods for one type of data to general, do-it-all packages
217+
(e.g. matplotlib). pyOpenSci accepts packages that are somewhere in between the
218+
two. If you're interested in submitting your data visualization package, please
219+
open a pre-submission inquiry first.
220+
221+
## Examples of packages that might be out of technical scope
222+
223+
pyOpenSci may continue to update its criteria for technical scope
224+
review as more packages with varying structural approaches are reviewed.
225+
Your package **may not be in technical scope** for us to review at this time if
226+
fits any of the out-of-technical-scope criteria listed below.
227+
228+
Your package is in technical scope if it is:
229+
* Pure Python or Python with built extensions
230+
* Available from PyPI and/or community conda channels such as conda-forge or bioconda
231+
232+
Your package might be out of in technical scope if it is:
233+
* Not published in a community channel such as PyPI or a channel on anaconda cloud
234+
* Exceedingly complex in its structure or maintenance needs
235+
236+
A few examples of packages that may be too technically challenging for us to
237+
find a new maintainer for in the future are below.
238+
239+
### Example 1: Your package is an out of sync fork of another package repository that is being actively maintained.
240+
241+
Sometimes we understand that a package maintainer may need to step down. In
242+
that case, we strongly suggest that the original package owner, transfer the
243+
package repository to a new organization along with PyPI credentials. A new
244+
organization would allow transfer of ownership of package maintenance rather
245+
than several forks existing.
246+
247+
If your package is a divergent fork of a maintained repository we will encourage you
248+
to work with the original maintainers to merge efforts.
249+
250+
However, if there is a case where a forked repository is warranted, please
251+
consider submitting a pre-submission inquiry first and explain why the package is a
252+
fork rather than an independent parent repository.
253+
254+
### Example 2: Vendored dependencies
255+
256+
If your package is a wrapper that wraps around another tool, we prefer that
257+
the dependency be added as a dependency to your package. This allows
258+
maintenance of the original code base to be independent from your package's
259+
maintenance.
260+
36261
(package-overlap)=
37262
## Package Overlap
38263
pyOpenSci encourages competition among packages, forking and re-implementation

appendices/glossary.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ definitions for reference.
1111
* **docstring**: A miniature piece of documentation within the source code, usually documenting a specific function, class, or other piece of code.
1212
* **linting/linter**: A linter is a program that you can run on your code to identify potential errors. There are many linters for Python, e.g. flake8.
1313
* **module**: A file containing Python code. Modules can define functions, classes, and more, and can be imported by other Python code to use those defined objects. Some files are meant to be run directly instead of imported. These are "scripts".
14-
* **open source**: In simple terms, software for which the source code is freely available and can be modified and redistributed. What meets the standard of "open source" can be controversial, but the Open Source Initiative has a more thorough set of [guidelines](https://opensource.org/osd-annotated).
14+
* **open source**: In simple terms, software for which the source code is freely available and can be modified and redistributed. What meets the standard of "open source" can be controversial, but the Open Source Initiative has a more thorough set of [guidelines](https://opensource.org/definition/).
1515
* **slug**: A short title, containing only letters, numbers, underscores, and hyphens. For example, a slug might replace spaces with underscores. Your package's "slug" is a handy shorthand.
1616
* **software license**: Contains the terms of use, modification, and distribution for a piece of software. Open source licenses generally grant freedom to modify and share software, but sometimes there are specific conditions. Read more from [OSI](https://opensource.org/licenses).
1717
* **testing**: Code tests check units of code to make sure that they are producing the expected result. For example, if you have a function "sum_nums" that sums numbers, you could write a test that makes sure that sum_nums(2, 2) == 4. Writing full tests helps to avoid bugs as you are writing or modifying your code.

appendices/scope.md

Lines changed: 0 additions & 74 deletions
This file was deleted.

code-of-conduct.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
# Community Code of Conduct
1+
# pyOpenSci Code of Conduct
22

3-
We keep our Code of Conduct in our governance documentation. [Click here to
4-
go there now.](https://www.pyopensci.org/governance/CODE_OF_CONDUCT.html)
3+
All individuals participating in any pyOpenSci program such as our peer review process, need to abide by our code of conduct.
4+
5+
[Click here to
6+
read our full code of conduct now.](https://www.pyopensci.org/governance/CODE_OF_CONDUCT.html)

0 commit comments

Comments
 (0)