Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rix: Reproducible Environments with Nix #625

Closed
12 of 29 tasks
b-rodrigues opened this issue Feb 6, 2024 · 86 comments
Closed
12 of 29 tasks

rix: Reproducible Environments with Nix #625

b-rodrigues opened this issue Feb 6, 2024 · 86 comments

Comments

@b-rodrigues
Copy link

b-rodrigues commented Feb 6, 2024

Date accepted: 2024-09-03
Submitting Author Name: Bruno Rodrigues
Submitting Author Github Handle: @b-rodrigues
Other Package Authors Github handles: @philipp-baumann
Repository: https://github.com/b-rodrigues/rix
Version submitted: 0.60
Submission type: Standard
Editor: @ldecicco-USGS
Reviewers: @wdwatkins, @assignUser

Archive: TBD
Version accepted: TBD
Language: en


  • Paste the full DESCRIPTION file inside a code block below:
Package: rix
Title: Rix: Reproducible Environments with Nix
Version: 0.6.0
Authors@R: c(
    person("Bruno", "Rodrigues", , "bruno@brodrigues.co", role = c("aut", "cre"),
           comment = c(ORCID = "0000-0002-3211-3689")),
    person("Philipp", "Baumann", , "baumann-philipp@protonmail.com", role = "aut",
           comment = c(ORCID = "0000-0002-3194-8975"))
  )
Description: Provides helper functions to create reproducible development
    environments using the Nix package manager.
License: GPL (>= 3)
URL: https://b-rodrigues.github.io/rix/
BugReports: https://github.com/b-rodrigues/rix
Depends: 
    R (>= 2.10)
Imports: 
    codetools,
    httr,
    jsonlite,
    sys,
    utils
Suggests: 
    knitr,
    rmarkdown,
    testthat
VignetteBuilder: 
    knitr
Config/fusen/version: 0.5.2
Config/testthat/edition: 3
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.1

Scope

  • Please indicate which category or categories from our package fit policies this package falls under: (Please check an appropriate box below. If you are unsure, we suggest you make a pre-submission inquiry.):

    • data retrieval
    • data extraction
    • data munging
    • data deposition
    • data validation and testing
    • workflow automation
    • version control
    • citation management and bibliometrics
    • scientific software wrappers
    • field and lab reproducibility tools
    • database software bindings
    • geospatial data
    • text analysis
  • Explain how and why the package falls under these categories (briefly, 1-2 sentences):

The package makes it easy to define default.nix files which can then be use by the Nix package manager to build a reproducible development environment. This is especially useful to make workflows completely reproducible.

  • Who is the target audience and what are scientific applications of this package?

This package will be useful to anyone with very strict reproducibility requirements.

Not quite: to replace what {rix} provides one would need to combine Docker and {renv} or {groundhog}.

Not applicable.

  • If you made a pre-submission inquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted.

#624

@jhollist @mpadge

  • Explain reasons for any pkgcheck items which your package is unable to pass.

We are unable to have the coverage of 75%. This is due to several issues:

  1. Some tests requires Nix to run. For these tests, we have a "skip if nix is not available" test.
  2. Some tests make {covr} completely fail, even if they have the skip_on_covr() function, but on only on GA. On our computers, covr::package_coverage() runs and these tests are successfully skipped.
  3. We have several snapshot tests, and these simply seem to be ignored by covr.

We have 26 tests, which all pass on different configurations: on Ubuntu, macOS and Windows, with or without Nix available (some tests get skipped if Nix is not available) and whether R itself is installed with Nix as well, or not (in other words, through the usual means for the operating system in use).

Because of these issues, our coverage is quite low:

> rix Coverage: 10.87%
R/get_latest.R: 0.00%
R/nix_build.R: 0.00%
R/rix.R: 0.00%
R/tar_nix_ga.R: 0.00%
R/with_nix.R: 0.68%
R/rix_init.R: 2.84%
R/detect_os.R: 28.57%
R/fetchgit.R: 90.00%
R/find_rev.R: 92.31%
R/available_r.R: 100.00%
R/detect_versions.R: 100.00%
R/get_sri_hash_deps.R: 100.00%

