Friday, May 9, 2025 From rOpenSci (https://ropensci.org/blog/2025/05/09/ror/). Except where otherwise noted, content on this site is licensed under the CC-BY license.
A few years ago, the R community started using ORCID (“Open Researcher and Contributor ID”) to persistently and uniquely identify individual authors of packages in DESCRIPTION.
The idea is the following: you enter authors’ ORCID as a specially named comment in their person()
object.
For instance I can be represented by:
person("Maëlle", "Salmon", , "[email protected]", role = c("cre", "aut"),
comment = c(ORCID = "0000-0002-2815-0399"))
Although anyone could use your ORCID, maliciously or inadvertently1, you definitely benefit from using your ORCID in your work. In the case of R packages, CRAN pages and pkgdown websites feature a pretty icon linking to your ORCID profile that in turn can link to your favorite online presence. Recognition! Personal branding!
This year, the exact same idea was applied to organizations using ROR (“Research Organizations Registry”) IDs. Any organization, be it a research organization, an initiative or a company, can request to be listed in the registry. A few months ago, it became possible to list ROR IDs in DESCRIPTION, which a few dozen CRAN packages currently do – although this is still far from the thousands of CRAN packages adopting ORCIDs. Thanks to R Core for adding the feature2 and to Achim Zeileis for spreading the news.
A package maintainer might need to list organizations in DESCRIPTION
: for instance a company that owns the copyright to the package (“cph” role), an entity that funded work on the software (“fnd” role).
Adding the organization’s ROR ID to its person()
object identifies it even more clearly.
As an illustration, rOpenSci can be represented by:
person("rOpenSci", role = "fnd",
comment = c("https://ropensci.org/", ROR = "019jywm96"))
The ROR icon, although less striking than the bright green ORCID icon, appears on the CRAN page of the package and links to the organization’s ROR page that in turn can link to the organization’s website:
In 2018 we had reported about tooling for using ORCID. This year, we’d like to explain the tooling for including ROR IDs.
Once ROR IDs were supported by base R, a next technical step was for them to be supported by Posit’s “devtools ecosystem” too. Even if devtools is not strictly necessary for developing packages, many package developers, including some in the rOpenSci community, do use devtools.
The code supporting ROR in desc, roxygen2 and pkgdown follows the code supporting ORCID in those packages. It is very fortunate that ORCID support was added before ROR because “orcid” is a better string to search for than “ror” that comes up in, say, “error”. 😸
The desc package, maintained by Gábor Csárdi, helps you manipulate DESCRIPTION
files programmatically.
In its current development version, all functions handling authors (adding, searching or complementing entries) now feature a ror
argument.
Furthermore, a new function, desc_add_ror()
, was created.
For instance you can add a ROR ID to an author entry:
desc::desc_add_ror("019jywm96", given = "rOpenSci")
You can add an author entry including its ROR ID:
desc::desc_add_author(given = "rOpenSci", ror = "019jywm96", role = "fnd")
These functions can be handy to update a bunch of packages at once. Even if packages are updated one by one, it is shorter to share and apply the instructions as a code snippet.
The roxygen2 package, maintained by Hadley Wickham, generates your package’s NAMESPACE
and manual pages using specially formatted comments.
Among those manual pages, your package might (and should, according to our dev guide) contains a package-level one.
You can create such a page using usethis::use_package_doc()
.
The following content will be added to R/package-name-package.R
, for instance R/usethis-package.R
.
#' @keywords internal
"_PACKAGE"
## usethis namespace: start
## usethis namespace: end
NULL
Running devtools::document()
will create an Rd file for ?package-name
, whose content comes from DESCRIPTION
, including ORCIDs and ROR IDs.
In this case, you might want to install roxygen2’s development version to see the ROR ID properly reformatted to an URL. Example of the tinkr package: package-level doc source, package-level manual page, manual page on pkgdown.
The pkgdown package, maintained by Hadley Wickham, creates a documentation website for your package based on its metadata and documentation.
Since its 2.1.2 version, ROR IDs in DESCRIPTION
are transformed into icons, similar to ORCID IDs.
The sidebar of tinkr’s website includes a ROR icon near rOpenSci name.
As of today, ROR icons like those on the CRAN pages, pkgdown websites and our website’s footer come from files. We have however opened an icon request for ROR in the Font Awesome repository, that you can upvote by using thumbs up. This strategy worked for ORCID. There’s already a ROR icon in the more specialized academicons library.
In this tech note, we explained what ROR IDs are: persistent IDs for organizations. They are to organizations what ORCIDs are to individuals. We’ve shown ROR IDs are supported in the base R and devtools ecosystems.
ROR IDs can help identify more clearly an entity you list in your package’s DESCRIPTION
because it, say, funded the work or owns the copyrights to it.
We encourage you to register your organization to the Research Organization Registry and to use the resulting ID in your package’s DESCRIPTION
.
Such a task could be tackled during a package spring cleaning.