Skip to content

Commit 866c486

Browse files
authored
Update checklist (#166)
* Fix link * Fixes typo Fix #109 * Update what to expect * strengthen wording for basilisk requirement instead of reticulate as requested by Vince * Update System Dependency section with @vjctin suggested text * Fixes #128 - revert back to a downloaded file * Add note about submitter should be maintainer * Extend end of life description * Change package size to 10 MB * Update checklist
1 parent 3157c8d commit 866c486

1 file changed

Lines changed: 120 additions & 42 deletions

File tree

docs/package-review-checklist.md

Lines changed: 120 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
# Package Review Checklist {#review-checklist}
22

3-
**Version 1.0.1**
3+
**Version 2.0.0**
44

5-
This checklist is intended to aid and guide the reviewer through the review
6-
process.
5+
This checklist is intended to aid and guide the reviewer through the review process.
76
The individual checkboxes match the package review criteria [listed here](https://contributions.bioconductor.org/).
8-
The package review itself (including comments) should be posted in the corresponding issue on the submission tracker.
7+
The package review itself (including additional comments) should be posted in the corresponding issue on the submission tracker.
98

109
Reviewers should be respectful and kind to the authors in the review process.
1110
Following the code of conduct is mandatory for everyone involved in the review process.
@@ -21,15 +20,39 @@ The functionality should be sufficiently documented in man pages with runnable e
2120

2221
## General package development
2322

24-
- [ ] `R CMD build` without errors, warnings and notes.
25-
- [ ] Package passes `BiocCheck::BiocCheck()`, `BiocCheck::BiocCheckGitClone()`.
26-
- [ ] File names.
27-
- [ ] Package size.
23+
- [ ] `R CMD build` without errors, warnings and notes. Any not fixed should be justified.
24+
- [ ] Package passes `BiocCheck::BiocCheck()`, `BiocCheck::BiocCheckGitClone()`. Any not fixed should be justified.
25+
- [ ] File names. Do not use filenames that differ only in case, as not all file systems are case-sensitive.
26+
- [ ] Package size. Size of tarball <= 10MB.
2827
- [ ] `R CMD check --no-build-vignettes` within 10 minutes.
29-
- [ ] Memory requirement below 3GB.
28+
- [ ] Memory requirement below 8GB.
3029
- [ ] Size of individual files <= 5MB.
31-
- [ ] Size of tarball <= 10MB.
32-
- [ ] README file.
30+
- [ ] Undesirable files. System files like `.DS_Store`, `*.so`, etc. should not be included (see [.gitignore](https://contributions.bioconductor.org/gitignore.html) for a listing)
31+
32+
## Important Bioconductor Features
33+
34+
- [ ] `biocViews` included in the DESCRIPTION and are valid, relevant, and descriptive to the package. They should come from only 1 main category (software, data experiment, annotation, workflow)
35+
- [ ] Contains a Vignette with executed code.
36+
37+
## Common Bioconductor Methods and Classes
38+
39+
- [ ] Reuse of [common Bioconductor methods and classes](https://contributions.bioconductor.org/reusebioc.html#reusebioc) when appropriate
40+
- [ ] Indication of how package functionality can be integrated into a Bioconductor pipeline/workflow typically in vignette intro
41+
42+
Example: Seurat and data.frames are not Bioconductor classes. Packages certainly
43+
may keep this interoperability and generality but they should also be able to work
44+
_directly_ with the equivalent Bioconductor class in this case likely a SummarizedExperiment or
45+
SingleCellExperiment (maybe with a designed wrapper function, e.g). The majority
46+
of documentation and runnable code should emphasize/demonstarte the interaction
47+
with Bioconductor objects (it may be in addition to the others capabilities).
48+
49+
50+
## README file
51+
52+
Not required but often useful. If included:
53+
54+
- [ ] Include Bioconductor installation instructions
55+
- [ ] If using Rmd, installation sections should be in `eval=FALSE`
3356

3457
## The DESCRIPTION file
3558

@@ -38,55 +61,91 @@ Refer to the [DESCRIPTION](https://contributions.bioconductor.org/description.ht
3861
- [ ] `Package` field.
3962
- [ ] `Title` field.
4063
- [ ] `Version` field.
41-
- [ ] `Description` field.
64+
- [ ] `Description` field. Longer than three lines.
4265
- [ ] `Authors@R` field.
43-
- [ ] `License` field.
44-
- [ ] `LazyData` field.
45-
- [ ] `Depends`, `Imports`, `Suggests`, `Enhances` fields.
46-
- [ ] `SystemRequirements` field.
66+
- [ ] `License` field. Bioconductor only accepts Open Source Licenses ideally from: https://www.r-project.org/Licenses/
67+
- [ ] `LazyData` field. Justify if `LazyData: TRUE`
68+
- [ ] `Depends`, `Imports`, `Suggests`, `Enhances` fields. All dependencies must be on CRAN or Bioconductor
69+
- [ ] `SystemRequirements` field. If applicable should also have INSTALL file.
4770
- [ ] `biocViews` field.
4871
- [ ] `BugReports` field.
4972
- [ ] `URL` field.
50-
- [ ] `Video` field.
51-
- [ ] `Collate` field.
52-
- [ ] `BiocType` field.
73+
- [ ] `Video` field. Optional.
74+
- [ ] `Collate` field. Optional.
75+
- [ ] `BiocType` field. (one of: Softare, ExperimentData, Annotation, Workflow, Book)
76+
- [ ] `Config/Bioconductor/UnsupportedPlatforms`. Optional. If package designed NOT to work on a specific OS
77+
- [ ] Use of Remotes is NOT allowed. All packages must be on CRAN/Bioconductor
78+
79+
N.B. Authors@R:
80+
81+
- [ ] Use of Authors@R should be used instead of individual Maintainer and Author
82+
fields. While its not wrong to use Maintainer/Author, Authors@R should be
83+
strongly encouraged. Using both Authors@R and Maintainer/Author is not allowed!
84+
85+
- [ ] It is strongly encouraged to include a `fnd` entry in Authors@R with any
86+
relevant Grant Ids to trace funding activities. Not required but encouraged.
5387

5488
## The NAMESPACE file
5589

56-
- [ ] Function names use `camelCase` or `snake_case` and do not include `.`.
57-
- [ ] Selective imports using `importFrom` instead of *import all* with `import`.
58-
- [ ] Individual functions/methods are exported instead of all.
90+
- [ ] Function names use `camelCase` or `snake_case` and do not include `.`. `.` indicates hidden or S3 dispatch functions
91+
- [ ] Selective imports using `importFrom` instead of *import all* with `import`. Except where appropriate (like class structures and extensions or heavily utilized packages)
92+
- [ ] Individual functions/methods are exported instead of regular expression matching all.
93+
- [ ] NAMESPACE and DESCRIPTION Depends/Imports/Suggests/Enhances consistency.
94+
- [ ] Avoid names of packages, functions, and classes that already exist in Bioconductor infrastrure or could be easily confused
5995

6096
## The NEWS file
6197

62-
- [ ] News file in correct location and format.
98+
- [ ] News file in correct location and format. See https://contributions.bioconductor.org/news.html
6399

64100
## The CITATION file
65101

66-
- [ ] Citation file (if present) in correct format
67-
(`readCitationFile("inst/CITATION")` without error).
68-
69-
## Package data
102+
- [ ] Citation file (if present) in correct format (`readCitationFile("inst/CITATION")` without package being loaded).
70103

71-
- [ ] Included data not too large. Need for separate data package?
72-
- [ ] Exported data and the `data/` directory has correct format, is compressed and documented.
73-
- [ ] Raw data in `inst/extdata/` directory. Small enough to justify inclusion in package?
74-
- [ ] If data downloaded from web: really necessary? `BiocFileCache` used?
104+
## INSTALL file
105+
106+
If applicable:
107+
108+
- [ ] If Requires System Dependencies, indicates installation instructions on all platforms
75109

76110
## Documentation
77111

112+
### Vignette
113+
78114
- [ ] Vignette present and does describe the core functionality of the package.
79-
- [ ] No disabled code blocks present in vignette.
80-
- [ ] Vignette uses `BiocStyle` package for formatting.
81-
- [ ] Vignette has an *Introduction* section. This should include motivation for inclusion to Bioconductor
115+
- [ ] Vignette uses `BiocStyle` package for formatting. Strongly encourage rendering as html (over pdf, etc)
116+
- [ ] Vignette has an *Introduction* section. This should include motivation for inclusion to Bioconductor and review/comparison to other packages with similar functionality or scope
82117
- [ ] Vignette has an *Installation* section.
83118
- [ ] Vignette has a table of contents.
84-
- [ ] When relevant, vignette provides review/comparison to other packages with similar functionality or scope
119+
- [ ] No disabled code blocks present in vignette. If included, should be minimal and justified.
120+
- [ ] Vignette shows interaction with Bioconductor objects or how to integrate into analysis
121+
- [ ] Ensure any hidden code blocks will not affect end user reproducibility running rendered vignette
85122
- [ ] Vignette includes `sessionInfo()`.
86-
- [ ] The `vignettes/` directory contains only vignette file(s) and necessary static images.
123+
- [ ] The `vignettes/` directory contains only vignette file(s) and necessary static images. Rendered products (html, pdf, etc. should not be included)
124+
125+
N.B. Sweave vignettes, while not wrong, are not encouraged. Rmd or Qmd conversion should be
126+
strongly recommended.
127+
128+
129+
### Man Pages
130+
87131
- [ ] All exported functions and classes have a man page.
88-
- [ ] Package man page present.
132+
- [ ] Package level man page present.
89133
- [ ] All man pages have runnable examples.
134+
- [ ] Data man pages should indicate how it was generated and relevant source/licensing if relevant
135+
136+
## Package data
137+
138+
### Included in package
139+
140+
- [ ] Included data not too large. Need for separate data package?
141+
- [ ] Exported data and the `data/` directory has correct format, is compressed and well documented.
142+
- [ ] Raw data in `inst/extdata/` directory. Small enough to justify inclusion in package? Equivalent `inst/script/` file that indicates how it was generated and relevant source and licensing information
143+
144+
### Downloaded from web:
145+
146+
- [ ] really necessary? `BiocFileCache` or other caching mechanism used?
147+
- [ ] check licensing of database or api utilized to ensure open source. This should be well documented in vignette/man pages if different from package license to ensure appropriate usage.
148+
- [ ] data should NOT be hosted at individual locations. Dropbox, Github, Google Drive, etc is not allowed. Recommended hosting location: Zenodo, dryad, Institution server, directly accessed from well established location (ensembl, etc)
90149

91150
## Unit tests
92151

@@ -99,18 +158,24 @@ Refer to the [DESCRIPTION](https://contributions.bioconductor.org/description.ht
99158
- [ ] No warnings or errors in `BiocCheck()`.
100159
- [ ] Coding and syntax:
101160
- `vapply` instead of `sapply`.
161+
- `seq_len` or `seq_along` over `1:n`
102162
- `TRUE`, `FALSE` instead of `T`, `F`.
103163
- numeric indices.
104164
- `is()` instead of `class()`.
105-
- `system2` instead of `system`.
165+
- `system2` instead of `system`. And calls are appropriate and safe.
106166
- no `set.seed()` in any internal code.
107167
- no `browser()` in any internal code.
108168
- no `<<-`.
109169
- no direct slot access with `@` or `slot()` - accessors implemented and used.
110170
- `<-` instead of `=`.
111171
- `dev.new()` instead of `x11`.
112-
- `message()`, `warning`, `stop` instead of `cat`. No `paste0` in these
113-
methods.
172+
- `message()`, `warning`, `stop` instead of `cat`. No `paste0` in these methods.
173+
- check any download/GET/curl calls. Web data should be trusted site NOT github, dropbox, google drive, etc. see data web section
174+
- check any uses of system2 for dangerous calls (rm, unlink, etc)
175+
- check any install calls that they are not evaluated.
176+
- no writing to home directory or any user directory without user knowledge. `tempfile()` as default
177+
- ensure no user setting overwrites (config, set, options, etc) that are not returned to original settings
178+
- remove unused/commented code. Comments should be explanatory only
114179
- [ ] Re-use of classes and functionality (if appropriate).
115180
- [ ] Functional programming: no code repetition.
116181
- [ ] No excessively long functions.
@@ -125,20 +190,33 @@ Refer to the [DESCRIPTION](https://contributions.bioconductor.org/description.ht
125190

126191
## C and Fortran code
127192

193+
- [ ] Recommend using Rcpp
128194
- [ ] Internal functions from R's C library used (e.g. `R_alloc`).
129195
- [ ] C function registration used (See [Registering native routines](https://cran.r-project.org/doc/manuals/R-exts.html#Registering-native-routines)).
130196
- [ ] Checks for user interruption.
131197
- [ ] `Makevars` and `Makefile` within a package.
132198

199+
## Python
200+
201+
- [ ] Make use of basilisk or reticulate to manage python dependencies
202+
133203
## Third-party code
134204

135-
- [ ] Inclusion of third-party code follows the [guideline](https://contributions.bioconductor.org/third-party-code.html).
205+
- [ ] Inclusion of third-party code follows the [guideline](https://contributions.bioconductor.org/other-than-Rcode.html#third-party-code).
206+
- [ ] Ensure licenses permits redistribution
136207

137208
## Shiny apps
138209

139210
- [ ] All relevant R-code is in the main `R/` directory of the package.
140211
- [ ] Core package code **outside** of the Shiny app.
212+
- [ ] Must still include testing
213+
214+
N.B. See https://contributions.bioconductor.org/shiny.html
215+
141216

142217
## Unacceptable files
143218

144-
- [ ] No *unacceptable* files present (see [.gitignore](https://contributions.bioconductor.org/gitignore.html) for a listing).
219+
- [ ] No *unacceptable* files present. (see [.gitignore](https://contributions.bioconductor.org/gitignore.html) for a listing)
220+
221+
222+
## Additional Comments or Concerns:

0 commit comments

Comments
 (0)