but if our snapshot tests (for the functions rix(), and tar_nix_ga()) would not be ignored, and if covr would successfully run the tests for with_nix(), our coverage would be more than 50%, we think. Some functions are very difficult to test, for example get_latest(), which gets the latest commit hash of the nixpkgs github repository.

Technical checks

Confirm each of the following by checking the box.

This package:

Publication options

  • Do you intend for this package to go on CRAN?

  • Do you intend for this package to go on Bioconductor?

  • Do you wish to submit an Applications Article about your package to Methods in Ecology and Evolution? If so:

MEE Options
  • The package is novel and will be of interest to the broad readership of the journal.
  • The manuscript describing the package is no longer than 3000 words.
  • You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see MEE's Policy on Publishing Code)
  • (Scope: Do consider MEE's Aims and Scope for your manuscript. We make no guarantee that your manuscript will be within MEE scope.)
  • (Although not required, we strongly recommend having a full manuscript prepared when you submit here.)
  • (Please do not submit your package separately to Methods in Ecology and Evolution)

Code of conduct

@ropensci-review-bot
Copy link
Collaborator

Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@ropensci-review-bot
Copy link
Collaborator

Checks for rix (v0.6.0)

git hash: e7b673cb

  • ✔️ Package name is available
  • ✔️ has a 'codemeta.json' file.
  • ✔️ has a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✔️ All functions have examples.
  • ✔️ Package has continuous integration checks.
  • ✖️ Package coverage failed
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.

Important: All failing checks above must be addressed prior to proceeding

Package License: GPL (>= 3)


1. Package Dependencies

Details of Package Dependency Usage (click to open)

The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

type package ncalls
internal base 199
internal rix 66
imports codetools 5
imports httr 4
imports utils 3
imports sys 2
imports jsonlite 1
suggests knitr NA
suggests rmarkdown NA
suggests testthat NA
linking_to NA NA

Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

base

lapply (15), Sys.getenv (14), is.null (11), paste0 (9), Filter (8), file.path (7), list (7), names (7), for (6), get (6), grep (6), paste (6), seq_along (6), unlist (6), vapply (6), all (4), c (4), grepl (4), if (4), nzchar (4), args (3), character (3), emptyenv (3), switch (3), any (2), as.list (2), call (2), environmentName (2), getOption (2), gsub (2), is.function (2), new.env (2), setdiff (2), Sys.which (2), url (2), as.character (1), as.name (1), bquote (1), deparse (1), do.call (1), file (1), file.exists (1), formals (1), format (1), identical (1), length (1), logical (1), Map (1), match (1), match.call (1), normalizePath (1), readRDS (1), source (1), split (1), strsplit (1), Sys.info (1), Sys.time (1), system.file (1), tempdir (1), unname (1)

rix

classify_globals (3), deparse_chr1 (3), get_sri_hash_deps (3), detect_versions (2), find_rev (2), get_globals_exprs (2), get_rPackages (2), get_rprofile_text (2), is_nix_rsession (2), is_rstudio_session (2), nix_build_exit_msg (2), set_nix_path (2), where (2), available_r (1), check_expr (1), create_shell_nix (1), detect_os (1), fetchgit (1), fetchgits (1), fetchpkgs (1), fetchzip (1), fetchzips (1), fix_ld_library_path (1), generate_git_archived_packages (1), generate_header (1), generate_locale_archive (1), generate_locale_variables (1), generate_rix_call (1), generate_rpkgs (1), generate_rstudio_pkgs (1), generate_shell (1), generate_system_pkgs (1), generate_tex_pkgs (1), get_expr_extra_pkgs (1), get_latest (1), get_system_pkgs (1), is_empty (1), is_integerish (1), message_rprofile (1), nix_build (1), nix_build_installed (1), nix_rprofile (1), nix_shell_available (1), poll_sys_proc_nonblocking (1), quote_rnix (1), recurse_find_check_globals (1), serialize_globals (1), serialize_pkgs (1), with_assign_vec_call (1), with_assign_vecnames_call (1)

codetools

findGlobals (3), checkUsage (2)

httr

GET (3), content (1)

utils

timestamp (2), packageVersion (1)

sys

exec_status (2)

jsonlite

fromJSON (1)


2. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in R (100% in 14 files) and
  • 2 authors
  • 12 vignettes
  • 1 internal data file
  • 5 imported packages
  • 6 exported functions (median 66 lines of code)
  • 104 non-exported functions in R (median 11 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 14 70.8
files_vignettes 12 99.6
files_tests 18 95.7
loc_R 1250 73.8
loc_vignettes 1689 96.2 TRUE
loc_tests 639 79.6
num_vignettes 12 99.9 TRUE
data_size_total 1318 61.2
data_size_median 1318 65.8
n_fns_r 110 78.8
n_fns_r_exported 6 29.1
n_fns_r_not_exported 104 84.5
n_fns_per_file_r 5 70.1
num_params_per_fn 4 67.3
loc_per_fn_r 12 36.1
loc_per_fn_r_exp 66 85.8
loc_per_fn_r_not_exp 11 35.4
rel_whitespace_R 20 76.4
rel_whitespace_vignettes 29 97.1 TRUE
rel_whitespace_tests 21 78.5
doclines_per_fn_exp 66 77.6
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 79 75.2

2a. Network visualisation

Click to see the interactive network visualisation of calls between objects in package


3. goodpractice and other checks

Details of goodpractice checks (click to open)

3a. Continuous Integration Badges

R-CMD-check.yaml
pkgcheck

GitHub Workflow Results

id name conclusion sha run_number date
7802080928 devtools-tests-via-r-nix success e7b673 69 2024-02-06
7802080935 nix-builder success e7b673 385 2024-02-06
7802119374 pages build and deployment success ef12c6 276 2024-02-06
7802080938 pkgdown success e7b673 532 2024-02-06
7802080934 R-CMD-check success e7b673 528 2024-02-06
7801340546 ropensci-pkgcheck failure 27a828 64 2024-02-06
7802080931 tests-r-via-system success e7b673 66 2024-02-06

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following note:

  1. checking package subdirectories ... NOTE
    Problems with news in ‘NEWS.md’:
    Cannot extract version info from the following section titles:
    rix (development version)

Test coverage with covr

ERROR: Test Coverage Failed

Cyclocomplexity with cyclocomp

The following functions have cyclocomplexity >= 15:

function cyclocomplexity
with_nix 27
rix 22

Static code analyses with lintr

lintr found the following 108 potential issues:

message number of times
Avoid library() and require() calls in packages 19
Lines should not be more than 80 characters. 87
unexpected '/' 1
Use <-, not =, for assignment. 1


Package Versions

package version
pkgstats 0.1.3.9
pkgcheck 0.1.2.14


Editor-in-Chief Instructions:

Processing may not proceed until the items marked with ✖️ have been resolved.

@ldecicco-USGS
Copy link

@ropensci-review-bot assign @ldecicco-USGS as editor

@ropensci-review-bot
Copy link
Collaborator

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@ropensci-review-bot help

@ldecicco-USGS
Copy link

@ropensci-review-bot assign @ldecicco-USGS as editor

@ropensci-review-bot
Copy link
Collaborator

Assigned! @ldecicco-USGS is now the editor

@ldecicco-USGS
Copy link

Editor checks:

  • Documentation: The package has sufficient documentation available online (README, pkgdown docs) to allow for an assessment of functionality and scope without installing the package. In particular,
    • Is the case for the package well made?
    • Is the reference index page clear (grouped by topic if necessary)?
    • Are vignettes readable, sufficiently detailed and not just perfunctory?
  • Fit: The package meets criteria for fit and overlap.
  • Installation instructions: Are installation instructions clear enough for human users?
  • Tests: If the package has some interactivity / HTTP / plot production etc. are the tests using state-of-the-art tooling?
  • Contributing information: Is the documentation for contribution clear enough e.g. tokens for tests, playgrounds?
  • License: The package has a CRAN or OSI accepted license.
  • Project management: Are the issue and PR trackers in a good shape, e.g. are there outstanding bugs, is it clear when feature requests are meant to be tackled?

Editor comments

Looks good! I'll begin searching for editors.

@ldecicco-USGS
Copy link

@ropensci-review-bot seeking reviewers

@ropensci-review-bot
Copy link
Collaborator

Please add this badge to the README of your package repository:

[![Status at rOpenSci Software Peer Review](https://badges.ropensci.org/625_status.svg)](https://github.com/ropensci/software-review/issues/625)

Furthermore, if your package does not have a NEWS.md file yet, please create one to capture the changes made during the review process. See https://devguide.ropensci.org/releasing.html#news

@b-rodrigues
Copy link
Author

b-rodrigues commented Feb 12, 2024

Please add this badge to the README of your package repository:

done with: ropensci/rix@859fd18

@ldecicco-USGS
Copy link

@ropensci-review-bot assign @wdwatkins as reviewer

@ropensci-review-bot
Copy link
Collaborator

@wdwatkins added to the reviewers list. Review due date is 2024-03-06. Thanks @wdwatkins for accepting to review! Please refer to our reviewer guide.

rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.

@ropensci-review-bot
Copy link
Collaborator

@wdwatkins: If you haven't done so, please fill this form for us to update our reviewers records.

@ldecicco-USGS
Copy link

@ropensci-review-bot assign @assignUser as reviewer

@ropensci-review-bot
Copy link
Collaborator

@assignUser added to the reviewers list. Review due date is 2024-03-11. Thanks @assignUser for accepting to review! Please refer to our reviewer guide.

rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.

@ropensci-review-bot
Copy link
Collaborator

@assignUser: If you haven't done so, please fill this form for us to update our reviewers records.

@ropensci-review-bot
Copy link
Collaborator

📆 @wdwatkins you have 2 days left before the due date for your review (2024-03-06).

@wdwatkins
Copy link

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

  • Briefly describe any working relationship you have (had) with the package authors.
  • As the reviewer I confirm that there are no conflicts of interest for me to review this work (if you are unsure whether you are in conflict, please speak to your editor before starting your review).

Documentation

The package includes all the following forms of documentation:

  • A statement of need: clearly stating problems the software is designed to solve and its target audience in README
  • Installation instructions: for the development version of package and any non-standard dependencies in README
  • Vignette(s): demonstrating major functionality that runs successfully locally
  • Function Documentation: for all exported functions
  • Examples: (that run successfully locally) for all exported functions
  • Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with URL, BugReports and Maintainer (which may be autogenerated via Authors@R).

Functionality

  • Installation: Installation succeeds as documented.
  • Functionality: Any functional claims of the software have been confirmed.
  • Performance: Any performance claims of the software have been confirmed.
  • Automated tests: Unit tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine.
  • Packaging guidelines: The package conforms to the rOpenSci packaging guidelines.

Estimated hours spent reviewing:6

  • Should the author(s) deem it appropriate, I agree to be acknowledged as a package reviewer ("rev" role) in the package DESCRIPTION file.

Review Comments

Due to my organization's IT policies, I can only run nix in a Docker container,so all my experimenting with the actual nix libraries is done there. I can use the CLI to interact with nix,though its a bit awkward without other things installed (e.g. R). I was able to generate the default.nix files with rix, then copy them into the container to build them with shell commands.

You may need to update the nix install command at some point, just be aware if that changes

Good selection of vignettes, help files are complete.

I also found your "What is nix" blog post particularly helpful for understanding what was actually happening under the hood. It seems likely to me that a good portion of your users will also be using nix for the first time, so it is worth making sure you explain or link out to explanations of how nix itself works at an intuitive level, in the interest of usability.

From goodpractice results

Is there a reason for using = here R/with_nix.R:564:13?

code comments

I see a couple 'list versions' functions rely on a stored data file. Is there a way to get this information directly from the nix archive so you don't need to keep that up to date?

There are a fair number of internal functions that don't have inputs/outputs documented, I would suggest documenting those for your own/future maintainer's benefit down the road.

Also, several todos still in comments.

test comments

Seems like get_latest.R could be tested at least that it doesn't error and returns a hash,
outside of environments where web service requests would fail?

Re: coverage—just to make sure I understand, the 25% coverage value is ignoring the tests
that actually run nix commands since you would need an environment with nix
installed to run them, which you don't get in CRAN or other non-containerized environments?
It seems like it should be possible to make a Docker container with both R and nix
installed to get a more realistic test environment, but maybe you've done this already.

@ropensci-review-bot
Copy link
Collaborator

📆 @assignUser you have 2 days left before the due date for your review (2024-03-11).

@ropensci-review-bot
Copy link
Collaborator

Checks for rix (v0.9.1)

git hash: 008e3d1a

  • ✔️ Package name is available
  • ✔️ has a 'codemeta.json' file.
  • ✔️ has a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✔️ All functions have examples.
  • ✔️ Package has continuous integration checks.
  • ✖️ Package coverage failed
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.

Important: All failing checks above must be addressed prior to proceeding

Package License: GPL (>= 3)


1. Package Dependencies

Details of Package Dependency Usage (click to open)

The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

type package ncalls
internal base 281
internal rix 91
internal tools 2
internal stats 1
imports curl 11
imports sys 7
imports codetools 4
imports utils 3
imports jsonlite 2
suggests knitr NA
suggests rmarkdown NA
suggests testthat NA
linking_to NA NA

Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

base

c (22), paste (16), Sys.getenv (16), lapply (14), paste0 (13), Filter (12), is.null (11), file.path (10), grepl (9), unlist (9), url (9), grep (8), list (8), args (7), if (7), names (7), for (6), get (6), nzchar (6), seq_along (6), all (5), vapply (5), file (3), getOption (3), split (3), strsplit (3), any (2), as.list (2), call (2), character (2), file.exists (2), gsub (2), is.function (2), list.files (2), rawToChar (2), source (2), Sys.info (2), Sys.which (2), system.file (2), tempdir (2), unname (2), as.character (1), as.data.frame (1), as.name (1), bquote (1), colnames (1), deparse (1), do.call (1), drop (1), emptyenv (1), environmentName (1), formals (1), format (1), identical (1), intersect (1), isFALSE (1), length (1), logical (1), Map (1), match (1), match.call (1), normalizePath (1), read.dcf (1), readRDS (1), setdiff (1), switch (1), Sys.time (1), trimws (1)

rix

classify_globals (3), deparse_chr1 (3), get_imports (3), get_sri_hash_deps (3), hash_url (3), is_nix_r_session (3), is_rstudio_session (3), nix_shell_available (3), available_r (2), detect_versions (2), get_globals_exprs (2), get_latest (2), get_rpkgs (2), get_rprofile_text (2), get_sri_hash_option (2), make_nixpkgs_url (2), nix_build_exit_msg (2), nix_build_installed (2), set_nix_path (2), try_get_request (2), with_assign_vecnames_call (2), detect_os (1), fetchgit (1), fetchgits (1), fetchlocal (1), fetchlocals (1), fetchpkgs (1), fetchzip (1), fetchzips (1), fix_ld_library_path (1), ga_cachix (1), generate_git_archived_pkgs (1), generate_header (1), generate_local_r_pkgs (1), generate_locale_archive (1), generate_locale_variables (1), generate_rix_call (1), generate_rpkgs (1), generate_shell (1), generate_system_pkgs (1), generate_tex_pkgs (1), generate_wrapped_pkgs (1), get_right_commit (1), get_system_pkgs (1), hash_cran (1), hash_git (1), install.packages (1), is_empty (1), is_integerish (1), message_r_session_nix_rstudio (1), message_rprofile (1), nix_build (1), nix_hash (1), nix_rprofile (1), nix_sri_hash (1), poll_sys_proc_blocking (1), quote_rnix (1), recurse_find_check_globals (1), serialize_globals (1), serialize_pkgs (1), where (1), with_assign_vec_call (1)

curl

new_handle (7), curl_fetch_disk (2), curl_fetch_memory (1), has_internet (1)

sys

exec_background (3), exec_status (2), as_text (1), exec_internal (1)

codetools

findGlobals (3), checkUsage (1)

utils

timestamp (2), packageVersion (1)

jsonlite

fromJSON (2)

tools

pskill (2)

stats

na.omit (1)


2. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in R (100% in 18 files) and
  • 2 authors
  • 15 vignettes
  • no internal data file
  • 5 imported packages
  • 6 exported functions (median 72 lines of code)
  • 148 non-exported functions in R (median 13 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 18 76.7
files_vignettes 15 99.7
files_tests 23 95.9
loc_R 1867 80.7
loc_vignettes 2656 98.3 TRUE
loc_tests 1362 88.1
num_vignettes 15 99.9 TRUE
n_fns_r 154 84.0
n_fns_r_exported 6 30.0
n_fns_r_not_exported 148 88.5
n_fns_per_file_r 5 69.4
num_params_per_fn 3 29.2
loc_per_fn_r 13 40.2
loc_per_fn_r_exp 72 87.6
loc_per_fn_r_not_exp 13 43.4
rel_whitespace_R 17 79.5
rel_whitespace_vignettes 26 98.2 TRUE
rel_whitespace_tests 18 86.1
doclines_per_fn_exp 72 80.8
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 107 79.2

2a. Network visualisation

Click to see the interactive network visualisation of calls between objects in package


3. goodpractice and other checks

Details of goodpractice checks (click to open)

3a. Continuous Integration Badges

rhub.yaml](https://github.com/b-rodrigues/rix/actions)

GitHub Workflow Results

id name conclusion sha run_number date
10318993653 create_inst_default.nix success 008e3d 73 2024-08-09
10318993655 devtools-tests-via-r-nix success 008e3d 499 2024-08-09
10318993658 lint success 008e3d 36 2024-08-09
10318993665 nix-builder success 008e3d 819 2024-08-09
10319025028 pages build and deployment success c36f3b 472 2024-08-09
10318993666 pkgdown success 008e3d 966 2024-08-09
10319019373 pseudodramatic-boa: linux, macos, macos-arm64, windows, ubuntu-next, ubuntu-release success 008e3d 66 2024-08-09
10318993855 run-rhub-checks success 008e3d 74 2024-08-09
10318993669 styler success 008e3d 32 2024-08-09
10318993654 test-fetchlocal success 008e3d 258 2024-08-09
10551547337 Update cachix cache for development environment success 008e3d 375 2024-08-26

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following note:

  1. checking package subdirectories ... NOTE
    Problems with news in ‘NEWS.md’:
    Cannot extract version info from the following section titles:
    rix (development version)

R CMD check generated the following check_fail:

  1. cyclocomp

Test coverage with covr

ERROR: Test Coverage Failed

Cyclocomplexity with cyclocomp

The following functions have cyclocomplexity >= 15:

function cyclocomplexity
rix 56
with_nix 30
quote_rnix 15

Static code analyses with lintr

lintr found the following 121 potential issues:

message number of times
Avoid library() and require() calls in packages 27
Lines should not be more than 80 characters. This line is 100 characters. 5
Lines should not be more than 80 characters. This line is 101 characters. 1
Lines should not be more than 80 characters. This line is 102 characters. 2
Lines should not be more than 80 characters. This line is 105 characters. 1
Lines should not be more than 80 characters. This line is 1056 characters. 1
Lines should not be more than 80 characters. This line is 106 characters. 2
Lines should not be more than 80 characters. This line is 107 characters. 2
Lines should not be more than 80 characters. This line is 108 characters. 1
Lines should not be more than 80 characters. This line is 112 characters. 2
Lines should not be more than 80 characters. This line is 118 characters. 6
Lines should not be more than 80 characters. This line is 121 characters. 2
Lines should not be more than 80 characters. This line is 1229 characters. 1
Lines should not be more than 80 characters. This line is 125 characters. 2
Lines should not be more than 80 characters. This line is 126 characters. 1
Lines should not be more than 80 characters. This line is 127 characters. 4
Lines should not be more than 80 characters. This line is 129 characters. 1
Lines should not be more than 80 characters. This line is 131 characters. 2
Lines should not be more than 80 characters. This line is 135 characters. 1
Lines should not be more than 80 characters. This line is 136 characters. 1
Lines should not be more than 80 characters. This line is 138 characters. 3
Lines should not be more than 80 characters. This line is 143 characters. 1
Lines should not be more than 80 characters. This line is 160 characters. 1
Lines should not be more than 80 characters. This line is 163 characters. 1
Lines should not be more than 80 characters. This line is 179 characters. 1
Lines should not be more than 80 characters. This line is 185 characters. 1
Lines should not be more than 80 characters. This line is 194 characters. 1
Lines should not be more than 80 characters. This line is 2280 characters. 1
Lines should not be more than 80 characters. This line is 312 characters. 1
Lines should not be more than 80 characters. This line is 325 characters. 1
Lines should not be more than 80 characters. This line is 482 characters. 1
Lines should not be more than 80 characters. This line is 570 characters. 1
Lines should not be more than 80 characters. This line is 81 characters. 2
Lines should not be more than 80 characters. This line is 82 characters. 5
Lines should not be more than 80 characters. This line is 83 characters. 3
Lines should not be more than 80 characters. This line is 84 characters. 2
Lines should not be more than 80 characters. This line is 85 characters. 4
Lines should not be more than 80 characters. This line is 86 characters. 3
Lines should not be more than 80 characters. This line is 87 characters. 5
Lines should not be more than 80 characters. This line is 88 characters. 3
Lines should not be more than 80 characters. This line is 89 characters. 3
Lines should not be more than 80 characters. This line is 91 characters. 4
Lines should not be more than 80 characters. This line is 92 characters. 1
Lines should not be more than 80 characters. This line is 93 characters. 1
Lines should not be more than 80 characters. This line is 94 characters. 1
Lines should not be more than 80 characters. This line is 96 characters. 2
Lines should not be more than 80 characters. This line is 98 characters. 3


Package Versions

package version
pkgstats 0.1.6.17
pkgcheck 0.1.2.55


Editor-in-Chief Instructions:

Processing may not proceed until the items marked with ✖️ have been resolved.

@assignUser
Copy link

assignUser commented Aug 26, 2024

Reviewer Response

I re-ran pkgcheck on the most recent version as there were considerable changes but looks good (ignoring ❌ in coverage due to known issue).

Neat new functionality with the hook into cachix, sounds like a low effort way to setup a private cache (and basically free for OSS! 🎉). Overall very nice improvements and additions to the vignettes and documentation!

I have actually used rix in production to create a nix env for rendering a quarto report in gha, which has been running everyday for several months now!

Final approval (post-review)

  • **The author has responded to my review and made changes to my satisfaction. I recommend approving this package. (v0.9.1) **

Estimated hours spent reviewing: 9

@b-rodrigues
Copy link
Author

Thank you very much for the review!

@ldecicco-USGS
Copy link

@ropensci-review-bot submit review #625 (comment) time 10

@ropensci-review-bot
Copy link
Collaborator

Logged review for assignUser (hours: 10)

@ldecicco-USGS
Copy link

@ropensci-review-bot submit review #625 (comment) time 6

@ropensci-review-bot
Copy link
Collaborator

Logged review for wdwatkins (hours: 6)

@ldecicco-USGS
Copy link

@ropensci-review-bot submit response #625 (comment) time 6

@ropensci-review-bot
Copy link
Collaborator

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@ropensci-review-bot help

@ldecicco-USGS
Copy link

@ropensci-review-bot approve rix

@ropensci-review-bot
Copy link
Collaborator

Approved! Thanks @b-rodrigues for submitting and @wdwatkins, @assignUser for your reviews! 😁

To-dos:

  • Transfer the repo to rOpenSci's "ropensci" GitHub organization under "Settings" in your repo. I have invited you to a team that should allow you to do so. You will need to enable two-factor authentication for your GitHub account.
    This invitation will expire after one week. If it happens write a comment @ropensci-review-bot invite me to ropensci/<package-name> which will re-send an invitation.
  • After transfer write a comment @ropensci-review-bot finalize transfer of <package-name> where <package-name> is the repo/package name. This will give you admin access back.
  • Fix all links to the GitHub repo to point to the repo under the ropensci organization.
  • Delete your current code of conduct file if you had one since rOpenSci's default one will apply, see https://devguide.ropensci.org/collaboration.html#coc-file
  • If you already had a pkgdown website and are ok relying only on rOpenSci central docs building and branding,
    • deactivate the automatic deployment you might have set up
    • remove styling tweaks from your pkgdown config but keep that config file
    • replace the whole current pkgdown website with a redirecting page
    • replace your package docs URL with https://docs.ropensci.org/package_name
    • In addition, in your DESCRIPTION file, include the docs link in the URL field alongside the link to the GitHub repository, e.g.: URL: https://docs.ropensci.org/foobar, https://github.com/ropensci/foobar
  • Skim the docs of the pkgdown automatic deployment, in particular if your website needs MathJax.
  • Fix any links in badges for CI and coverage to point to the new repository URL.
  • Increment the package version to reflect the changes you made during review. In NEWS.md, add a heading for the new version and one bullet for each user-facing change, and each developer-facing change that you think is relevant.
  • We're starting to roll out software metadata files to all rOpenSci packages via the Codemeta initiative, see https://docs.ropensci.org/codemetar/ for how to include it in your package, after installing the package - should be easy as running codemetar::write_codemeta() in the root of your package.
  • You can add this installation method to your package README install.packages("<package-name>", repos = "https://ropensci.r-universe.dev") thanks to R-universe.

Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"-type contributors in the Authors@R field (with their consent).

Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. They will get in touch about timing and can answer any questions.

We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.

Last but not least, you can volunteer as a reviewer via filling a short form.

@ldecicco-USGS
Copy link

Whoo hoo! Thanks everyone for a great and thorough job! @b-rodrigues and @philipp-baumann - really well done work! @wdwatkins and @assignUser thanks for the fantastic feedback!

@b-rodrigues
Copy link
Author

🙏🙏

thank you all !

little heads-up I am currently on holidays with no access to a pc, so I'll be only able to finalize in mid September

@philipp-baumann
Copy link

Whoo hoo! Thanks everyone for a great and thorough job! @b-rodrigues and @philipp-baumann - really well done work! @wdwatkins and @assignUser thanks for the fantastic feedback!

Thanks very much for your excellent reviews! It was a really constructive process 🙏 {rix} has become mature and I'm really happy it is being sheltered under the ROpenSci umbrella.

@b-rodrigues
Copy link
Author

@wdwatkins and @assignUser would you be OK if we add you as reviewers in the package's DESCRIPTION ?

@assignUser
Copy link

Sure!

@b-rodrigues
Copy link
Author

@ropensci-review-bot finalize transfer of rix

@ropensci-review-bot
Copy link
Collaborator

Transfer completed.
The rix team is now owner of the repository and the author has been invited to the team

@b-rodrigues
Copy link
Author

Hi @ldecicco-USGS I'd need some guidance regarding the pkgdown website. We currently have the website up at https://ropensci.github.io/rix/

So from my understanding, all we need to do is remove the github action pkgdown that builds and deploys the website, and change every instance of ropensci.github.io with the string docs.ropensci.org, right? That point about redirecting is not needed, since the repo has been transferred to the ropensci organization, or?

@ldecicco-USGS
Copy link

That sounds right to me, but I'll ask around to see if we're missing anything.

@philipp-baumann
Copy link

Hi @ldecicco-USGS . While testing a pre-commit-lite ci hook for styling ( ropensci/rix#295 ) we realized that I could not add the integration ( https://results.pre-commit.ci/ ). Could @ropensci-review-bot give me admin rights on the repo too? Thanks

@ldecicco-USGS
Copy link

@philipp-baumann - you should have an invitation to the rOpenSci slack channel to discuss adding pre-commit. One quote cracked me up: "I'm always happy to opine on precommit!"

@maelle
Copy link
Member

maelle commented Sep 13, 2024

The invitation to the Slack workspace should come soon cc @yabellini (invitations happen weekly)

@maelle
Copy link
Member

maelle commented Sep 13, 2024

@philipp-baumann I have sent you an invitation to the rOpenSci organization and a team with admin access to the repository (together with @b-rodrigues). I have removed the personal write access both of you had, but you get more access via the team.

@b-rodrigues
Copy link
Author

@philipp-baumann I have sent you an invitation to the rOpenSci organization and a team with admin access to the repository (together with @b-rodrigues). I have removed the personal write access both of you had, but you get more access via the team.

sweet!

@b-rodrigues
Copy link
Author

That sounds right to me, but I'll ask around to see if we're missing anything.

I see that the webpage is up already: https://docs.ropensci.org/rix/

so I guess it happens automatically 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants