Skip to content

Commit 2b2eb10

Browse files
authored
Merge branch 'main' into ai-policy
2 parents bdde000 + 83e0ed1 commit 2b2eb10

File tree

2 files changed

+106
-48
lines changed

2 files changed

+106
-48
lines changed

about/package-scope.md

Lines changed: 95 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# The Scope of Packages that pyOpenSci Reviews
1+
# The Scope of Packages that pyOpenSci Reviews
22

33
The mission of pyOpenSci's open peer review process is to:
44

@@ -10,6 +10,7 @@ of Open Source software for those who wish to obtain a Journal paper
1010
through our review.
1111

1212
## What types of packages does pyOpenSci review?
13+
1314
pyOpenSci reviews higher level software packages that support scientific workflows.
1415

1516
:::{figure-md} fig-target
@@ -22,7 +23,6 @@ these packages tend to have more variability in long term maintenance and
2223
package infrastructure and quality compared with established core packages. **Source: ["Jupyter meets earth" project](https://jupytearth.org/jupyter-resources/introduction/ecosystem.html)**
2324
:::
2425

25-
2626
:::{admonition} This is a living document
2727
:class: note
2828

@@ -49,7 +49,7 @@ data processing and the various stages of managing the
4949
data lifecycle. Packages submitted to pyOpenSci should fit into one or
5050
more of the categories below and should be within our technical scope.
5151

52-
```{admonition} Your Package Does Not Need to Widely Used to be Reviewed
52+
:::{admonition} Your Package Does Not Need to Widely Used to be Reviewed
5353
:class: important
5454

5555
We review packages with the goal of improving package quality and usability for scientists.
@@ -64,8 +64,7 @@ We welcome young packages that are just entering the scientific Python
6464
ecosystem to apply for review if they are relevant to the science community and
6565
fit into at least one scope category below. We also welcome mature packages with
6666
a growing or established community!
67-
```
68-
67+
:::
6968

7069
## Package categories that are in-scope for pyOpenSci
7170

@@ -76,13 +75,14 @@ link to or a tutorial that demonstrates its potential application for science.
7675

7776
Below we provide examples of packages from pyOpenSci ecosystem.
7877

79-
```{note}
78+
:::{note}
8079
Many of the example packages below perform tasks that might fit in multiple
8180
categories. Examples are there to provide you with a flavor of the types
8281
of packages that would fall into that category.
83-
```
82+
:::
8483

8584
### Data retrieval
85+
8686
Packages for accessing and downloading data from online sources. This category
8787
includes wrappers for accessing APIs.
8888

@@ -92,16 +92,15 @@ interest to scientists. However, retrieval packages should be focused on data
9292
sources / topics, rather than services. For example a general client for Amazon
9393
Web Services data storage would not be in-scope.
9494

95-
* 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)
96-
95+
- 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)
9796

9897
### Data extraction
9998

10099
These packages aid in retrieving data from unstructured sources such as text,
101100
images, and PDFs. They might also parse scientific data types and outputs from
102101
scientific equipment.
103102

104-
* Examples: [devicely](https://github.com/pyOpenSci/software-submission/issues/37), [jointly](https://github.com/pyOpenSci/software-submission/issues/45)
103+
- Examples: [devicely](https://github.com/pyOpenSci/software-submission/issues/37), [jointly](https://github.com/pyOpenSci/software-submission/issues/45)
105104

106105
### Data processing and munging
107106

@@ -110,21 +109,20 @@ category focuses on tools for handling data in specific formats that scientists
110109
may be interested in working with. These data may also be generated from
111110
scientific workflows or exported from instruments and wearables.
112111

113-
* 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)
114-
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)
115113

116114
### Data deposition
117115

118116
Tools for depositing data into scientific research repositories.
119117

