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

fastMatMR: Fast Matrix Market I/O #606

Closed
12 of 29 tasks
HaoZeke opened this issue Sep 2, 2023 · 60 comments
Closed
12 of 29 tasks

fastMatMR: Fast Matrix Market I/O #606

HaoZeke opened this issue Sep 2, 2023 · 60 comments
Assignees

Comments

@HaoZeke
Copy link
Member

HaoZeke commented Sep 2, 2023

Date accepted: 2023-10-30
Submitting Author Name: Rohit Goswami
Submitting Author Github Handle: @HaoZeke
Repository: https://github.com/HaoZeke/fastMatMR
Version submitted:
Submission type: Standard
Editor: @maelle
Reviewers: @osorensen, @czeildi

Archive: TBD
Version accepted: TBD
Language: en


  • Paste the full DESCRIPTION file inside a code block below:
Package: fastMatMR
Title: "fastMatMR: High-Performance Matrix Market File Operations in R"
Version: 1.0.0.0
Authors@R:
    person("Rohit", "Goswami", , "rgoswami@ieee.org", role = c("aut", "cre"),
           comment = c(ORCID = "0000-0002-2393-8056"))
Description: "fastMatMR is an R package offering high-performance read and write operations for Matrix Market files. It acts as a thin wrapper around the 'fast_matrix_market' C++ library, offering speed and extended support for Matrix Market formats. Unlike other R packages, fastMatMR supports not just sparse matrices but also dense vectors and matrices. This makes it a versatile choice for dealing with .mtx files in R."
License: MIT + file LICENSE
SystemRequirements: C++17
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.2.3
LinkingTo:
    cpp11
Suggests:
    ggplot2,
    knitr,
    Matrix,
    microbenchmark,
    rmarkdown,
    testthat (>= 3.0.0)
URL: https://github.com/HaoZeke/fastMatMR
BugReports: https://github.com/HaoZeke/fastMatMR/issues
Config/testthat/edition: 3
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):

The matrix market exchange formats are crucial to much of the ecosystem. The fastMatMR package focuses on high-performance read and write operations for Matrix Market files, serving as a key tool for data extraction in computational and data science pipelines.

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

Data scientists who might want to load and test the NIST matrices which include:

comparative studies of algorithms for numerical linear algebra, featuring nearly 500 sparse matrices from a variety of applications, as well as matrix generation tools and services.

Additionally, this makes its simpler to interface to scipy and the rest of the data science ecosystem. This also includes working with the Tensor Algebra Compiler (TACO).

The Matrix package in R can perform similar operations but only for sparse matrices. The fastMatMR package not only provides enhanced performance but also extends support to dense matrices and vectors in base R, thus offering a more versatile solution.

We have both read and write performance vignettes backing up the claims made.

The package passes pkcheck: ropensci/fastMatMR#18, though the review bot disagrees :)

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

👋

@HaoZeke
Copy link
Member Author

HaoZeke commented Sep 2, 2023

Also, not part of the issue template, but the package passes pkcheck: ropensci/fastMatMR#18

@ropensci-review-bot
Copy link
Collaborator

Checks for fastMatMR (v1.0.0.0)

git hash: a910f6be

  • ✔️ 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 68.1% (should be at least 75%).
  • ✔️ 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: MIT + file LICENSE


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 fastMatMR 6
imports NA NA
suggests ggplot2 NA
suggests knitr NA
suggests Matrix NA
suggests microbenchmark NA
suggests rmarkdown NA
suggests testthat NA
linking_to cpp11 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.

fastMatMR

fmm_to_mat (1), fmm_to_vec (1), mat_to_fmm (1), release_questions (1), sparse_to_fmm (1), vec_to_fmm (1)

NOTE: No imported packages appear to have 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 C++ (7% in 3 files), C/C++ Header (91% in 15 files) and R (2% in 3 files)
  • 1 authors
  • 3 vignettes
  • no internal data file
  • 1 imported package
  • 7 exported functions (median 3 lines of code)
  • 8 non-exported functions in R (median 3 lines of code)
  • 217 C/C++ functions (median 5 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 3 21.5
files_src 3 84.3
files_inst 15 99.6
files_vignettes 3 92.4
files_tests 3 75.2
loc_R 45 4.3 TRUE
loc_src 202 27.6
loc_inst 2545 81.7
loc_vignettes 276 60.9
loc_tests 68 31.5
num_vignettes 3 94.2
n_fns_r 15 21.2
n_fns_r_exported 7 34.0
n_fns_r_not_exported 8 18.0
n_fns_src 217 89.5
n_fns_per_file_r 3 46.2
n_fns_per_file_src 8 68.9
num_params_per_fn 2 11.9
loc_per_fn_r 3 1.1 TRUE
loc_per_fn_r_exp 3 1.5 TRUE
loc_per_fn_r_not_exp 3 1.5 TRUE
loc_per_fn_src 5 5.0 TRUE
rel_whitespace_R 29 11.6
rel_whitespace_src 20 31.5
rel_whitespace_inst 22 82.8
rel_whitespace_vignettes 41 68.6
rel_whitespace_tests 24 30.6
doclines_per_fn_exp 18 10.4
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 480 95.1 TRUE

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
6056018810 pages build and deployment success c3523b 8 2023-09-02
6056006940 pkgcheck success fe999d 21 2023-09-02
6056006937 pkgdown success fe999d 23 2023-09-02
6056006936 pre-commit success fe999d 49 2023-09-02
6056006938 R-CMD-check success fe999d 39 2023-09-02

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following note:

  1. checking installed package size ... NOTE
    installed size is 11.1Mb
    sub-directories of 1Mb or more:
    libs 10.2Mb

R CMD check generated the following check_fail:

  1. rcmdcheck_reasonable_installed_size

Test coverage with covr

Package coverage: 68.1

The following files are not completely covered by tests:

file coverage
inst/include/fast_matrix_market/chunking.hpp 63.83%
inst/include/fast_matrix_market/fast_matrix_market.hpp 18.92%
inst/include/fast_matrix_market/header.hpp 59.69%
inst/include/fast_matrix_market/read_body_threads.hpp 67.44%
inst/include/fast_matrix_market/read_body.hpp 42.29%
inst/include/fast_matrix_market/write_body.hpp 50%
R/misc.R 0%

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 1 potential issues:

message number of times
Avoid library() and require() calls in packages 1


Package Versions

package version
pkgstats 0.1.3.8
pkgcheck 0.1.2.2


Editor-in-Chief Instructions:

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

@HaoZeke
Copy link
Member Author

HaoZeke commented Sep 2, 2023

FWIW there's .covignore which is not being picked up by the bot here (works on the repo, ropensci/fastMatMR#18). Package coverage is:

> covr::package_coverage()
fastMatMR Coverage: 94.69%
src/from_file.cpp: 93.88%
src/to_file.cpp: 94.23%
R/fastMatMR-package.R: 100.00%

@mpadge
Copy link
Member

mpadge commented Sep 5, 2023

@HaoZeke is indeed right there - the failing coverage check is a bug on our side, and not this submission.

@noamross
Copy link
Contributor

noamross commented Sep 5, 2023

@ropensci-review-bot assign @maelle as editor

@ropensci-review-bot
Copy link
Collaborator

Assigned! @maelle is now the editor

@maelle
Copy link
Member

maelle commented Sep 12, 2023

👋 @HaoZeke! Nice to see you as an author this time around, thank you for your submission! 😀

A few comments/questions before we proceed to the reviewer search:

  • Why add the bundled files to .covrignore, if they contribute to the functionality of the package?
  • I see you use conventional commits, nice. How is the changelog generated? I see DOC: Fix news fastMatMR#17 Disclaimer: I contribute to https://github.com/cynkra/fledge/
  • In the example where you use -> I'd suggest using <- instead since the former is more rare.
  • In the README you write "writing and reading from other R objects". Could you please elaborate, adding a few sentences about this to the README?
  • To me the second part of the README, "Development", belongs to the contributing guide, so you could move the content and instead point contributors to the contributing guide.
  • In the contributing guide could you please add a link to pixi? I for instance do not know what it is.
  • In the issue tracker there are a few enhancement issues. What's the timeline for them, are they "nice to have" or do you intend to tackle them soon? If so should the review wait?

Thank you!

@HaoZeke
Copy link
Member Author

HaoZeke commented Sep 12, 2023

👋 @HaoZeke! Nice to see you as an author this time around, thank you for your submission! 😀

^_^

A few comments/questions before we proceed to the reviewer search:

* Why add the bundled files to .covrignore, if they contribute to the functionality of the package?

This is because there is no need to expose bindings of the inner workings of the fast_matrix_market C++ library to R users. This approach is also taken by other libraries which bundle C++ libraries, like RCppEigen.

The user-facing C++ functions are in src/ and covered by tests.

* I see you use conventional commits, nice. How is the changelog generated? I see [DOC: Fix news HaoZeke/fastMatMR#17](https://github.com/HaoZeke/fastMatMR/issues/17) Disclaimer: I contribute to https://github.com/cynkra/fledge/

That's a very cool library, I am currently using towncrier and tbump which are fairly generic tools.

* In the example where you use `->` I'd suggest using `<-` instead since the former is more rare.

* In the README you write "writing and reading from other R objects". Could you please elaborate, adding a few sentences about this to the README?

* To me the second part of the README, "Development", belongs to the contributing guide, so you could move the content and instead point contributors to the contributing guide.

* In the contributing guide could you please add a link to pixi? I for instance do not know what it is.

Yup these are great suggestions, updated the package with them.

* In the issue tracker there are a few enhancement issues. What's the timeline for them, are they "nice to have" or do you intend to tackle them soon? If so should the review wait?

These are more version 2 issues and shouldn't block the review I think. It would take a while for me to get to them, the current functionality covers R matrices, vectors and sparse matrices from Matrix which cover most of the use-cases. Other sparse matrix formats are on the issue list but they're very optional "nice to have" issues since users can always convert to Matrix formats / dense types before using the library.

Thank you!

You're welcome :)

@maelle
Copy link
Member

maelle commented Sep 14, 2023

This is because there is no need to expose bindings of the inner workings of the fast_matrix_market C++ library to R users. This approach is also taken by other libraries which bundle C++ libraries, like RCppEigen.

To clarify, the question was about tests specifically. Part of the code in inst/ is covered by tests anyway, so why not include them (and remove the unused code)?

We do not have strict requirements on testing coverage for bundled code yet, but we can improve our guidance based on cases like this submission, so this discussion is important.

@HaoZeke
Copy link
Member Author

HaoZeke commented Sep 14, 2023

This is because there is no need to expose bindings of the inner workings of the fast_matrix_market C++ library to R users. This approach is also taken by other libraries which bundle C++ libraries, like RCppEigen.

To clarify, the question was about tests specifically. Part of the code in inst/ is covered by tests anyway, so why not include them (and remove the unused code)?

Mostly maintainence. I have actually stripped the (already small) library of header files which are not used at all (Eigen / Armadillo / other C++ library compatibility files).

In general, for bundled libraries it is a good idea to not tamper with the upstream source as much as possible (it makes it easier to update to new versions).

We do not have strict requirements on testing coverage for bundled code yet, but we can improve our guidance based on cases like this submission, so this discussion is important.

Yup, I understand. Policy wise I'd be even stricter, and say that bundled libraries must not be touched at all (other than whole-file removals if they are not relevant and self contained).

This is standard practice in bundling libraries in C++ too, where projects might have different linting rules and external files are ignored instead of refactored in-place within the project. The idea is that this way upstream developers can weigh in more easily on the code.

It also allows people to write bindings as long as they understand the public API of the code. Often times users who want bindings are not fully aware / have the expertise to make decisions about code removal from (possibly) complicated upstream C++ code.

@maelle
Copy link
Member

maelle commented Sep 15, 2023

Thank you for your thorough answer! I'll now look for reviewers.

@maelle
Copy link
Member

maelle commented Sep 15, 2023

@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/606_status.svg)](https://github.com/ropensci/software-review/issues/606)

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

@maelle
Copy link
Member

maelle commented Sep 15, 2023

@ropensci-review-bot add @osorensen to reviewers

@ropensci-review-bot
Copy link
Collaborator

@osorensen added to the reviewers list. Review due date is 2023-10-06. Thanks @osorensen 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

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

@maelle
Copy link
Member

maelle commented Sep 16, 2023

@ropensci-review-bot add @czeildi to reviewers

@ropensci-review-bot
Copy link
Collaborator

@czeildi added to the reviewers list. Review due date is 2023-10-07. Thanks @czeildi 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

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

@osorensen
Copy link

osorensen commented Sep 22, 2023

@HaoZeke and @maelle, here is my initial review. My comments at the bottom explain a bit more about the boxes I haven't checked.

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 been confirmed.
  • Performance: Any performance claims of the software 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: 2 hours

  • ☒ Should the author(s) deem it appropriate, I agree to be acknowledged as a package reviewer (“rev” role) in the package DESCRIPTION file.
    I have not done anything of importance, so I should not be listed.

Review comments

Dense matrices with the matrix package

In README, you state that the Matrix package only handles sparse objects. This is not correct.

library(Matrix)

The command below lists all dense matrix types supported by the Matrix package.

showClass("denseMatrix")

## Virtual Class "denseMatrix" [package "Matrix"]
## 
## Slots:
##                         
## Name:       Dim Dimnames
## Class:  integer     list
## 
## Extends: 
## Class "Matrix", directly
## Class "mMatrix", by class "Matrix", distance 2
## Class "replValueSp", by class "Matrix", distance 2
## 
## Known Subclasses: 
## Class "unpackedMatrix", directly
## Class "packedMatrix", directly
## Class "ndenseMatrix", directly
## Class "ldenseMatrix", directly
## Class "ddenseMatrix", directly
## Class "ngeMatrix", by class "unpackedMatrix", distance 2
## Class "ntrMatrix", by class "unpackedMatrix", distance 2
## Class "nsyMatrix", by class "unpackedMatrix", distance 2
## Class "ntpMatrix", by class "packedMatrix", distance 2
## Class "nspMatrix", by class "packedMatrix", distance 2
## Class "lgeMatrix", by class "unpackedMatrix", distance 2
## Class "ltrMatrix", by class "unpackedMatrix", distance 2
## Class "lsyMatrix", by class "unpackedMatrix", distance 2
## Class "ltpMatrix", by class "packedMatrix", distance 2
## Class "lspMatrix", by class "packedMatrix", distance 2
## Class "dgeMatrix", by class "unpackedMatrix", distance 2
## Class "dtrMatrix", by class "unpackedMatrix", distance 2
## Class "dsyMatrix", by class "unpackedMatrix", distance 2
## Class "dpoMatrix", by class "dsyMatrix", distance 3
## Class "corMatrix", by class "dpoMatrix", distance 4
## Class "dtpMatrix", by class "packedMatrix", distance 2
## Class "dspMatrix", by class "packedMatrix", distance 2
## Class "dppMatrix", by class "dspMatrix", distance 3
## Class "pcorMatrix", by class "dppMatrix", distance 4

Below is an example of a dense matrix from the Matrix package:

(dense_matrix <- as(matrix(1:10, ncol = 2), "dMatrix"))

## 5 x 2 Matrix of class "dgeMatrix"
##      [,1] [,2]
## [1,]    1    6
## [2,]    2    7
## [3,]    3    8
## [4,]    4    9
## [5,]    5   10

str(dense_matrix)

## Formal class 'dgeMatrix' [package "Matrix"] with 4 slots
##   ..@ Dim     : int [1:2] 5 2
##   ..@ Dimnames:List of 2
##   .. ..$ : NULL
##   .. ..$ : NULL
##   ..@ x       : num [1:10] 1 2 3 4 5 6 7 8 9 10
##   ..@ factors : list()

Statement of need

The README file contains a section titled “Why?”, but it does not state explicitly what problems the software is designed to solved nor what the target audience is.

Vignettes

There are vignettes, but they are very brief. Please provide some more extended examples, with more text explaining what is being done.

Examples

I understand that the fmm_to_* functions need an mtx file to work, and I guess it’s therefore the examples with these functions are marked with \dontrun{}. However, wouldn’t it possible to define a character vector in R that contains the required input, and then feed this to fmm_to_* in order to have an example that can actually be run?

@HaoZeke
Copy link
Member Author

HaoZeke commented Oct 25, 2023

@HaoZeke great work and thank you for your detailed response and making your changes easy to track. I am now happy to recommend approving this package :)

