|
| 1 | +--- |
| 2 | +layout: page |
| 3 | +title: CODECHECK community workflow for codecheckers |
| 4 | +permalink: guide/community-workflow |
| 5 | +--- |
| 6 | + |
| 7 | +See also the [CODECHECK community workflow overview](/guide/community-workflow-overview) and [discuss your issues](https://github.com/orgs/codecheckers/discussions). |
| 8 | +This guide has two main parts - a _short community workflow list of steps_, and an _extended version_ which may be used as a reference. |
| 9 | +_Are you checking a paper with CHECK-NL?_ See their [workflow for in-person events}(/nl/workflow/). |
| 10 | + |
| 11 | +## Codechecker tasks - short version |
| 12 | + |
| 13 | +Before you start, an author created a pre-producible workflow: all data and code, plus a README file detailing the content, a manifest file detailing the output [in the CODECHECK configuration file specification](https://codecheck.org.uk/spec/config/1.0/), and a license file; this is ideally bundled in a single repository or archive file and accompanied by a (pre-published) paper. |
| 14 | +The author then created a new issue in the [CODECHECK register](https://github.com/codecheckers/register/issues/new/choose) to request a new community CODECHECK. |
| 15 | +Now it's your turn. |
| 16 | + |
| 17 | +1. Accept codechecking invitation by commenting on the issue |
| 18 | +1. Create a repository in the CODECHECK GitHub organization, either by forking existing repository or creating new one and uploading materials |
| 19 | +1. Create a new directory in that repository where all new files will go |
| 20 | +1. Create a new document to write the CODECHECK certificate and *start documenting the ongoing codecheck now* |
| 21 | + The exact form of a codechecking procedure and form of documentation vary greatly, but there are some tools, such as [an R package](https://github.com/codecheckers/codecheck) to automate some steps, including [an Rmd template](https://github.com/codecheckers/codecheck/blob/master/inst/extdata/templates/codecheck/codecheck.Rmd); all of that is optional, as long as the final report contains the mandatory information |
| 22 | +1. Open the manuscript and follow the instructions to reproduce a workflow |
| 23 | +1. During the CODECHECK, contact the authors in case of problems; keep in mind the general [CODECHECK principles](/project/#the-codecheck-principles), especially “the codechecker records but does not fix” – unless it is a very trivial bug like pathnames; the authors can provide updated versions of code and documentation; however, the entire procedure should not be much more time-intensive than a normal peer review of a paper and not involve more than a few code revisions; the codechecker can always stop the process after a reasonable effort and close the issue as not successfully reproduced. |
| 24 | +1. Summarize the process and outcomes in your certificate and upload it as PDF to [Zenodo](https://zenodo.org/) or [OSF](https://osf.io/); add edited files and intemediary as well as output files as you see fit; the certifiate must at least contain the information on who checked what and how; the ambition should be to document for future self and other researchers; have a look at the available reports. |
| 25 | +1. Adds a pull request to original repository for the CODECHECK badge (optional) |
| 26 | +1. Notify the editor in the GitHub issue about the completion |
| 27 | + |
| 28 | +------ |
| 29 | + |
| 30 | +## Codechecker tasks - extended version |
| 31 | + |
| 32 | +### Prerequisites |
| 33 | + |
| 34 | +The codechecker in general is not there to fix things, but to document how far they got. |
| 35 | +The result is either is a completed CODECHECK, or a documentation why the check was found impossible to complete (see _[principle 1](/)_). |
| 36 | +Codecheckers should give feedback to the author and definetely allow workflows to be fixed. |
| 37 | +It is very hard to put a precise number on the amount of work you should put into a CODECHECK. |
| 38 | +You're not expected to spend more time on a CODECHECK than you would on peer-reviewing a manuscript. |
| 39 | +You should take advantage of the fact that you can _talk to the author_ and feel free to reach out early and often, when you think that issues can be resolved quickly. |
| 40 | +Depending on your familiarity with the used programming language and specific tools at hand, a very rough experience value could be 30 minutes of reading documentation, downloading and installing software, and another 30 minutes to write up the CODECHECK report. |
| 41 | +The time in between for running the actual workflow will vary greatly, from minutes to hours, and hopefully can be run in the background. |
| 42 | +In case the computations run longer than your regular working day, consider asking the author to prepare a subset of the workflow. |
| 43 | + |
| 44 | +However, a codechecker may, for example out of personal interest in the research at hand, invest additional efforts. |
| 45 | +In any case, the overall goal is to _leave the workflow repository in the same or better condition_. |
| 46 | + |
| 47 | +Some further tips: |
| 48 | + |
| 49 | +- Every CODECHECK is unique, just as the associated research article. If this guide feels like it doesn't work for your case, you are likely still on the right track. |
| 50 | +- Reach out to fellow codecheckers in the [public discussion forum](https://github.com/orgs/codecheckers/discussions) if you face any problems. |
| 51 | +- A familiarity with `make` is helpful to provide an easy entrypoint and build up useful code snippets for your CODECHECKs, see <https://book.the-turing-way.org/reproducible-research/make> and <https://swcarpentry.github.io/make-novice/reference> |
| 52 | + |
| 53 | +## CODECHECK steps |
| 54 | + |
| 55 | +1. Comment on the issue in the CODECHECK register repository to notify author and editor that you're accepting (and starting) the CODECHECK. |
| 56 | +1. Fork the author's repository to the codecheckers GitHub.com or GitLab.com organisation, or, if the code is not on GitHub/GitLab, create a new repository with the naming scheme `Lastname-YYYY` using the family name of the corresponding author. Please take care to follow the terms and conditions of the workspace's licenses; stop your CODECHECK if the licensing is unclear and contact the author to fix the documentation. |
| 57 | +1. Create a directory `codecheck` to not interfere with original files. |
| 58 | + This is the _check directory_. |
| 59 | + You can use `.codecheck` if `codecheck` exists in submission for some reason. |
| 60 | + _All files created by you go into this directory._ |
| 61 | + The exception are files that the author could have used and which you suggest the author transfers into her own repository after the check (see "leave in a better condition" above). |
| 62 | +1. **Write a `Makefile`** to re-run the workflow based on provided documentation, i.e., recreate all files listed in the manifest by runnign the command `make codecheck`. |
| 63 | + This target should run the whole or most suitable subset of the workflow and create the report. |
| 64 | +1. **Optional contents** of the check directory. |
| 65 | + - Document the used computing environment, see [CODECHECK bundle guide](/guide/bundle). |
| 66 | + - Create a notebook as the basis for the report (see below), e.g. `codecheck.Rmd`. |
| 67 | + - Make the repository [Binder-ready](https://mybinder.readthedocs.io/); put all Binder-related files into `.binder/` directory to separate them from the author's content. |
| 68 | +1. **Write the CODECHECK report** and save it as a PDF file named **`codecheck.pdf`** in the check directory. |
| 69 | + The report should cover at least _WHO_ checked _WHAT_, and _HOW_. |
| 70 | + Imagine the report as a reminder for future you so you will be to re-check the workflow in two years time - what help would you need to do that? |
| 71 | + Take a look at the [example CODECHECKs](#examples) for existing reports to serve as templates. |
| 72 | +1. **Optional report sections** depending on interest, time, and skills: |
| 73 | + - _How to cite the report?_ Your CODECHECK is a valuable contribution to science, and you should add a short note on how to cite your report (see below for reserving the DOI). |
| 74 | + - Do the generated outputs match the ones in the original manuscript? Are the differences relevant or not? |
| 75 | + - Are there any parts of the workflow where the author could improve the code? |
| 76 | + - How long did it take you to conduct the CHECK, and where did you struggle? |
| 77 | + - Are used pieces of software and data properly CITED and publicly DEPOSITED und suitable LICENSES? |
| 78 | + - Are open formats (text-based etc.) used for input and output data? |
| 79 | + - Is the data and [software](https://content.iospress.com/articles/data-science/ds190026) FAIR? |
| 80 | +1. Add **mandatory codechecker-contributed information** to the **`codecheck.yml`** file, see [spec](/spec/config/latest) |
| 81 | +1. Wait for the article DOI. |
| 82 | +1. **Deposit the CODECHECK report on _Zenodo_** using your own Zenodo account |
| 83 | + - _Files_ |
| 84 | + - `codecheck.pdf` (mandatory) |
| 85 | + - Optional: You can add any material to this record that you see fit, especially things that helped you with your reproduction, i.e., the [CODECHECK bundle](/guide/bundle) |
| 86 | + - _Communities_: Search for "codecheck" to add the record to the [CODECHECK community on Zenodo](https://zenodo.org/communities/codecheck) |
| 87 | + - _Authors_: Add all codecheckers as authors |
| 88 | + - _Title_: `"CODECHECK Certificate YYYY-NNN"` (certificate number issued via the register ticket above) |
| 89 | + - _License_: Use `Creative Commons Attribution 4.0 International` if you only upload the CODECHECK report, otherwise use `Other (Open)` or `Other (Attribution)` and document the licensing in the "Additional notes" field. |
| 90 | + - _Reserve a DOI_ |
| 91 | + - Add the DOI to the `codecheck.yml` file |
| 92 | + - Mention the DOI to the `codecheck.pdf` CODECHECK report, e.g. as a subtitle |
| 93 | + - Use _other fields_ as you see fit (Description, Version, Language, Keywords) |
| 94 | + - _Contributors_: Add the original authors as contributors (see Zendo Metadata form section "Contributors (optional)") with a suitable role (e.g., "Researcher") |
| 95 | + - _Optionally_, add extra metadata |
| 96 | + - connect the Zenodo record to the GitHub repository with a "Relate/alternate identifier" |
| 97 | + - connect the Zenodo record to the article/preprint with a "Relate/alternate identifier" |
| 98 | +1. If the check was conducted for a piece of software for the first time or resulted in important lessons learned, consider adding it to the list of examples below. |
| 99 | +1. If possible, add the [CODE WORKS badge](https://github.com/codecheckers/website/tree/master/badges) <img src="/img/codeworks-badge.svg" alt="CODECHECK badge" height="16" style="margin-top: -4px;" /> to the article or the original software repository, e.g., by sending a pull request. The badge should link directly to the Zenodo record _via the DOI_. |
| 100 | + The following snippet should work in Markdown: |
| 101 | + |
| 102 | + ```md |
| 103 | + [](https://doi.org/<DOI HERE>) |
| 104 | + ``` |
| 105 | + |
| 106 | +1. If the check material is published on `github.com/codecheckers`, add the [`codecheck` topic](https://github.com/search?q=topic%3Acodecheck+fork%3Atrue+org%3Acodecheckers&type=Repositories) to the project. |
0 commit comments