{"id":18014336,"url":"https://github.com/ropensci/cffr","last_synced_at":"2025-04-10T02:20:24.684Z","repository":{"id":42369509,"uuid":"401511854","full_name":"ropensci/cffr","owner":"ropensci","description":"Generate Citation File Format (cff) Metadata for R Packages","archived":false,"fork":false,"pushed_at":"2025-03-31T08:09:59.000Z","size":4373,"stargazers_count":26,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-31T09:24:00.440Z","etag":null,"topics":["attribution","cff","citation","citation-file-format","citation-files","cran","metadata","r","r-cran","r-package","ropensci","rstats"],"latest_commit_sha":null,"homepage":"https://docs.ropensci.org/cffr/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ropensci.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json"}},"created_at":"2021-08-30T23:18:43.000Z","updated_at":"2025-03-31T08:10:03.000Z","dependencies_parsed_at":"2023-02-04T11:46:50.006Z","dependency_job_id":"e0b7d40b-aa43-4a31-933f-5774dc497a96","html_url":"https://github.com/ropensci/cffr","commit_stats":{"total_commits":673,"total_committers":6,"mean_commits":"112.16666666666667","dds":0.07578008915304602,"last_synced_commit":"c04d2800b83db5b534ef30b24bbe28dc9ed489ce"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcffr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcffr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcffr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcffr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","download_url":"https://codeload.github.com/ropensci/cffr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248143023,"owners_count":21054694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["attribution","cff","citation","citation-file-format","citation-files","cran","metadata","r","r-cran","r-package","ropensci","rstats"],"created_at":"2024-10-30T04:07:50.478Z","updated_at":"2025-04-10T02:20:24.666Z","avatar_url":"https://github.com/ropensci.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput: github_document\nbibliography: inst/REFERENCES.bib\nlink-citations: yes\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  fig.path = \"man/figures/README-\",\n  out.width = \"100%\"\n)\n```\n\n# cffr \u003ca href=\"https://docs.ropensci.org/cffr/\"\u003e\u003cimg src=\"man/figures/logo.png\" alt=\"cffr website\" align=\"right\" height=\"139\"/\u003e\u003c/a\u003e\n\n\u003c!-- badges: start --\u003e\n\n[![CRAN-status](https://www.r-pkg.org/badges/version/cffr)](https://CRAN.R-project.org/package=cffr)\n[![CRAN-results](https://badges.cranchecks.info/worst/cffr.svg)](https://cran.r-project.org/web/checks/check_results_cffr.html)\n[![Downloads](https://cranlogs.r-pkg.org/badges/grand-total/cffr?color=blue)](https://cran.r-project.org/package=cffr)\n[![R-CMD-check](https://github.com/ropensci/cffr/actions/workflows/check-full.yaml/badge.svg)](https://github.com/ropensci/cffr/actions/workflows/check-full.yaml)\n[![R-hub](https://github.com/ropensci/cffr/actions/workflows/rhub.yaml/badge.svg)](https://github.com/ropensci/cffr/actions/workflows/rhub.yaml)\n[![codecov](https://codecov.io/gh/ropensci/cffr/branch/main/graph/badge.svg?token=YRO3XL8RWK)](https://app.codecov.io/gh/ropensci/cffr)\n[![r-universe](https://ropensci.r-universe.dev/badges/cffr)](https://ropensci.r-universe.dev/cffr)\n[![CITATION-cff](https://github.com/ropensci/cffr/actions/workflows/cff-validator.yml/badge.svg)](https://github.com/ropensci/cffr/actions/workflows/cff-validator.yml)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.03900/status.svg)](https://doi.org/10.21105/joss.03900)\n[![Project Status: Active - The project has reached a stable, usable state and\nis being actively\ndeveloped.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n![GitHub code size in\nbytes](https://img.shields.io/github/languages/code-size/ropensci/cffr)\n[![peer-review](https://badges.ropensci.org/463_status.svg)](https://github.com/ropensci/software-review/issues/463)\n\n\u003c!-- badges: end --\u003e\n\n**cffr** provides utilities to generate, coerce, modify and validate\n`CITATION.cff` files automatically for **R** packages, as well as tools and\nexamples for working with .cff more generally.\n\n## What is a `CITATION.cff` file?\n\n[Citation File Format (CFF](https://citation-file-format.github.io/))\n[@druskat_citation_2021] (v1.2.0) are plain text files with human- and\nmachine-readable citation information for software (and datasets). Code\ndevelopers can include them in their repositories to let others know how to\ncorrectly cite their software.\n\nThis format is becoming popular within the software citation ecosystem. Recently\n[GitHub](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files),\n[Zenodo](https://citation-file-format.github.io/#/supported-by-zenodo-) and\n[Zotero](https://citation-file-format.github.io/#/supported-by-zotero-) have\nincluded full support of this citation format [@druskat_stephan_making_2021].\nGitHub support is of special interest:\n\n```{r echo=FALSE, out.width=\"400\", fig.align='center', fig.alt=\"Tweet of Nat Friedman about CFF files\"}\nknitr::include_graphics(\"vignettes/tweet-1.png\")\n```\n\n*--- Nat Friedman (\\@natfriedman) July 27, 2021*\n\nSee [Enhanced support for citations on\nGitHub](https://github.blog/news-insights/company-news/enhanced-support-citations-github/)\n[@smith2021] for more info.\n\n### Related projects\n\n[The CodeMeta Project](https://codemeta.github.io/) [@jones2017] creates a\nconcept vocabulary that can be used to standardize the exchange of software\nmetadata across repositories and organizations. One of the many uses of a\n`codemeta.json` file (created following the standards defined on The CodeMeta\nProject) is to provide citation metadata such as title, authors, publication\nyear, and venue [@fenner2021]. The packages **codemeta** [@codemeta] /\n**codemetar** [@codemetar2021] allows to generate `codemeta.json` files from R\npackages metadata.\n\n## The cffr package\n\n**cffr** maximizes the data extraction by using both the `DESCRIPTION` file and\nthe `CITATION` file (if present) of your package. Note that **cffr** works best\nif your package pass `R CMD check/devtools::check()`.\n\n```{r count_cffr, echo=FALSE, results='asis'}\ncat(\"\\n\")\ntoday \u003c- Sys.Date()\n# Try get the count of GitHub repos here\ntoken \u003c- (Sys.getenv(c(\"GITHUB_PAT\", \"GITHUB_TOKEN\")))\ntoken \u003c- token[!token %in% c(NA, NULL, \"\")][1]\nghtoken \u003c- paste(\"token\", token)\ntmpfile \u003c- tempfile(fileext = \".json\")\n# Get numbers of repos\napi_url \u003c- paste0(\n  \"https://api.github.com/search/code?q=cffr+extension:\",\n  \"cff+filename:CITATION\"\n)\nres \u003c- tryCatch(\n  download.file(api_url,\n    tmpfile,\n    quiet = TRUE,\n    headers = c(Authorization = ghtoken)\n  ),\n  warning = function(e) {\n    return(TRUE)\n  },\n  error = function(e) {\n    return(TRUE)\n  }\n)\n# If not successful\nif (isTRUE(res)) {\n  cat(paste0(\n    \"\\n\", \"See [some projects already using **cffr**]\",\n    \"(https://github.com/search?q=cffr%20path%3A**%2FCITATION.cff\u0026type=code)\",\n    \".\"\n  ))\n} else {\n  nreps \u003c- as.integer(jsonlite::read_json(tmpfile)$total_count)\n  cat(paste0(\n    \"As per \", today, \" there are at least \", nreps,\n    \" repos on GitHub using **cffr**. \", \"[Check them out here]\",\n    \"(https://github.com/search?q=cffr%20path%3A**%2FCITATION.\",\n    \"cff\u0026type=code).\"\n  ))\n}\ncat(\"\\n\")\n```\n\n### Installation\n\nInstall **cffr** from [CRAN](https://CRAN.R-project.org/package=cffr):\n\n```{r, eval=FALSE}\ninstall.packages(\"cffr\")\n```\n\nYou can install the developing version of **cffr** with:\n\n```{r, eval=FALSE}\nremotes::install_github(\"ropensci/cffr\")\n```\n\nAlternatively, you can install **cffr** using the\n[r-universe](https://ropensci.r-universe.dev/cffr):\n\n```{r, eval=FALSE}\n# Install cffr in R:\ninstall.packages(\"cffr\",\n  repos = c(\"https://ropensci.r-universe.dev\", \"https://cloud.r-project.org\")\n)\n```\n\n### Example\n\nBy default most often from within your package folder you'll simply run\n`cff_write()`, that creates a `cff` object, write it on a `CITATION.cff` file\nand validates it on a single command:\n\n```{r, eval=FALSE}\nlibrary(cffr)\n\n# For in-development packages\ncff_write()\n#\u003e\n#\u003e CITATION.cff generated\n#\u003e\n#\u003e cff_validate results-----\n#\u003e Congratulations! This .cff file is valid\n```\n\nHowever, **cffr** provides also custom print methods and mechanisms that allows\nyou to customize the `CITATION.cff` and integrate them in your workflows.\n\nThis is a basic example which shows you how to create a `cff` object (see `?cff`\nfor more info). In this case, we are creating a `cff` object from the metadata\nof the **rmarkdown** package:\n\n```{r }\nlibrary(cffr)\n\n# Example with an installed package\ntest \u003c- cff_create(\"rmarkdown\")\n```\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ccode\u003eCITATION.cff\u003c/code\u003e for \u003cstrong\u003ermarkdown\u003c/strong\u003e\u003c/summary\u003e\n\n```{r, echo=FALSE, comment=\"\"}\ntest\n```\n\n\u003c/details\u003e\n\n\u003cp\u003e\n\nWe can validate the result using `cff_validate()`:\n\n```{r }\ncff_validate(test)\n```\n\nCheck the [docs](https://docs.ropensci.org/cffr//reference/index.html) and\n`vignette(\"cffr\", package = \"cffr\")` to learn how to work with `cff` objects.\n\n### Keep your `CITATION.cff` file up-to-date\n\n#### GitHub Actions\n\nThe easiest way for keeping you `CITATION.cff` file up-to-date is using GitHub\nActions. Use `cff_gha_update()`function to install a GitHub Action that would\nupdate your `CITATION.cff` file on the following events:\n\n-   When you publish a new release of the package on your GitHub repo.\n-   Each time that you modify your DESCRIPTION or inst/CITATION files.\n-   The action can be run also manually.\n\n```{r, eval=FALSE}\ncff_gha_update()\n\n#\u003e Installing update-citation-cff.yaml on './.github/workflows'\n#\u003e Adding .github to .Rbuildignore\n```\n\nSee the example workflow file\n[here](https://github.com/ropensci/cffr/blob/main/.github/workflows/update-citation-cff.yaml).\n\n#### Git pre-commit hook [![Experimental](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental)\n\nYou can also use a [git pre-commit\nhook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#_committing_workflow_hooks):\n\n\u003e The `pre-commit` hook is run first, before you even type in a commit message.\n\u003e It's used to inspect the snapshot that's about to be committed, to see if\n\u003e you've forgotten something, to make sure tests run, or to examine whatever you\n\u003e need to inspect in the code. Exiting non-zero from this hook aborts the\n\u003e commit, although you can bypass it with `git commit --no-verify`.\n\nA specific pre-commit hook can be installed with `cff_git_hook_install()`. If\nyou want to use a pre-commit hook, please make sure you have the **testthat**\npackage installed.\n\n### Learn more\n\nCheck the following articles to learn more about **cffr**:\n\n-   [cffr: Create a CITATION.cff File for your R\n    Package](https://ropensci.org/blog/2021/11/23/cffr/)\n-   [How I Test cffr on (about) 2,000 Packages using GitHub Actions and\n    R-universe](https://ropensci.org/blog/2021/11/23/how-i-test-cffr/)\n\n## Related packages\n\n-   **citation** [@citation22] includes a function `r2cff` that creates a\n    `CITATION.cff` file (v1.1.0) using the information of your `DESCRIPTION`\n    file. It also provide minimal validity checks.\n-   **handlr** [@handlr]: Tool for converting among citation formats, including\n    `*.cff` files.\n-   **codemeta** [@codemeta] / **codemetar** [@codemetar2021] provides similar\n    solutions for creating `codemeta.json` file, another format for storing and\n    sharing software metadata.\n\n## Citation\n\nHernangómez, D., (2021). cffr: Generate Citation File Format Metadata for R\nPackages. Journal of Open Source Software, 6(67), 3900,\n\u003chttps://doi.org/10.21105/joss.03900\u003e\n\nA BibTeX entry for LaTeX users is:\n\n``` bibtex\n@article{hernangomez2021,\n    title        = {{cffr}: Generate Citation File Format Metadata for {R} Packages},\n    author       = {Diego Hernangómez},\n    year         = 2021,\n    journal      = {Journal of Open Source Software},\n    publisher    = {The Open Journal},\n    volume       = 6,\n    number       = 67,\n    pages        = 3900,\n    doi          = {10.21105/joss.03900},\n    url          = {https://doi.org/10.21105/joss.03900}\n}\n```\n\nYou can also use the [citation provided by\nGitHub](https://github.com/ropensci/cffr), that is generated from the\ninformation of a `CITATION.cff` created with **cffr**. See [About CITATION\nfiles](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files)\nfor more info.\n\n## References\n\n::: {#refs}\n:::\n\n[![footer](https://ropensci.org/public_images/github_footer.png)](https://ropensci.org)\n\n## Contributors\n\n\n\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\nAll contributions to this project are gratefully acknowledged using the [`allcontributors` package](https://github.com/ropensci/allcontributors) following the [allcontributors](https://allcontributors.org) specification. Contributions of any kind are welcome!\n\n### Code\n\n\u003ctable class=\"table allctb-table\" \u003e\n\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/dieghernan\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/25656809?v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/commits?author=dieghernan\"\u003edieghernan\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/dpprdan\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/1423562?v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/commits?author=dpprdan\"\u003edpprdan\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/table\u003e\n\n\n### Issue Authors\n\n\u003ctable class=\"table allctb-table\" \u003e\n\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/Bisaloo\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/10783929?u=38e3754466eaa200e20f0609709467b6331cdfbe\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3ABisaloo\"\u003eBisaloo\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/jeroen\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/216319?u=4825a007eee4f78466b5f833b9728547c74067b5\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Ajeroen\"\u003ejeroen\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/joelnitta\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/13459362?u=205e0d1ae66884c3b361a78dd6802cd10160b041\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Ajoelnitta\"\u003ejoelnitta\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/jeyabbalas\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/8127432?u=e8ff0eaf02a8f847532e8bde25629da0e4d611ff\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Ajeyabbalas\"\u003ejeyabbalas\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/aadler\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/5596401?v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Aaadler\"\u003eaadler\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/larnsce\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/18212549?u=9235b7a0b56b5611d81ca6e1d5bf3b6c39a0bfae\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Alarnsce\"\u003elarnsce\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/iembry\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/12459905?v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Aiembry\"\u003eiembry\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/IndrajeetPatil\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/11330453?u=f89d9c0da9d8524adbb956f6c4e12dbdd15bd785\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3AIndrajeetPatil\"\u003eIndrajeetPatil\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/roaldarbol\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/25629697?u=8e91d10edd9b07398d1c708ff22146cb8c4fc88a\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Aroaldarbol\"\u003eroaldarbol\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/nfrerebeau\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/33983845?u=1c25b820f07d8630b7f4b660fbeaff8896195750\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3Anfrerebeau\"\u003enfrerebeau\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/Pakillo\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/1597843?u=5b4252f6b618be5dccbf605480d6e1e5ef006544\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+author%3APakillo\"\u003ePakillo\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/table\u003e\n\n\n### Issue Contributors\n\n\u003ctable class=\"table allctb-table\" \u003e\n\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/arfon\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/4483?u=3141f3209860719936ae9424f51c40cfb9d1cbd6\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+commenter%3Aarfon\"\u003earfon\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/hainesr\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/143558?u=b10c7a4c311168b1f08aeaab84dc6f6b85f8233e\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+commenter%3Ahainesr\"\u003ehainesr\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/llrs\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/6818218?u=c0a96a5dc32b3035f057ee75a7679680363b1a89\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+commenter%3Allrs\"\u003ellrs\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/njtierney\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/6488485?u=3eacd57f61342d1c3cecd5c8ac741b1c4897e1de\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+commenter%3Anjtierney\"\u003enjtierney\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/zeileis\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/u/61125774?u=acdd5579c5dd3e1e0b109d8974b3a9db7bbc2385\u0026v=4\" width=\"100px;\" class=\"allctb-avatar\" alt=\"\"/\u003e\n\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/ropensci/cffr/issues?q=is%3Aissue+commenter%3Azeileis\"\u003ezeileis\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci%2Fcffr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fropensci%2Fcffr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci%2Fcffr/lists"}