Wonderful, thanks so much ^_^

I still have two small comments (neither blocking approval):

Merging soon :)

As noted in HaoZeke/fastMatMR#26, users should be calling write_fmm instead of the lower level functions.

If the users are not supposed to be calling the lower level functions, do they need to be exported, and thus being part of the public user interface of the package? It could be less confusing possibly if only those functions are exported which are meant to be called directly by users.

I thought about this, but decided not to mainly because downstream package users (including me for other dependent packages) would want to call these functions where it makes sense (e.g. if my downstream package will only write matrix data or sparse matrix data) and CRAN disallows / warns calling unexported functions via :::

@czeildi
Copy link

czeildi commented Oct 25, 2023

I thought about this, but decided not to mainly because downstream package users (including me for other dependent packages) would want to call these functions where it makes sense (e.g. if my downstream package will only write matrix data or sparse matrix data) and CRAN disallows / warns calling unexported functions via :::

Makes sense, thank you for the response!

@osorensen
Copy link

Thanks @HaoZeke, I have completed my checklist.

@HaoZeke
Copy link
Member Author

HaoZeke commented Oct 29, 2023

@maelle since the reviews are satisfactorily completed (thanks all) I was wondering whta the next steps are :)

@maelle
Copy link
Member

maelle commented Oct 30, 2023

