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

fireexposuR: Compute and Visualize Wildfire Exposure #659

Open
12 of 29 tasks
heyairf opened this issue Sep 25, 2024 · 68 comments
Open
12 of 29 tasks

fireexposuR: Compute and Visualize Wildfire Exposure #659

heyairf opened this issue Sep 25, 2024 · 68 comments

Comments

@heyairf
Copy link

heyairf commented Sep 25, 2024

Submitting Author Name: Air Forbes
Submitting Author Github Handle: @heyairf
Repository: https://github.com/heyairf/fireexposuR
Version submitted: 1.0.0
Submission type: Standard
Editor: @maurolepore
Reviewers: @ronnyhdez, @huizezhang-sherry

Archive: TBD
Version accepted: TBD
Language: en


  • Paste the full DESCRIPTION file inside a code block below:
Type: Package
Package: fireexposuR
Title: Compute and Visualize Wildfire Exposure
Version: 1.0.0
Authors@R: c(person("Air", "Forbes", email = "[email protected]", 
    role = c("aut", "cre"), comment = c(ORCID = "0000-0002-9842-7648")),
    person("Jennifer", "Beverly", role = "aut"))
Description: This package computes wildfire exposure using methods from
    Beverly et al. (2010), Beverly et al. (2021), and Beverly and Forbes
    (2023).  It provides functions to standardize the mapping and
    visualization of wildfire exposure. This package requires
    pre-processing of data which is docomented in Forbes and Beverly
    (in preparation).
License: GPL (>= 3)
Imports: 
    dplyr,
    geosphere,
    ggplot2,
    ggspatial,
    magrittr,
    maptiles,
    MultiscaleDTM,
    rlang,
    terra,
    tidyr,
    tidyselect,
    tidyterra
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.3.2
Roxygen: list(markdown = TRUE)
URL: https://github.com/heyairf/fireexposuR
BugReports: https://github.com/heyairf/fireexposuR/issues
Suggests: 
    knitr,
    rmarkdown,
    testthat (>= 3.0.0)
Config/testthat/edition: 3
Depends: 
    R (>= 2.10)
VignetteBuilder:
    knitr

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):

This package was developed to share methodologies from existing research by modifying/expanding existing functions. The functions automate and standardize assessments to increase access and quality assurance in the calculation for interested users.

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

Users interested in wildfire risk assessments including but not limited to researchers, consultants, planners, land use decision makers.

There are no other R packages that fill this role.

n/a

  • 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.

#652

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

all pkgcheck's are currently passing

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 fireexposuR (v1.0.0)

git hash: aacfb397

  • ✔️ 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 is 93.9%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.
  • 👀 Function names are duplicated in other packages

(Checks marked with 👀 may be optionally addressed.)

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 147
internal fireexposuR 14
internal grid 12
internal stats 10
internal utils 6
internal graphics 4
internal grDevices 2
imports magrittr 95
imports dplyr 49
imports ggplot2 49
imports terra 45
imports tidyterra 15
imports geosphere 8
imports maptiles 6
imports ggspatial 4
imports tidyr 3
imports MultiscaleDTM 2
imports rlang NA
imports tidyselect NA
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 (27), exp (19), sum (11), cbind (9), data.frame (9), as.data.frame (8), paste (6), ifelse (5), by (4), levels (4), matrix (4), ncol (4), all (3), factor (3), labels (3), rep (3), seq (3), class (2), match (2), names (2), round (2), unique (2), as.factor (1), for (1), if (1), length (1), max (1), mean (1), missing (1), outer (1), plot (1), rbind (1), scale (1), table (1)

magrittr

%>% (95)

dplyr

mutate (43), count (4), case_when (1), summarise (1)

ggplot2

element_blank (9), ggplot (7), aes (6), element_text (5), coord_sf (4), geom_col (3), labs (3), element_rect (2), expansion (2), scale_fill_manual (2), geom_bar (1), geom_hline (1), geom_vline (1), scale_x_discrete (1), scale_y_continuous (1), theme (1)

terra

classify (7), crop (6), focal (4), mask (4), project (4), vect (4), extract (3), res (3), rescale (3), spatSample (2), as.polygons (1), buffer (1), crs (1), merge (1), perim (1)

tidyterra

geom_spatraster_rgb (6), geom_spatvector (3), rename (2), filter (1), geom_spatraster (1), scale_fill_whitebox_c (1), whitebox.colors (1)

fireexposuR

exposure (7), direxp (2), adjustexp (1), extractexp (1), mapexpclass (1), mapexpcont (1), multidirexp (1)

grid

unit (12)

stats

window (6), df (4)

geosphere

destPoint (8)

maptiles

get_credit (3), get_tiles (3)

utils

data (6)

ggspatial

annotation_scale (4)

graphics

title (4)

tidyr

pivot_wider (2), pivot_longer (1)

grDevices

palette (2)

MultiscaleDTM

annulus_window (2)

NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


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 11 files) and
  • 2 authors
  • 1 vignette
  • no internal data file
  • 12 imported packages
  • 9 exported functions (median 52 lines of code)
  • 9 non-exported functions in R (median 76 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 11 60.1
files_vignettes 1 62.0
files_tests 10 87.6
loc_R 808 59.6
loc_vignettes 114 28.0
loc_tests 289 60.1
num_vignettes 1 59.0
n_fns_r 18 25.4
n_fns_r_exported 9 42.3
n_fns_r_not_exported 9 20.6
n_fns_per_file_r 1 1.9 TRUE
num_params_per_fn 4 51.1
loc_per_fn_r 60 92.4
loc_per_fn_r_exp 52 80.4
loc_per_fn_r_not_exp 76 95.3 TRUE
rel_whitespace_R 11 47.2
rel_whitespace_vignettes 32 25.7
rel_whitespace_tests 20 58.5
doclines_per_fn_exp 50 62.7
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 1 11.5

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

GitHub Workflow Results

id name conclusion sha run_number date
11037129203 pkgcheck success aacfb3 7 2024-09-25
11037129172 R-CMD-check.yaml success aacfb3 7 2024-09-25

3b. goodpractice results

R CMD check with rcmdcheck

rcmdcheck found no errors, warnings, or notes

Test coverage with covr

Package coverage: 93.87

Cyclocomplexity with cyclocomp

The following function have cyclocomplexity >= 15:

function cyclocomplexity
extractexp 17

Static code analyses with lintr

lintr found the following 10 potential issues:

message number of times
Avoid 1:length(...) expressions, use seq_len. 1
Avoid library() and require() calls in packages 3
Lines should not be more than 80 characters. This line is 83 characters. 4
Lines should not be more than 80 characters. This line is 84 characters. 1
Lines should not be more than 80 characters. This line is 85 characters. 1


4. Other Checks

Details of other checks (click to open)

✖️ The following function name is duplicated in other packages:

    • exposure from mds, mlxR, netdiffuseR, RsSimulx


Package Versions

package version
pkgstats 0.1.6.17
pkgcheck 0.1.2.58


Editor-in-Chief Instructions:

This package is in top shape and may be passed on to a handling editor

@adamhsparks
Copy link
Member

@ropensci-review-bot check package

@ropensci-review-bot
Copy link
Collaborator

Thanks, about to send the query.

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@ropensci-review-bot
Copy link
Collaborator

Checks for fireexposuR (v1.0.0)

git hash: aacfb397

  • ✔️ 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 is 93.9%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.
  • 👀 Function names are duplicated in other packages

(Checks marked with 👀 may be optionally addressed.)

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 147
internal fireexposuR 14
internal grid 12
internal stats 10
internal utils 6
internal graphics 4
internal grDevices 2
imports magrittr 95
imports dplyr 49
imports ggplot2 49
imports terra 45
imports tidyterra 15
imports geosphere 8
imports maptiles 6
imports ggspatial 4
imports tidyr 3
imports MultiscaleDTM 2
imports rlang NA
imports tidyselect NA
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 (27), exp (19), sum (11), cbind (9), data.frame (9), as.data.frame (8), paste (6), ifelse (5), by (4), levels (4), matrix (4), ncol (4), all (3), factor (3), labels (3), rep (3), seq (3), class (2), match (2), names (2), round (2), unique (2), as.factor (1), for (1), if (1), length (1), max (1), mean (1), missing (1), outer (1), plot (1), rbind (1), scale (1), table (1)

magrittr

%>% (95)

dplyr

mutate (43), count (4), case_when (1), summarise (1)

ggplot2

element_blank (9), ggplot (7), aes (6), element_text (5), coord_sf (4), geom_col (3), labs (3), element_rect (2), expansion (2), scale_fill_manual (2), geom_bar (1), geom_hline (1), geom_vline (1), scale_x_discrete (1), scale_y_continuous (1), theme (1)

terra

classify (7), crop (6), focal (4), mask (4), project (4), vect (4), extract (3), res (3), rescale (3), spatSample (2), as.polygons (1), buffer (1), crs (1), merge (1), perim (1)

tidyterra

geom_spatraster_rgb (6), geom_spatvector (3), rename (2), filter (1), geom_spatraster (1), scale_fill_whitebox_c (1), whitebox.colors (1)

fireexposuR

exposure (7), direxp (2), adjustexp (1), extractexp (1), mapexpclass (1), mapexpcont (1), multidirexp (1)

grid

unit (12)

stats

window (6), df (4)

geosphere

destPoint (8)

maptiles

get_credit (3), get_tiles (3)

utils

data (6)

ggspatial

annotation_scale (4)

graphics

title (4)

tidyr

pivot_wider (2), pivot_longer (1)

grDevices

palette (2)

MultiscaleDTM

annulus_window (2)

NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


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 11 files) and
  • 2 authors
  • 1 vignette
  • no internal data file
  • 12 imported packages
  • 9 exported functions (median 52 lines of code)
  • 9 non-exported functions in R (median 76 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 11 60.1
files_vignettes 1 62.0
files_tests 10 87.6
loc_R 808 59.6
loc_vignettes 114 28.0
loc_tests 289 60.1
num_vignettes 1 59.0
n_fns_r 18 25.4
n_fns_r_exported 9 42.3
n_fns_r_not_exported 9 20.6
n_fns_per_file_r 1 1.9 TRUE
num_params_per_fn 4 51.1
loc_per_fn_r 60 92.4
loc_per_fn_r_exp 52 80.4
loc_per_fn_r_not_exp 76 95.3 TRUE
rel_whitespace_R 11 47.2
rel_whitespace_vignettes 32 25.7
rel_whitespace_tests 20 58.5
doclines_per_fn_exp 50 62.7
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 1 11.5

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

GitHub Workflow Results

id name conclusion sha run_number date
11037129203 pkgcheck success aacfb3 7 2024-09-25
11037129172 R-CMD-check.yaml success aacfb3 7 2024-09-25

3b. goodpractice results

R CMD check with rcmdcheck

rcmdcheck found no errors, warnings, or notes

Test coverage with covr

Package coverage: 93.87

Cyclocomplexity with cyclocomp

The following function have cyclocomplexity >= 15:

function cyclocomplexity
extractexp 17

Static code analyses with lintr

lintr found the following 10 potential issues:

message number of times
Avoid 1:length(...) expressions, use seq_len. 1
Avoid library() and require() calls in packages 3
Lines should not be more than 80 characters. This line is 83 characters. 4
Lines should not be more than 80 characters. This line is 84 characters. 1
Lines should not be more than 80 characters. This line is 85 characters. 1


4. Other Checks

Details of other checks (click to open)

✖️ The following function name is duplicated in other packages:

    • exposure from mds, mlxR, netdiffuseR, RsSimulx


Package Versions

package version
pkgstats 0.1.6.17
pkgcheck 0.1.2.58


Editor-in-Chief Instructions:

This package is in top shape and may be passed on to a handling editor

@adamhsparks
Copy link
Member

Hi @heyairf, local checks indicate that you may not be properly ignoring the codemeta.json file in .Rbuildignore. Can you check on that for me, please?

@heyairf
Copy link
Author

heyairf commented Sep 26, 2024

Hi @adamhsparks , I think that is now fixed?

Edit: Nevermind. Standby.

@heyairf
Copy link
Author

heyairf commented Sep 27, 2024

Thank you! I am still learning a lot about R and github.

@adamhsparks
Copy link
Member

@ropensci-review-bot assign @maurolepore as reviewer

@ropensci-review-bot
Copy link
Collaborator

Can't assign reviewer because there is no editor assigned for this submission yet

@adamhsparks
Copy link
Member

@ropensci-review-bot assign @maurolepore as editor

@ropensci-review-bot
Copy link
Collaborator

Assigned! @maurolepore is now the editor

@maurolepore
Copy link
Member

maurolepore commented Oct 1, 2024

Hi @heyairf, thanks a lot for your submission. It's my pleasure to be the handling editor.

Semantic tags for my comments

To help you track my comments I'll tag them with "ml" and a numbered sequence, e.g. ml01, ml02, and so on. Comments following bullets are for you to consider -- you may or may not respond to them. Comments following check-boxes are requests for some action -- please respond.

Reviewers

  • ml01. Can you please suggest three reviewers? Following our guidelines I may appoint at most one; the other two will help me better understand the type of expertise you value.

Editor checks

I'll post my checks in a few days. I already explored the package and looks in good shape. I appreciate your kindness in sharing your work with the rOpenSci community, and your willingness to learn a bit more about R package development. In that spirit I'll share a number of suggestions to make the reviews as smooth as possible.

@heyairf
Copy link
Author

heyairf commented Oct 1, 2024

Hi @maurolepore,
I am very much looking forward to the review process and opportunity to learn. Please note that the world of R package development is very new to me so my reviewer suggestions will reflect that. The following suggestions are people that participate in wildfire research projects, are proficient in R, and are, at varying levels, familiar with the methods that are in this package.

@maurolepore
Copy link
Member

maurolepore commented Oct 7, 2024

Hi @heyairf sorry for the delay. I'm close to finishing polishing the notes from my checks. I expect to finish it by Wed-Thu at the latest.

@maurolepore
Copy link
Member

maurolepore commented Oct 10, 2024

Dear @heyairf,

Once again, thank for sharing your great work with the rOpenSci community.

Here are my checks and comments (based on the editor's template). Remember the items in bullets are just for your consideration, and the check-boxes require some action (sometimes just an explanation). The more items you can address before review the better. It will reduce the chance that reviewers will pick up in these relatively uninteresting structural issues and free them to focus on the more interesting aspects of the package.

Please feel free to ask for clarifications or help. If I don't hear from you before, I'll touch base in a couple of weeks.

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

Documentation
  • ml01. The case for the package is made -- it provides an implementation in R of the methods described in three papers by Beverly et al. Consider giving a short description of each paper to help the users find the relevant one. For example, this clause leaves me wondering which paper explains how to prepare the data:

"an accompanying paper details suggestions for data acquisition and preparation in accordance with various budget limitations and user experience levels."

  • ml02. Please add a website for the package.

We recommend creating a documentation website for your package using pkgdown.
-- https://devdevguide.netlify.app/pkg_building.html#website

It sounds hard but all you need to do is to run usethis::use_pkgdown_github_pages() on the console:

use_pkgdown_github_pages(): implements the GitHub setup needed to automatically publish your pkgdown site to GitHub pages:
-- https://usethis.r-lib.org/reference/use_pkgdown.html

This allows "for an assessment of functionality and scope without installing the package", which should help the reviewers and users.

  • ml03. The reference index (the list of all the exported functions and datasets of the package) can be made a little clearer by grouping functions. This package doesn't have many functions but it's still something to consider.

When your package has many functions, use grouping in the reference, which you can do more or less automatically.
https://devdevguide.netlify.app/pkg_building.html#function-grouping

More importantly, it would be nice to use references to "exposure" consistently in the names of the functions. Right now I see three ways to refer to exposure:

  1. In full: exposure
  2. As a suffix: adjustexp
  3. In the middle: mapexpclass

Consider using a prefix rather than the alternatives. That way users can type the prefix and see all related functions thanks to auto-complete.

Also "We strongly recommend snake_case over all other styles unless you are porting over a package that is already in wide use". For example, adjust_exp() (or better even exp_adjust()) instead of adjustexp() (or expadjust()).

See Function and argument naming at https://devdevguide.netlify.app/pkg_building.html#function-and-argument-naming

  • ml04. Can you please explain if you tried to include the example data in the package? I see some example data is created from scratch in README, in the vignette, and in many examples and tests (see also ml08). This is hard to maintain. If you later decide to use a different type of example data, doing that consistently would require changes in many places. I think somewhere you suggested the example data was too large to host in the package? This is something worth thinking about, since smaller test data correlates with more frequent testing and fewer bugs. Please explain your challenge and I'm more than happy to try help you find a solution.
Fit and overlap
  • ml05. At fireexposuR: Compute and Visualize Wildfire Exposure #659 I see: "This package was developed to share methodologies from existing research by modifying/expanding existing functions". Can you please explain where those existing functions live? I'd like to better understand the potential for overlap with some other package.
Tests

The tests could improve in a number of ways. I don't have first-had experience testing specifically spatial data so I'll try to find a reviewer who has (thanks for being proactive in https://discuss.ropensci.org/t/s4-data-for-testthat-and-examples/4007/5). For now I'll share some feedback that applies to tests in general.

  • ml06. Please try to make each test run in under a second and let me know what challenges you face. Sometimes it's a matter of figuring out how to create a tiny toy dataset that allow you to test the properties you care about. For example, if you only care about the class of the output, the specific values of the output are irrelevant. This means that the test data can be unrealistically small AND useful, so you get useful and fast tests.

These two test-files are the slowest:

✔ |         20 | direxp [18.0s] 
✔ |          7 | multidirexp [87.1s]  

If you trully can't make tests run faster, then you may move them to a dedicated folder e.g. tests/testthat/slow and run those tests less frequently than every other test -- with testthat::test_dir("tests/testthat/slow") (or testthat::test_dir(testthat::test_path("slow"))).

References: https://testthat.r-lib.org/reference/test_dir.html and https://testthat.r-lib.org/reference/test_path.html

  • ml07. In tests, try to find ways to run verbose functions in quiet mode -- unless the verbose output IS what you want to test (e.g. expect_warning()), but in those cases the expectations typically swallow the verbose output so that the test-report remains decluttered.

Here are the verbose functions and the output I see clutering the test-report:

adjustexp: 
Proceed with caution: any adjustments to transmission distances should be further validated with observed fire history

direxp: 
<SpatRaster> resampled to 500554 cells.
Value object provided has more than one feature, only the first point or polygon will be used.

mapexpcont:
<SpatRaster> resampled to 501264 cells.

See https://ropensci.org/blog/2024/02/06/verbosity-control-packages/

  • ml08. (Overlaps with ml04 but may come with it's own challenges) Please see if there is a way to deduplicate the generation of test data. This will make it easier to maintain the package. If the tst data is useful to users, then see if you can provide it with the package or via a separate data-package. If it's not useful for users, then you may create test data in some other Files relevant to testing e.g. (tests/testthat/setup.R). It can be hard to get your head around all these options. Have a look and let me know. I'm happy to help.

Specifially, I see this code-chunk multiple times:

# test data ====================================================================
set.seed(0)
e <- c(45,55,495,505) * 10000
r <- terra::rast(resolution = 100, extent = terra::ext(e))
terra::values(r) <- sample(c(0,1), terra::ncell(r), replace = TRUE)
r <- terra::sieve(r, threshold = 50, directions = 4)
haz <- terra::sieve(r, threshold = 500, directions = 4)
  • ml09. Please try to be specific about the type of errors you expect, e.g. expect_error(f(), "calculation failed") is better than expect_error(f()).

Here is one example from the package:

  expect_error(direxp(2, pt))

Note that the second argument to expect_error() is a regular expression — the goal is to find a short fragment of text that matches the error you expect and is unlikely to match errors that you don’t expect.
-- https://mastering-shiny.org/scaling-testing.html?q=expect_error#key-expectations

  • ml10. Suggestions based on the code chunk below:
    • It's best to be specific, and use expect_message(), expect_warning() rather than the catch-all `expect_condition().
    • It's best to use the regexp argument to ensure you get the specific contition you want to test.
    • The last empty call to expect_condition() seems like a mistake?
test_that("mapexpclass() input checks and function messages work", {
  expect_condition(mapexplass(2, "loc", aoicrs)) # stopifnot() L67
  expect_condition(mapexpclass(expvals, "loc", aoicrs)) # stopifnot() L69
  expect_condition(mapexpclass(exp, "loc", 2)) # stopifnot() L71
  expect_condition(mapexpclass(exp, "loc", aoibig)) # stopifnot() L73
  expect_condition(mapexpclass(exp, "blah", aoicrs)) # matchargs() L75
  expect_condition()
})
  • ml11. It's best for a function to always return an object of the same type.

If a function is type-stable ... you can predict the output type based only on the input types (not their values).
-- https://design.tidyverse.org/out-type-stability.html

The code chunk below shows that multidirexp() is not type-stable. To predict whether the output is a "data.frame" or a "ggplot" we need to know the value of the argument plot. Consider creating separate functions for returning a "data.frame" and a "ggplot". For example:

Option 1: data |> multidirexp() |> plot_multidirexp()
Option 2: data |> multidirexp() |> plot() or data |> multidirexp() |> ggplot2::autoplot(). This requres understanding a little of the S3 object-oriented system (https://adv-r.hadley.nz/s3.html). Here are some examples using autoplot: https://forestgeo.github.io/fgeo.plot/reference/index.html

# https://github.com/heyairf/fireexposuR/blob/main/tests/testthat/test-multidirexp.R
test_that("multidirexp() returns object with correct class", {
  expect_s3_class(multidirexp(exp, pts, plot = T), "ggplot")
  expect_s3_class(multidirexp(exp, pts), "data.frame")
})
  • ml12. The comments are likely to fall out of sync with the code. It's best to make an effort to turn those comments into a formal testthat expectation.
test_that("summexp() input checks work", {
  expect_condition(summexp(2)) #exp: right class
  expect_condition(summexp(exp, 2)) #aoi: right class
  expect_condition(summexp(exp, aoi, "blah")) # classify: match arg
})
Project management
  • ml13. Please explain if you think it might be possible to reduce the size of the git repo. The entire directory is ~77M but the .git/ directory alone is ~76M. This means the current files are ~1M in total. This indicates previous versions of the repository did have large files that are no longer necessary. Do you really need those large files in the history? Removing files from the history of a repo is hard-core and irreversible but maybe there is a different, better place to store those large files so that the repo is light (and therefore faster to clone).
# The fireexposuR directory is quite large, so cloning is relatively slow
➜  git du -hd 1 fireexposuR 
240K    fireexposuR/.Rproj.user
80K     fireexposuR/R
20K     fireexposuR/inst
76M     fireexposuR/.git
16K     fireexposuR/vignettes
24K     fireexposuR/.github
736K    fireexposuR/man
48K     fireexposuR/tests
77M     fireexposuR

# Almost all that "weight" comes from the .git/ directory alone
➜  git du -hd 1 fireexposuR/.git
4.0K    fireexposuR/.git/branches
75M     fireexposuR/.git/objects
32K     fireexposuR/.git/logs
8.0K    fireexposuR/.git/info
28K     fireexposuR/.git/refs
64K     fireexposuR/.git/hooks
76M     fireexposuR/.git
@ropensci-bot check
  • ml14. The checks from the ropensci-bot show some noteworthy properties that may help find potential areas of improvement, such as removing unused dependencies, splitting or simplifying large or complex functions. In particular, the goodpractice results finds a call to the pattern 1:length(...) that is best replaced with a call to seq_len().

Next, beware of iterating over 1:length(x), which will fail in unhelpful ways if x has length 0.
-- https://adv-r.hadley.nz/control-flow.html?q=1:leng#common-pitfalls

@heyairf
Copy link
Author

heyairf commented Oct 15, 2024

Hi @maurolepore,

Thank you so much for such detailed feedback! I will work on addressing these comments over the next few days and ask for further clarification if I need to. I very much appreciate all the resources you've included.

@heyairf
Copy link
Author

heyairf commented Oct 21, 2024

Hi @maurolepore,

I have attempted to addressed your feedback within my package! My replies to each of your comments are below. I expect that some may need to be addressed further, please let me know.

ml01

  • The accompanying paper is currently in preparation and will be submitted after the R package review is complete so examples in the paper align with the r package after it has been reviewed. I have clarified this in the README and will be sure to update with the new citation when it is published. I have also added a short description of the three papers that are linked, thank you for your suggestion!

ml02

  • Thank you for the links. I have added a website for the package following your instructions!

ml03

  • I have changed the function names so they use snake case and standardized all names to a prefixed “fire_exp”. Some functions have been split into more than one to address your feedback comment ml11. I have not officially grouped them, but now the function names organize them in a more meaningful order.

ml04/ml08

  • This has absolutely been my biggest challenge in this process that I have struggled to find help with the most. Originally I tried to use real data that had very large file sizes but soon found that that would not be an option which is why I switched to generating the example data with code. It was most challenging to figure out because of the spatial data types and inability to save them as .Rdata files like almost every example on the internet. I have made some more changes to address this based on all your very helpful feedback! I am sure there is still lots of room for improvement, but I have now saved the main example data as a .tif file in inst/extdata instead of regenerating it on the fly in every single example and test document.

ml05

  • My apologies, to clarify, the existing functions in question were made and used by only me. I have been using them in my own research and to save myself time when helping others run assessments. The edits and modifications I made were to make them more robust to share with a larger audience via the R package (i.e. the documentation and input checks).

ml06

  • With your feedback I believe I have now reduced the testing time to under 4 seconds for each function while still maintaining test coverage. I will continue to think about ways to reduce the size/extent of the test data to speed these up further.

ml07

  • I have added suppressMessages() to the few tests that output non-error messages to remove the clutter.

ml08

  • see reply to ml04

ml09/ml10

  • This feedback was so helpful for my overall understanding of how tests should be designed! I believe I have made significant improvements to address this in all of the test files.

ml11

  • I have split some functions to address this, but perhaps it can be split further still. For example, fire_exp_dir() now returns a spatial feature, that can then be used in fire_exp_dir_plot() which has the option to return a plot or a map.

ml12

  • The comments have been removed now that the expected error messages (from feedback at ml09/ml10) are more meaningful

ml13

  • You are absolutely correct that there was originally large files saved with the package for the examples in early stages of the project. I will remove them from the repo this week with some support from the research and training support at my university.

ml14

  • I have updated this line to use seq_len()

@maurolepore
Copy link
Member

@ropensci-review-bot check package

@ropensci-review-bot
Copy link
Collaborator

Thanks, about to send the query.

@maurolepore
Copy link
Member

maurolepore commented Oct 24, 2024

@heyairf thanks so much for your effort and your quick response. Great work.

I'll start reaching out to potential reviewers.

  • ml13 Great you're taking initiative. For now I suggest to keep this repo as is. Before you push a re-written Git repo to GitHub I would like to first discuss with the editor board to gather alternative opinions. Until it seems prudent to practice in a local copy of the repo.

Also ...

  • ml15. In the tests I see this warning:
Warning (test-fire_exp_extract_vis.R:43:3): fire_exp_extract_vis() runs when input conditions are met
Use of .data in tidyselect expressions was deprecated in tidyselect 1.2.0.
i Please use `"class"` instead of `.data$class`

The problem is in R/fire_exp_extract_vis.R#L137. You can fix using use "class" instead of .data$class.

      tidyr::drop_na("class")
  • Can you please confirm the potential reviewers you listed above do not have a conflic of interest? If that eliminates someone from your list, please replace them with a new suggestion. Also, in any case, it's handy to have their GitHub handle.

@mpadge
Copy link
Member

mpadge commented Oct 24, 2024

Sorry @maurolepore and @heyairf , the check package service is currently not working. It'll be back online in about 12 hours, at which time I'll make sure that request gets processed. Thanks

@maurolepore
Copy link
Member

@ronnyhdez thanks so much for the update and your flexibility.

@heyairf I hope the last few comments help you decide which strategy is best to ensure you can capitalize on the feedback you got while also ensuring Ronny's work remains relevant and smooth.

Let me know if anything is unclear or you need some other help.

@ropensci-review-bot
Copy link
Collaborator

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

@ronnyhdez
Copy link

Package Review

Hi @heyairf and @maurolepore! Thanks for the chance to review this package! Here are my suggestions.

@heyairf if there is something that is not clear, please let me know. This is my first review, so I'm also learning about the process 😃

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: 8

  • 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

General comments

It would be helpful to clarify how coordinate reference systems are handled
throughout the package, particularly whether transformations affect only the
visualization outputs or also the underlying analyses. For example, the use of
tiles involves the re-projection to EPSG:3857, which is necessary for
visualization. Given that the target audience of this package seems to be
wildfire scientists, documenting these spatial operations would enhance the
functions' usability.

Also, it would be helpful to indicate the geographical scope of the implemented
methods. From the references included in the README, it seems that the studies
were all conducted in Alberta, Canada. If the methods are specifically calibrated
for this region's characteristics, this should be explicitly stated in the
package documentation to help users assess the applicability to their study areas.

While references to scientific publications provide valuable methodological
context, the function documentation would be more effective if it primarily
focused on usage and implementation details, with citations serving as
supplementary information. This would enhance the user experience by providing
immediate access to practical implementation guidance.

I would suggest adding a CITATION file (see rOpenSci guidelines
here) to help
users properly acknowledge your work when using the package in their research.

The checkpoiints above state that there should be a 'contribution guidelines'.
Here
is some information that can guide you about how to include it.

Specific thoughts

Here I have some comments/suggestions to specific sections of the package:

README

"This package automates the methods previously documented in a series of scientific publications.

Beverly et al. 2010
Introduces wildfire exposure and wildfire transmission distances for community scale assessments
Beverly et al. 2021
Validation of the wildfire exposure metric at a landscape scale with observed fire history
Beverly and Forbes 2023
Directional vulnerability assessment and methodology"

It's great to have references to published papers in a package. Nonetheless, the
documentation should focus on providing clear, step-by-step instructions for
using the package, rather than primarily redirecting users to scientific papers
for basic usage information.

I suggest including brief explanations of the methods directly in the README,
along with the citations. This would allow users to understand
the package's functionality immediately from the documentation, while still
having access to academic papers for a deeper understanding. Moreover, one of the
papers is behind a paywall, so if a user
does not have access to the Journal, it will complicate the adoption of the
package (If the package is documented as papers first, before using the code).

The functions in this package require the pre-preparation of data; an
accompanying paper (currently in preparation) details suggestions for data
acquisition and preparation in accordance with various budget limitations and
user experience levels."

This is also related to the previous comment. The scientific publication would
make your tools more robust, and for sure it should be included in the
package documentation. But try to prioritize practical usage guidance
explanations rather than redirecting users to a paper.

Think about a potential user of your package. They need to analyze wildfire
exposure and found your package. The first thing would be to glimpse the
documentation and give it a try just to check if it works and what kind of
outputs it can produce. A summary explanation with some example code will help
that user to perform a skim of the package and make the decision to use or not.

So, I wouldn't redirect them to a scientific paper as the first step. Make the
user explore your package and once they have tried, give them the possibility
to go for further details on the published papers.

Think of the README as an abstract: it should concisely present the package's
purpose and basic workflow. Users should be able to quickly assess if the
package meets their needs through example code and the workflow, before
diving into the underlying scientific publications for advanced theory
understanding.

Vignettes

The package already have vignettes which is great to document and explain
further how an user can benefit from using the package. There are no rules on
how documentation should be arrange in vignettes, but the general trend I see
and find useful is to have:

  • index page: Almost the same as the README. The first point of entry of an
    user could be the GitHub repository or the package website. So, to have the
    "abstract" on both sides is good.

  • Get started page: This would be the place to explain the workflow of the
    package. I would try to not expand to much here about scientific details but
    rather on the workflow and steps to get the primary functionality of the package
    explained. The deeper topics would be referenced to a vignette article.

  • Articles: This is the section I would use to explain further details and
    deeper concepts that were not covered on the "Get started" page. If an user
    wants to go deeper in understanding specific details of methods, sciencie and
    code, this is the section to look for that information.

Some examples of this arrangement are dplyr
and gt

communityscale vignette

I liked this vignette because it already have the primary functionality and
workflow of the package. I would use it as the 'Get started' page. It takes the
user through a set of steps to check quickly how the package works.

About the code snippets, I suggest using complete names for the objects and
linespaces to separate steps. For example, the first chunk of code in the
communityscale vignette looks like this:

library(terra)
# read example hazard data ----------------------------------
filepath <- "extdata/hazard.tif"
haz <- terra::rast(system.file(filepath, package = "fireexposuR"))
# read example AOI
filepath <- "extdata/builtsimpleexamplegeom.csv"
g <- read.csv(system.file(filepath, package = "fireexposuR"))
aoi <- terra::vect(as.matrix(g), "polygons", crs = haz)
# generate random points
pts <- terra::spatSample(aoi, 200)
#' # ----------------------------------------------------------

I would change it the following way:

library(terra)

# Path to sample hazard data
hazard_file_path <- "extdata/hazard.tif"

# Read sample hazard data
hazard <- rast(system.file(file_path, package = "fireexposuR"))

# Read example Area of Interest (AOI)
aoi_file_path <- "extdata/builtsimpleexamplegeom.csv"
aoi_data <- read.csv(system.file(aoi_file_path, package = "fireexposuR"))
aoi_polygon <- vect(as.matrix(aoi_data), "polygons", crs = hazard)

# Generate random points
points <- spatSample(aoi_polygon, 200)

That way, it would be easier (less cognitive load) for a new user to
follow the examples and the objects being created and transformed within. I
suggest implementing this in all the user documentation.

If there is a need to explain further something on this 'Get started' page, I
would create an article, but I would leave in this 'Get Started' page, a link
to that more detailed explanation.

Further explanations on the science behind would be in 'Articles' vignettes.

Finally, I think the package's visualization examples would be even more
engaging with terrestrial locations, as this would highlight the integration
with base map tiles and provide users with examples that directly relate to
typical wildfire analysis scenarios. If there are specific reasons/constrains
for using oceanic locations in the examples it's fine.

Functions

In general, there are several functions on which the documentation starts with
papers reference. I would divide this using the @description and implementing
@details. In the roxygen documentation
states that, after the title:

The second paragraph is the description: this comes first in the documentation
and should briefly describe what the function does.

The third and subsequent paragraphs go into the details: this is a (often
long) section that comes after the argument description and should provide any
other important details of how the function operates. The details are optional.

I suggest using the details section to include the reference to a paper if
needed.

There are some functions which have fixed values in their bodies. I'm wondering
if those could be arguments with default values that the user can change. This
is one example

  • fire_exp_map_class() function documentation states: Scales and colors are
    determined by the parameter classify which can be set to "local" or "landscape"
    This are the kind of explanations I would include in a 'article' in the
    vignettes. Going further explaining to a user the differences of some of the
    arguments options in the results and the theory behind it could be part of the
    things to be explained in a 'article' vignette.

@maurolepore
Copy link
Member

@ronnyhdez thanks so much for your thoughtful review!

Next steps

We won't use your input for a few weeks, until @heyairf has had the chance to address both reviews (and I'm still searching for the second reviewer). Then I'll contact you again for a final approval unless there is something else that needs to be addressed.

@ropensci ropensci deleted a comment from ropensci-review-bot Nov 18, 2024
@maurolepore
Copy link
Member

@ropensci-review-bot submit review #659 (comment) time 8

@ropensci-review-bot
Copy link
Collaborator

Logged review for ronnyhdez (hours: 8)

@maurolepore
Copy link
Member

@maelle unfortunately I'm still seeking the second reviewer. It seems to become harder and harder that as we approach the end of the year. I'm about to ask for help in the editors channel.

@heyairf I'm really sorry for the delay. It's not super common but occasionally it does happen that it takes quite some effort.

@heyairf
Copy link
Author

heyairf commented Nov 29, 2024

@maurolepore

Thank you for the continuous updates!

@ropensci ropensci deleted a comment from ropensci-review-bot Nov 30, 2024
@maurolepore
Copy link
Member

@ropensci-review-bot assign @huizezhang-sherry as reviewer

@ropensci-review-bot
Copy link
Collaborator

@huizezhang-sherry added to the reviewers list. Review due date is 2024-12-21. Thanks @huizezhang-sherry 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

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

@maurolepore
Copy link
Member

@heyairf we now have the second and last reviewer! Thanks for your patience.

(BTW the bot posted a mistaken message requesting your response. I deleted it but if you still see it in your inbox please ignore it.)

@ropensci-review-bot
Copy link
Collaborator

📆 @huizezhang-sherry you have 2 days left before the due date for your review (2024-12-21).

@huizezhang-sherry
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

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: 3.5

  • 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

  • The package would benefit from more documentation on the methods and how outputs are computed. While the papers referenced provide comprehensive details, a good rule of thumb is that the package documentation(README, articles, and function reference) should be self-contained, with publication(s) referenced for further details.
    • It would be helpful to explain how the summary in fire_exp_dir() is generated and what is plotted in fire_exp_dir_plot() to help user comprehend the plot. For example, it would be beneficial to clarify that fire_exp_dir() divides the space around the point into 1-degree intervals and computes the binary variable, viable as whether trajectories with at least 80% of its length traversing high exposure(60%). Similarly fire_exp_dir_plot() plots those directional segment area where viable = 1.
    • The basemap example in fire_exp_dir_plot() could be more informative if it were draw on terrain rather than a pseudo-example over the ocean. Also, It will be helpful to include technical details about how the plot is created. For example, when the basemap is used (map = TRUE), tidyterra::geom_spatvector()/ tidyterra::geom_spatraster_rgb() are used for plotting. Without the basemap, geom_bar() is used after casting the SpatVector object to a data frame.
    • The author may consider explaining the difference of using fire_exp_dir_multi() and fire_exp() + fire_exp_dir() + fire_exp_dir_plot()
  • The use of color (red, orange, and yellow) in fire_exp_dir_plot(), while differentiates the three distance intervals (to 5km, to 10km, and to 15km), could be misread as the magnitude of the variable being plotted if users are not clear about the variable. Since this distance information is already captured by their relative position in the ring, the authors may want to reconsider the appropriateness of using color in this context.
  • fire_exp_dir() : authors could consider making the directional interval (currently fixed 1 degree) an argument in fire_exp_dir() to allow users to summarize and visualize trajectories at customized finer or coarser intervals. Similarly for segment length (5km apart: 0-5km/ 5-10km/ 10-15km), proportional length traversing (80%), exposure percentage (60%).
  • Function names in the package could more clearly reflect their purposes. The package provides two types of functions: 1) those that summarize fire exposure metrics and 2) those that plot fire exposure. It would be helpful if function names can explicitly indicates their purpose. For example, standardizing visualization functions as fire_exp_vis_xxx() would make tehm easier to identify. Also authors may consider organizing functions into sections on the pkgdown reference page.

@maurolepore
Copy link
Member

@huizezhang-sherry thanks so much for your review!

@maurolepore
Copy link
Member

@ropensci-review-bot submit review #659 (comment) time 3.5

@ropensci-review-bot
Copy link
Collaborator

Logged review for huizezhang-sherry (hours: 3.5)

@maurolepore
Copy link
Member

@heyairf you can now go ahead and incorporate both reviews. Thank you for being patient 🙏

https://devdevguide.netlify.app/softwarereview_author#the-review-process

We ask that you respond to reviewers’ comments within 2 weeks of the last-submitted review, but you may make updates to your package or respond at any time. Your response should include a link to the updated NEWS.md of your package. Here is an author response example. Once the response is commited, submit it using the bot. We encourage ongoing conversations between authors and reviewers. See the reviewing guide for more details.

@heyairf
Copy link
Author

heyairf commented Dec 28, 2024

Hello @maurolepore , and reviewers!
with unfortunate timing, I am out of office (and away from my PC) for the holidays until January 6th. Is it possible to add a few days to the 2 week response period to accommodate my return to office? I expect I will be able to respond by January 10th!

@maurolepore
Copy link
Member

Absolutely, the end of the year is inconvenient for everyone

@ropensci-review-bot
Copy link
Collaborator

@heyairf: please post your response with @ropensci-review-bot submit response <url to issue comment> if you haven't done so already (this is an automatic reminder).

Here's the author guide for response. https://devguide.ropensci.org/authors-guide.html

@maurolepore
Copy link
Member

@heyairf please don't stress about the bot's reminder ;-)

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

8 participants