Submitting author: @davidhassell (David Hassell)
Repository: https://github.com/NCAS-CMS/cfdm
Version: 1.8.7.0
Editor: @usethedata
Reviewers: @bradyrx, @clynnes
Archive: 10.5281/zenodo.4075077
:warning: JOSS reduced service mode :warning:
Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.
Status badge code:
HTML: <a href="https://joss.theoj.org/papers/51546b2946452730082ef1d76adcef9c"><img src="https://joss.theoj.org/papers/51546b2946452730082ef1d76adcef9c/status.svg"></a>
Markdown: [](https://joss.theoj.org/papers/51546b2946452730082ef1d76adcef9c)
Reviewers and authors:
Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)
@bradyrx @clynnes, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:
The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @usethedata know.
โจ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest โจ
Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @bradyrx it looks like you're currently assigned to review this paper :tada:.
:warning: JOSS reduced service mode :warning:
Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.
:star: Important :star:
If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews ๐ฟ
To fix this do the following two things:
For a list of things I can do to help you, just type:
@whedon commands
For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:
@whedon generate pdf
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
@bradyrx comments from the pre-review issue (https://github.com/openjournals/joss-reviews/issues/2531) because I didn't do my job correctly and didn't get the review issue started:
Hi all, thanks for the patience here. It looks like this is stuck in pre-review? I have time now to do this so I'm just going to post my review here using the checklist I used last time I reviewed for JOSS.
Overall, cfdm looks great and I'm happy to suggest its acceptance to JOSS following some minor corrections I've listed below. Some are nitpicky grammar on the paper, others are some thoughts to make contributions more accessible to early open-source contributors. I was able to use cfdm very quickly with some forecasting data I had saved out to disk. The docs are thorough and give good tutorials. I didn't go too deep into the code base, but after skimming through, it hits the points I care about -- robust testing, leverages inheritance, and has consistently good docstrings.
Conflict of interest
X I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.Code of Conduct
X I confirm that I read and will adhere to the JOSS code of conduct.General checks
X Repository: Is the source code for this software available at the repository url?Yes. The source code is available and the repo is very well structured for open-source science.
X License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
X Contribution and authorship: Has the submitting author (@davidhassell) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
Yes, it looks like the two main contributors to the code base are the two authors.Functionality
X Installation: Does installation proceed as outlined in the documentation?
X Functionality: Have the functional claims of the software been confirmed?Yes, I loaded in some SubX subseasonal forecasting output I had and was able to follow along with the tutorial and inspect its properties.
X Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)
Yes, I tried playing around with inplace operations (in memory) per the docs and things were faster in place.Documentation
X A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
X Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
X Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).Really impressed by the thorough tutorial examples on the docs. Well done!
X Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
X Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
There's no codecov or coveralls indicator of how much coverage the testing gives, but I can see that there is a thorough amount of testing done under cfdm/test.
[ ] Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support
- I think it would be good to add a code of conduct. See Insights/Community'. That's the main thing missing (outside of PR templates). They have some stock ones that work well. Ours at climpred` is based on https://www.contributor-covenant.org/version/1/4/code-of-conduct/.
- It looks like CONTRIBUTING.md in the main repo is decoupled from the "support" page on the docs. I.e., the docs are missing some of this information. I would also suggest adding more information for first-time or early contributors, since there's a lot of steps that go into contributing to a python package on Github. I have a lightweight personal package with some contribution instructions that you're welcome to pull from: https://esmtools.readthedocs.io/en/stable/contributing.html (see "Preparing Pull Requests").
- I might change the docs page name from "Support" to something more obvious like "How to Contribute".
Software paper
X Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
X A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
[ ] State of the field: Do the authors describe how this software compares to other commonly-used packages?
It is mentioned that cfdm is the only library that is guaranteed to handle every possible type of CF-compliant dataset. I think this leaves out popular high-level packages like iris (https://github.com/SciTools/iris) that have CF-compliant manipulation of Earth System data, and it doesn't look like cfdm is a dependency there (please correct me if I'm wrong). xarray doesn't natively handle CF well, but an extension to it cf-xarray does: https://github.com/xarray-contrib/cf-xarray. So there might be some other packages that can be nodded to that think of the CF data model.
[ ] Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
Generally well written. See my bottom notes on small fixes to the paper's grammar. There are some spurious semicolons and commas in a few places throughout. Please double check uses of , and ;.
X References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?
Some notes on the paper:
โข Under the summary, the semicolon should be dropped from "They cater for data from model simulations; and from observations, ...". Maybe change the "and" following it to "as well as" for flow.
โข The sentence following the previous is structured somewhat awkwardly. I would say something like "CF conventions provide a description of the physical meaning of netCDF data variables, as well as their spatial, temporal, and other dimensional properties."
And reproducing @davidhassell reply to the above from the pre-review issue
@bradyrx, @usethedata
Hi. Thanks again for the detailed review. We have taken all of of your points on board, and hope that we can address them with the changes described here.
There's no codecov or coveralls indicator of how much coverage the testing gives, but I can see that there is a thorough amount of testing done under cfdm/test.
Code coverage is calculated as part of the test suite, and run with the GitHub actions, but is not easy to find. It is currently 87% (e.g. The "Run test suite and generate a coverage report" section of https://github.com/NCAS-CMS/cfdm/runs/1103183661). We are currently working to make this accessible by adding a new workflow to our GitHub Actions setup which will integrate the Codecov tool to the project and trigger coverage reports against every pull request..
I think it would be good to add a code of conduct. See Insights/Community'. That's the main thing missing (outside of PR templates). They have some stock ones that work well. Ours at climpred` is based on https://www.contributor-covenant.org/version/1/4/code-of-conduct/.
There is now a code of conduct at https://github.com/NCAS-CMS/cfdm/blob/master/CODE_OF_CONDUCT.md
It looks like CONTRIBUTING.md in the main repo is decoupled from the "support" page on the docs. I.e., the docs are missing some of this information. I would also suggest adding more information for first-time or early contributors, since there's a lot of steps that go into contributing to a python package on Github. I have a lightweight personal package with some contribution instructions that you're welcome to pull from: https://esmtools.readthedocs.io/en/stable/contributing.html (see "Preparing Pull Requests").
I might change the docs page name from "Support" to something more obvious like "How to Contribute".
We have replaced the "Support" section of the docs with a new "Contributing" section: https://github.com/NCAS-CMS/cfdm/blob/master/docs/source/contributing.rst, which draws on the esmtools approach - thanks. This file will get rendered as html at the time of the next release.
The CONTRIBUTING.md file (https://github.com/NCAS-CMS/cfdm/blob/master/CONTRIBUTING.md) has been modified to be consistent with the new docs. Instead of just duplicating the content from the Contributing section of the documentation, we preferred to provide a summary there and link to the docs page for full detail.
Generally well written. See my bottom notes on small fixes to the paper's grammar. There are some spurious semicolons and commas in a few places throughout. Please double check uses of , and ;.
We have revised the grammar in this light. The new text is in https://github.com/NCAS-CMS/cfdm/blob/master/joss/paper.md, and in the new whedon-generated pdf following this comment. The changes made in this respect, should you wish to isolate them, are contained in the pull request https://github.com/NCAS-CMS/cfdm/pull/76.
It is mentioned that cfdm is the only library that is guaranteed to handle every possible type of CF-compliant dataset. I think this leaves out popular high-level packages like iris (https://github.com/SciTools/iris) that have CF-compliant manipulation of Earth System data, and it doesn't look like cfdm is a dependency there (please correct me if I'm wrong). xarray doesn't natively handle CF well, but an extension to it cf-xarray does: https://github.com/xarray-contrib/cf-xarray. So there might be some other packages that can be nodded to that think of the CF data model.
I think that our original text was indeed less than clear on the separation between being able to manipulate all possible CF-netCDF datasets and implementing the CF data model. The former is possible without the latter, and the latter does not guarantee the former. Many libraries (iris, xarray, cf-xarray, ferret, grads, netCDF Java, ...) understand many features of CF, but none of them implement the CF data model, and also none are complete - in the sense that there are some elements of CF that they do not understand. cfdm both implements the CF data model, and can process every all possible CF-netCDF datasets.
Iris is a interesting example, as they state that they implement "a" data model of the CF conventions (my emphasis), but do not state what it is. It is not, however, the accepted CF data model that cfdm implements (for example, coordinate systems in iris are contained within coordinates, rather than the parent iris cube, which the CF data model would require). This is of course not a problem per se, as the CF data model makes no claims on uniqueness, but in any case iris does not yet provide functionality for everything in CF. From a look around the code base and docs, it appears to not be able to deal with simple geometries, netCDF hierarchical groups, discrete sampling geometries, and compression by gathering (for example).
I hope that a change to the text in the "Statement of need" section will be enough to clear up this subtle area:
(Old text) "To the authors' knowledge, cfdm and software built on it are currently the only libraries that are guaranteed to be able to handle every possible type of CF-compliant dataset. All others omit facets that are not currently of interest to their particular user communities."
(New text) "To the authors' knowledge, cfdm and software built on it are currently the only libraries that fully implement the CF data model and its application to every feature of the CF-netCDF encoding. All others omit facets that are not currently of interest to their particular user communities."
(the new text is also in the latest pdf version).
@bradyrx -- Based on the your comments over in the pre-review, I believe you're satisfied. If you'd be so kind as to check off the items in your checklist, that would be much appreciated.
@davidhassell -- My apologies again for the delay, and I do need to get a second reviewer, which I'm now working on.
@usethedata -- no worries, and thanks for moving things on.
@bradyrx - just to let you know that, further to your comments on code coverage, @sadielbartholomew has now implemented a codecov integration: https://codecov.io/gh/NCAS-CMS/cfdm, also available as a link in the cfdm GitHUb page https://github.com/NCAS-CMS/cfdm.
@whedon add @clynnes as reviewer
OK, @clynnes is now a reviewer
@whedon invite @cflynnes as reviewer
I'm sorry human, I don't understand that. You can see what commands I support by typing:
@whedon commands
@bradyrx - just to let you know that, further to your comments on code coverage, @sadielbartholomew has now implemented a codecov integration: https://codecov.io/gh/NCAS-CMS/cfdm, also available as a link in the cfdm GitHUb page https://github.com/NCAS-CMS/cfdm.
Wonderful, great to see it! Thanks for the update.
Dear @clynnes, many thanks for your review.
Thanks. @bradyrx and @clynnes for reviews. @davidhassell -- I will make a final editing pass through the document in the next day or two.
@whedon check references
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):
OK DOIs
- 10.1109/38.56302 is OK
- 10.5194/gmd-10-4619-2017 is OK
- 10.5281/zenodo.832255 is OK
- 10.5281/zenodo.3894524 is OK
- 10.5194/gmd-13-201-2020 is OK
- 10.5194/gmd-9-1937-2016 is OK
MISSING DOIs
- None
INVALID DOIs
- None
@whedon generate pdf
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
@davidhassell I show 1.8.6 as the current version here and matching what's current in your repository. If that's correct, then please go ahead and make a Zenodo archive of this current version and post the DOI here. If you're doing an update of the version to reflect changes made in this review, then update your repository to show the current version, make a Zenodo archive of that. Let me know the current version number and the Zenodo DOI. Thanks.
I have no further changes to make in the paper, and I've validated the references.
@usethedata Thanks, that's great. We have just released version 1.8.7.0 with the changes discussed here:
10.5281/zenodo.4075077
In full:
https://doi.org/10.5281/zenodo.4075077
Hi @usethedata, I've just spotted that I have missed out an author in one of the references - is too late to add it in?
Many thanks,
David
Go ahead and add.
@whedon set 1.8.7.0 as version
OK. 1.8.7.0 is the version.
@whedon set 10.5281/zenodo.4075077 as archive
OK. 10.5281/zenodo.4075077 is the archive.
I've just spotted that I have missed out an author in one of the references - is too late to add it in?
Go ahead and add.
Hi @usethedata, just for your information, David asked me offline to keep an eye on comments here and to if permitted to do this change since I work a late schedule so I am still working at this hour and he has probably started his weekend.
Let me just add a one-line commit to add in the extra author, as mentioned above, then I will comment here as after that to confirm it is done. Then everything is ready-to-go from our perspective. Thanks.
Hi @usethedata, thanks. David actually was still online and beat me to it so the change has now been made in this one new commit: NCAS-CMS/cfdm@0f8cbeafa32c77c5fc6e2267b97d22d3d2b27b1f.
I'm just wondering if it would be best we update the Zenodo version to the one just released, too, i.e. make this precise change:
diff --git a/joss/paper.bib b/joss/paper.bib
index 86b0437cc..02241916b 100644
--- a/joss/paper.bib
+++ b/joss/paper.bib
@@ -68,15 +68,15 @@
}
@software{Hassell:2020,
title = {{{cfdm}}: A {{Python}} reference implementation of the {{CF}} data model},
- month = jul,
+ month = oct,
year = 2020,
publisher = {Zenodo},
- version = {1.8.6.0},
- doi = {10.5281/zenodo.3894524},
+ version = {1.8.7.0},
+ doi = {10.5281/zenodo.4075077},
urldate = {2020-07-27},
- url = {https://doi.org/10.5281/zenodo.3894524}
+ url = {https://doi.org/10.5281/zenodo.4075077}
}
Or shall we just leave it?
Please ignore the above, we decided that change should be made so I have pushed up a final commit to update the Zenodo version and corresponding metadata from 1.8.6.0 to 1.8.7.0, as per the tagged version on the paper: NCAS-CMS/cfdm@f720202ce453b9e67643a114f1cddfa8df887ab9.
Thanks for your patience. This is now ready to go as far as we are concerned.
@whedon set doi.org/10.5281/zenodo.4075077 as archive
OK. 10.5281/zenodo.4075077 is the archive.
@whedon generate pdf
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
@whedon accept
Attempting dry run of processing paper acceptance...
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):
OK DOIs
- 10.1109/38.56302 is OK
- 10.5194/gmd-10-4619-2017 is OK
- 10.5281/zenodo.832255 is OK
- 10.5281/zenodo.4075077 is OK
- 10.5194/gmd-13-201-2020 is OK
- 10.5194/gmd-9-1937-2016 is OK
MISSING DOIs
- None
INVALID DOIs
- None
:wave: @openjournals/joss-eics, this paper is ready to be accepted and published.
Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/1794
If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/1794, then you can now move forward with accepting the submission by compiling again with the flag deposit=true
e.g.
@whedon accept deposit=true
Hi! I can take over from here. I do have a question though. It's unusual for a reviewer to not say anything in a review issue โ did some part of the review from @clynnes occur offline or just not linked in here so I don't see it? Was there confirmation that the reviewer is satisfied with proceeding?
Edit to specifically ping @usethedata for this question.
@davidhassell Please edit the metadata for title and authors for your zenodo archive so the title and author list exactly match your JOSS paper, unless you prefer not to have it match.
The version has been updated, and the paper looks good to me.
@kthyng Apologies for not documenting the discussion @clynnes and I had on the subject. He didn't see anything that needed to be changed beyond what was already addressed. That's a new reviewer item that I should have handled better.
Thank you @kthyng and @usethedata. I have updated the zenodo archive to match the title and authors in the JOSS paper (https://doi.org/10.5281/zenodo.4075077).
@whedon accept deposit=true
Doing it live! Attempting automated processing of paper acceptance...
๐ฆ๐ฆ๐ฆ ๐ Tweet for this paper ๐ ๐ฆ๐ฆ๐ฆ
๐จ๐จ๐จ THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! ๐จ๐จ๐จ
Here's what you must now do:
Party like you just published a paper! ๐๐๐ฆ๐๐ป๐ค
Any issues? Notify your editorial technical team...
Congratulations to @davidhassell (David Hassell) and co-author!!
Thanks to @bradyrx and @clynnes for reviewing!
and @usethedata for editing!
:tada::tada::tada: Congratulations on your paper acceptance! :tada::tada::tada:
If you would like to include a link to your paper from your README use the following code snippets:
Markdown:
[](https://doi.org/10.21105/joss.02717)
HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.02717">
<img src="https://joss.theoj.org/papers/10.21105/joss.02717/status.svg" alt="DOI badge" >
</a>
reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.02717/status.svg
:target: https://doi.org/10.21105/joss.02717
This is how it will look in your documentation:
We need your help!
Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:
Great - thanks all for helping us get it published.