👋 @HaoZeke! Thanks for your work!

Thanks @czeildi @osorensen! Could please use the reviewer approval template for approval? Thanks!

@osorensen
Copy link

Reviewer Response

Final approval (post-review)

  • The author has responded to my review and made changes to my satisfaction. I recommend approving this package.

Estimated hours spent reviewing: 3

@czeildi
Copy link

czeildi commented Oct 30, 2023

Reviewer Response

Final approval (post-review)

  • The author has responded to my review and made changes to my satisfaction. I recommend approving this package.

Estimated hours spent reviewing: 6

@maelle
Copy link
Member

maelle commented Oct 30, 2023

@ropensci-review-bot approve fastMatMR

@ropensci-review-bot
Copy link
Collaborator

Approved! Thanks @HaoZeke for submitting and @osorensen, @czeildi 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.

@maelle
Copy link
Member

maelle commented Oct 30, 2023

@ropensci-review-bot submit review #606 (comment) time 3

@ropensci-review-bot
Copy link
Collaborator

Logged review for osorensen (hours: 3)

@maelle
Copy link
Member

maelle commented Oct 30, 2023

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

@ropensci-review-bot
Copy link
Collaborator

Logged review for czeildi (hours: 6)

@HaoZeke
Copy link
Member Author

HaoZeke commented Oct 30, 2023