120-
* Examples: [This is an example from rOpenSci - eml](https://github.com/ropensci/software-review/issues/80)
118+
- Examples: [This is an example from rOpenSci - eml](https://github.com/ropensci/software-review/issues/80)
121119

122120
### Data validation and testing:
123121

124122
Tools that enable automated validation and checking of data quality and
125123
completeness. These tools should be able to support scientific workflows.
126124

127-
* Example: [pandera](https://github.com/pyOpenSci/software-submission/issues/12)
125+
- Example: [pandera](https://github.com/pyOpenSci/software-submission/issues/12)
128126

129127
### Scientific software wrappers
130128

@@ -139,15 +137,16 @@ We strongly encourage submissions that wrap tools that are open-source with
139137
an OSI-approved license. Exceptions will be evaluated on a case-by-case basis,
140138
taking into consideration whether open-source options exist.
141139

142-
* Examples: [PyGMT](https://github.com/pyOpenSci/software-submission/issues/43), [python-graphblas](https://github.com/pyOpenSci/software-submission/issues/81)
140+
- Examples: [PyGMT](https://github.com/pyOpenSci/software-submission/issues/43), [python-graphblas](https://github.com/pyOpenSci/software-submission/issues/81)
143141

144142
### Workflow automation and versioning
143+
145144
Tools that automate and link together workflows and as such support
146145
reproducible workflows. These
147146
tools may include build systems and tools to manage continuous integration.
148147
This also includes tools that support version control.
149148

150-
* 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)
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)
151150

152151
### Citation management and bibliometrics:
153152

@@ -156,17 +155,17 @@ creating CVs or otherwise attributing scientific contributions, or accessing,
156155
manipulating or otherwise working with bibliometric data. (Example: [Example from rOpenSci - RefManageR](https://github.com/ropensci/software-review/issues/119))
157156

158157
### Data visualization and analysis
158+
159159
These are packages that enhance a scientist's experience in visualizing and
160160
analyzing data.
161161

162-
* Examples: [PyGMT - (also spatial and data munging)](https://github.com/pyOpenSci/software-submission/issues/43),
162+
- Examples: [PyGMT - (also spatial and data munging)](https://github.com/pyOpenSci/software-submission/issues/43),
163163

164164
### Database software bindings
165165

166-
Bindings and wrappers for database APIs.
167-
168-
* Example: [Example from rOpenSci - rrlite](https://github.com/ropensci/software-review/issues/6)
166+
Bindings and wrappers for database APIs.
169167

168+
- Example: [Example from rOpenSci - rrlite](https://github.com/ropensci/software-review/issues/6)
170169

171170
## Scope for packages that support analytics, statistics and modeling
172171

@@ -177,12 +176,12 @@ credible journal.
177176

178177
We consider the following when determining whether an analytics-related package is within our review scope:
179178

180-
1. If your package facilitates a scientist using a **known or vetted statistical, AI or Analytical approach** we consider that in-scope. Before submitting to us, please ensure that your package's documentation directs users to existing paper(s) or pre-print(s) that document that approach's application. Further, be sure to link to these publications in your package review submission.
179+
1. If your package facilitates a scientist using a **known or vetted statistical, AI or Analytical approach** we consider that in-scope. Before submitting to us, please ensure that your package's documentation directs users to existing paper(s) or pre-print(s) that document that approach's application. Further, be sure to link to these publications in your package review submission.
181180

182181
The review for this package:
183182

184-
* requires at least 1 domain specialist
185-
* will never vet the analytical method itself.
183+
- requires at least 1 domain specialist
184+
- will never vet the analytical method itself.
186185

187186
2. If your package introduces a novel or newer analytic approach that is not yet vetted/ accepted by a scientific journal, we can not review it. We cannot review projects that exist as a proof-of-concept demonstration of a model or analytical approach that might accompany a paper. In this case, the approach should be sent to a scientific journal for vetting.
188187

@@ -202,31 +201,76 @@ we will expand this list.
202201

203202
Packages focused on the retrieval, manipulation, and analysis of spatial data.
204203

205-
* Examples: [PyGmt](https://github.com/pyOpenSci/software-submission/issues/43),
206-
[Moving Pandas ](https://github.com/pyOpenSci/software-submission/issues/18)
207-
204+
- Examples: [PyGmt](https://github.com/pyOpenSci/software-submission/issues/43),
205+
[Moving Pandas ](https://github.com/pyOpenSci/software-submission/issues/18)
208206

209207
### Education
210208

211209
Packages to aid with instruction.
212210

213-
* Examples: [pyrolite](https://github.com/morganjwilliams/pyrolite)
214-
215-
211+
- Examples: [pyrolite](https://github.com/morganjwilliams/pyrolite)
216212

217213
## Partnerships
218214

219215
### Astropy
220216

221217
We have a [community affiliated package partnership with Astropy](../partners/astropy). To see packages currently under review for Astropy affiliation, visit the [open issues page](https://github.com/pyOpenSci/software-submission/issues?q=is%3Aissue+is%3Aopen) and select the `astropy` label.
218+
222219
### Pangeo
223220

224221
We have a [partnership with Pangeo](../partners/pangeo). Often times packages submitted as a part of that partnership are also in the geospatial domain.
225222

226-
* Examples: [xclim](https://github.com/pyOpenSci/software-submission/issues/73)
223+
- Examples: [xclim](https://github.com/pyOpenSci/software-submission/issues/73)
227224

228225
## Package technical scope
229226

227+
(package-size-effort)=
228+
229+
### Package size and scholarly effort
230+
231+
pyOpenSci reviews packages that represent substantial scholarly effort and provide
232+
meaningful value to the scientific community. While we do not enforce a strict
233+
minimum line count, we expect packages to demonstrate sufficient complexity and
234+
functionality to warrant a comprehensive peer review.
235+
236+
**General expectations:**
237+
238+
- Packages should generally represent at least three months of development work
239+
for an individual developer
240+
- We discourage "salami slicing" - breaking up functionality into artificially
241+
small packages solely to generate multiple submissions
242+
- Packages with fewer than approximately 1,000 non-comment, non-whitespace lines
243+
of code will receive additional scrutiny from editors
244+
- Note: Unit tests are not counted toward the 1,000 line minimum, but comprehensive
245+
test coverage is expected for all packages
246+
247+
**Our approach to smaller packages:**
248+
249+
We recognize that some highly focused, well-designed packages can be extremely
250+
valuable to the scientific community even with a smaller codebase. If you are
251+
submitting a package with a smaller codebase, please provide extra detail in your
252+
submission's landscape analysis section explaining:
253+
254+
- The previously unmet need your package fills
255+
- Why this functionality warrants a standalone package
256+
- The specific scientific workflows it enables
257+
- How it differs from or complements existing tools
258+
259+
The final decision on whether a package represents sufficient scholarly effort
260+
rests with the editor and will be made on a case-by-case basis.
261+
262+
:::{note}
263+
**Relationship to JOSS requirements:**
264+
265+
The Journal of Open Source Software (JOSS) has a [substantial scholarly effort requirement](https://joss.readthedocs.io/en/latest/submitting.html#substantial-scholarly-effort)
266+
for all submitted packages. While pyOpenSci may review packages that don't meet JOSS's
267+
minimum requirements, such packages will not be eligible for the fast-track
268+
JOSS submission process described in our [partnership with JOSS](../partners/joss).
269+
270+
Our more flexible approach allows us to support useful scientific packages
271+
that may be outside JOSS scope while maintaining our partnership for
272+
packages that meet both organizations' criteria.
273+
:::
230274

231275
### Telemetry & user-informed consent
232276

@@ -247,29 +291,29 @@ We will evaluate usage data collected by packages on a case-by-case basis
247291
and reserve the right not to review a package if the data collection is overly
248292
invasive.
249293

250-
251294
To be in technical scope for a pyOpenSci review, your package:
252295

253-
* Should have maintenance workflows documented.
254-
* Should declare vendor dependencies using standard approaches rather than including code from other packages within your repository.
255-
* Should not have an exceedingly complex structure. Others should be able to contribute and/or take over maintenance if needed.
296+
- Should have maintenance workflows documented.
297+
- Should declare vendor dependencies using standard approaches rather than including code from other packages within your repository.
298+
- Should not have an exceedingly complex structure. Others should be able to contribute and/or take over maintenance if needed.
256299

257-
```{admonition} pyOpenSci's goal is to support long(er) term maintenance
300+
:::{admonition} pyOpenSci's goal is to support long(er) term maintenance
258301
pyOpenSci has a goal of supporting long term maintenance of open source
259302
Python tools. It is thus important for us to know that if you need to step down as a maintainer, and that the package infrastructure and documentation is
260303
in place to support us finding a new maintainer who can take over your
261304
package's maintenance.
262-
```
305+
:::
263306

264307
### What if my package seems like its category or domain is out of scope?
308+
265309
- pyOpenSci is still developing as a community. If your scientific Python
266-
package does not fit into one of the categories or if you have any other
267-
questions, we encourage you to open a pre-submission inquiry. We're happy to help.
310+
package does not fit into one of the categories or if you have any other
311+
questions, we encourage you to open a pre-submission inquiry. We're happy to help.
268312
- Data visualization packages come in many varieties, ranging from small
269-
hyper-specific methods for one type of data to general, do-it-all packages
270-
(e.g. matplotlib). pyOpenSci accepts packages that are somewhere in between the
271-
two. If you're interested in submitting your data visualization package, please
272-
open a pre-submission inquiry first.
313+
hyper-specific methods for one type of data to general, do-it-all packages
314+
(e.g. matplotlib). pyOpenSci accepts packages that are somewhere in between the
315+
two. If you're interested in submitting your data visualization package, please
316+
open a pre-submission inquiry first.
273317

274318
## Examples of packages that might be out of technical scope
275319

@@ -279,12 +323,14 @@ Your package **may not be in technical scope** for us to review at this time if
279323
it fulfills any of the out-of-technical-scope criteria listed below.
280324

281325
Your package is in technical scope if it is:
282-
* Pure Python or Python with built extensions
283-
* Available from PyPI and/or community conda channels such as conda-forge or bioconda
326+
327+
- Pure Python or Python with built extensions
328+
- Available from PyPI and/or community conda channels such as conda-forge or bioconda
284329

285330
Your package might be out of in technical scope if it is:
286-
* Not published in a community channel such as PyPI or a channel on anaconda cloud
287-
* Exceedingly complex in its structure or maintenance needs
331+
332+
- Not published in a community channel such as PyPI or a channel on anaconda cloud
333+
- Exceedingly complex in its structure or maintenance needs
288334

289335
A few examples of packages that may be too technically challenging for us to
290336
find a new maintainer for in the future are below.
@@ -312,7 +358,9 @@ maintenance of the original code base to be independent from your package's
312358
maintenance.
313359

314360
(package-overlap)=
361+
315362
## Package Overlap
363+
316364
pyOpenSci encourages competition among packages, forking and re-implementation
317365
as they improve options of users. However, we strive to make packages in the
318366
pyOpenSci suite to represent our top recommendations for the tasks that they
@@ -324,7 +372,7 @@ being:
324372

325373
- More open in licensing or development practices
326374
- Broader in functionality (e.g., providing access to more data sets, providing
327-
a greater suite of functions), but not only by duplicating additional packages
375+
a greater suite of functions), but not only by duplicating additional packages
328376
- Better in usability and performance
329377
- Actively maintained while alternatives are poorly or no longer actively maintained
330378

our-process/policies.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,18 @@ We offer two pathways for packages previously reviewed by JOSS:
7171
standards. This approach reduces the burden of a full review while ensuring the quality of the package
7272
reflects its most recent version.
7373

74-
(coi)=
74+
:::{note}
75+
**Submitting to JOSS after pyOpenSci review:**
76+
77+
While pyOpenSci's scope may be more flexible than JOSS in certain areas (such as
78+
package size requirements), packages must still meet JOSS's specific criteria to
79+
be eligible for JOSS fast-track submission. If your package is accepted by pyOpenSci
80+
but does not meet JOSS requirements (e.g., minimum lines of code), it will not be
81+
eligible for JOSS fast-track review. See our [package scope guidelines](package-size-effort)
82+
for more details.
83+
:::
7584

85+
(coi)=
7686
## Conflict of interest for reviews and editors
7787

7888
Following criteria are meant to be a guide for what constitutes a conflict of

0 commit comments

Comments
 (0)