@ropensci-review-bot finalize transfer of fastMatMR

@ropensci-review-bot
Copy link
Collaborator

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

@HaoZeke
Copy link
Member Author

HaoZeke commented Oct 30, 2023

Sorry to bring this up here, but, I can't seem to get the centralized documentation and r-universe builds to run, @maelle would you have any suggestions?

P.S. Thanks all for the help, this was a really useful process :)

@HaoZeke
Copy link
Member Author

HaoZeke commented Oct 30, 2023

Also perhaps @mpadge would be better suited to offer advice on #606 (comment)?

@HaoZeke
Copy link
Member Author

HaoZeke commented Oct 30, 2023

Also @ropensci/blog-editors, I think a blog post showing the enhanced inter-operability offered by this package might be of interest, if so, I'd be happy to discuss submitting a blog post :)

@mpadge
Copy link
Member

mpadge commented Oct 30, 2023

@HaoZeke r-universe only builds at most every few hours, so my advice would be just wait and build should appear

@maelle
Copy link
Member

maelle commented Oct 30, 2023

https://docs.ropensci.org/fastMatMR/ is up 🎉

The dev version of the dev guide has a package maintainer cheatsheet: https://devdevguide.netlify.app/maintenance_cheatsheet

Thanks so much @HaoZeke for your participation in the process!

@HaoZeke
Copy link
Member Author

HaoZeke commented Nov 2, 2023

Now on CRAN!

image

@maelle
Copy link
Member

maelle commented Nov 3, 2023

wow that was fast, congrats!!

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

7 participants