From 39b8c83f28d5072d54e17411ce542cc5d22265b2 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:08:50 +0100 Subject: [PATCH 01/32] Minor improvements and fixes --- choose_license.qmd | 4 ++-- index.qmd | 2 +- intro.qmd | 10 +++++----- make_readme.qmd | 2 +- setup.qmd | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index 9f118b0..6bb7766 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -50,7 +50,7 @@ The licenses we discuss here mostly regard copyright. Therefore, recipients may Many boilerplate licenses are available to apply to your work. Which license is appropriate depends on several factors, including existing licenses in place and the type of work, but also your personal considerations. We strongly recommend to apply a _free/open_ license to your work, which means that the work "can be freely studied, applied, copied and/or modified, by anyone, for any purpose" [@Moller2015]. Importantly, this also means that others do not need to ask or notify the author and that they can use it for commercial purposes. By the choice of license, authors can, however, demand that they are credited, that the original license is indicated, that modifications are indicated, that derivative works are only shared under the same license, and that no further restrictions are imposed on the work. Software licenses may additionally require to make the source code available to everybody the software is shared with and often require to display the full text of the license upon usage. Because there are many free/open licenses available, the licenses discussed here only represent a recommended subset. ::: {.column-margin} -If you would like to choose a license not listed here, it should be appropriate for the type of work in question and be compatible with the dominant copyleft license in the respective community (see also @nte-silos). For software that's almost universally the (A)GPLv3 and for writing, image, audio, and video that's mostly the CC\ BY-SA\ 4.0. For data, no dominant copyleft license has emerged yet, so any of [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/), [CDLA\ Sharing\ 1.0](https://cdla.dev/sharing-1-0/), and CC\ BY-SA\ 4.0 are acceptable. +If you would like to choose a license not listed here, it should be appropriate for the type of work in question and be compatible with the dominant copyleft license in the respective community (see also @nte-silos). For software that's almost universally the (A)GPLv3 and for writing, image, audio, and video that's mostly the [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/). For data, no dominant copyleft license has emerged yet, so any of [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/), [CDLA\ Sharing\ 1.0](https://cdla.dev/sharing-1-0/), and [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) are acceptable. ::: ::: {#nte-terminology .callout-note collapse="true"} @@ -123,7 +123,7 @@ Flowchart for Choosing a License ::: {#nte-other-work-types .callout-note collapse="true"} #### Other Work Types -One should be cautious about the restrictions of licenses applied to the following types of works: +One should take special care when applying license to the following types of works: - __fonts:__ Copyleft licenses applied to fonts can be a special case: If a font is put under the license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/), any documents containing texts using that font will probably be derivative works and have to be put under the same license if shared. If the intent is that only derived fonts, if published, have to be put under the same license, the [SIL Open Font License\ 1.1](https://openfontlicense.org/) is an appropriate choice. Note, however, that it doesn't require attribution for usage. If no copyleft mechanism is intended, [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) also works for fonts. - __templates and LaTeX packages:__ If a template or, for this purpose, a LaTeX package, is licensed under a copyleft software license such as the [AGPLv3](https://choosealicense.com/licenses/agpl-3.0/), every work that is a derivative of the template or that uses the LaTeX package has to put under the same license, if shared [@Koppor2016]. And if a document contained source code covered by the GPLv3, the same license would also apply to the document [@MadHatter2022]. diff --git a/index.qmd b/index.qmd index e3b991e..380d531 100644 --- a/index.qmd +++ b/index.qmd @@ -19,7 +19,7 @@ In particular, we will assume you have installed [Git](https://git-scm.com/downl ::: {#nte-quarto-alternatives .callout-note collapse="true"} ## Alternatives to Quarto -Quarto is a tool to create reproducible documents, but not the only one. You may also use [RMarkdown](https://rmarkdown.rstudio.com/), [Jupyter Book](https://jupyterbook.org/), [Stencila](https://stencila.io/), [Curvenote](https://curvenote.dev/), [showyourwork!](https://show-your.work/), [Org Mode](https://orgmode.org/), [StatTag](https://sites.northwestern.edu/stattag/), or one of the countless others. +Quarto is a tool to render dynamic documents, but not the only one. You may also use [`rmarkdown`](https://rmarkdown.rstudio.com/), [Jupyter Book](https://jupyterbook.org/), [Stencila](https://stencila.io/), [Curvenote](https://curvenote.dev/), [showyourwork!](https://show-your.work/), [Org Mode](https://orgmode.org/), [StatTag](https://sites.northwestern.edu/stattag/), or one of the countless others. ::: We will start with creating a simple report which incorporates R code. Then, we will focus on what is required to publish your work: diff --git a/intro.qmd b/intro.qmd index 7ca1c20..fe5a93f 100644 --- a/intro.qmd +++ b/intro.qmd @@ -5,15 +5,15 @@ lang: en In the following, we will provide a brief introduction to the concept of _research compendia_. -## The importance of sharing +## The Importance of Sharing -Suppose you are reading an article about a new imaging method to turn seismological data into subsurface images. The article describes the ideas that went into developing this method and presents a few examples to illustrate its superiority over previous approaches. You got interested and would like to apply this method to your own data. However, with only the article available, it could take months to come up with a working solution, if possible at all. This situation has been put aptly by @Buckheit1995, distilling an idea by Jon Claerbout: +Suppose you are reading an article about a new imaging method to turn seismological data into subsurface images. The article describes the ideas that went into developing this method and presents a few examples to illustrate its superiority over previous approaches. You got interested and would like to apply this method to your own data. However, with only the article available, it could take months to come up with a working solution, if possible at all. This situation has been put aptly by @Buckheit1995, distilling an idea by geophysicist Jon Claerbout: > "An article about computational science in a scientific publication is not the scholarship itself, it is merely advertising of the scholarship. The actual scholarship is the complete software development environment and the complete set of instructions which generated the figures." Even for articles that are use computers to apply existing methods (rather than reporting on a new method), sharing the source code and being transparent about the computational environment is imperative to making research reproducible [@Ince2012]. By reproducibility, we mean "obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis" [@NASEM2019, p. 46]. -## Linking results and computations +## Linking Results and Computations This tutorial not only covers sharing the source code, but also connecting it to the results through the creation of dynamic documents. Rather than manually copying numerical results, figures, or tables, they are inserted automatically upon rendering of the article. Dynamic documents bundled together with any necessary data and auxiliary software are called a [research compendium](https://research-compendium.science/) [@Gentleman2007]. @@ -21,9 +21,9 @@ The practice to interleave narrative text with code has its roots in the paradig Linking results with their computations has benefits for authors and readers. For the author, articles always contain the most recent version of figures, as they are updated automatically when the computation changes. For the readers, it enables understanding exactly how a particular result was obtained if they get access to the underlying research compendium. -## Best practices +## Best Practices -When creating the research compendium, there are a few things to consider [by @Arguillas2022, licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/)]: +When creating a research compendium, there are a few things to consider [by @Arguillas2022, licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/)]: > __Does the research compendium contain everything needed to reproduce a predefined outcome in an organized and parsimonious way?__ > diff --git a/make_readme.qmd b/make_readme.qmd index 1741550..dac1b67 100644 --- a/make_readme.qmd +++ b/make_readme.qmd @@ -4,7 +4,7 @@ lang: en engine: knitr --- -## What does a README contain? +## What Does a README Contain? Once you have prepared your project and settled on a license, it is time to add a final touch. Imagine returning to your project in five years, having forgotten most of the details of what you did exactly. What would be useful to know in order to quickly understand what is going on in the project? This is what needs to be described in the README. While you could just start writing along, most READMEs have some sections in common which we describe below. diff --git a/setup.qmd b/setup.qmd index 93e6ae0..e8edc79 100644 --- a/setup.qmd +++ b/setup.qmd @@ -67,7 +67,7 @@ git init git checkout -b main ``` -Then, one can open an R session, by simply typing `R` into the terminal. Next, make sure that `getwd()` indicates that the working directory is `code-publishing-exercise`. If not, set it using `setwd("code-publishing-exercise")`. Then, initialize `renv`: +Then, one can open an R session by simply typing `R` into the terminal. Next, make sure that `getwd()` indicates that the working directory is `code-publishing-exercise`. If not, set it using `setwd("code-publishing-exercise")`. Then, initialize `renv`: ```{.r filename="Console"} renv::init() @@ -317,7 +317,7 @@ quarto add --no-prompt wjschne/apaquarto ``` ::: {#tip-apaquarto .callout-tip} -#### Not a psychologist? +#### Not a Psychologist? If you are not a psychologist, you can also skip installing `apaquarto`. If you installed it by accident, run `quarto remove wjschne/apaquarto`. @@ -348,7 +348,7 @@ quarto render Manuscript.qmd This should create a PDF file called `Manuscript.pdf` in your project folder. ::: {#tip-update-quarto .callout-tip} -If the PDF file cannot be created, try updating Quarto. It comes bundled with RStudio, however `apaquarto` sometimes requires more recent versions. +If the PDF file cannot be created, try updating Quarto. It comes bundled with RStudio, however, `apaquarto` sometimes requires more recent versions. ::: With the code being added, one can use `renv` again to view and record the new packages: From 0953262fa80de0b5dc79cdc55b9820403a3306f6 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:09:27 +0100 Subject: [PATCH 02/32] Use appropriate callouts --- choose_license.qmd | 2 +- setup.qmd | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index 6bb7766..47ad2f0 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -35,7 +35,7 @@ A license is a legal document that regulates what _others_ are allowed to do wit For the purpose of this tutorial, by _license_ we mean _copyright license_. ::: -::: {#cau-exclusive-rights .callout-caution} +::: {#wrn-exclusive-rights .callout-warning} ### Giving Publishers Exclusive Rights When you have your article published under a Creative Commons license, some publishers still demand an exclusive publishing and distribution license or a copyright assignment. This would give them more rights than the readers of the article have through the chosen Creative Commons license [@Rumsey2022] and exceeds by far what is necessary to make publication possible [@Suber2022]. Consequently, authors should oppose this practice and grant publishers the same rights that every other reader of the article has. If your chosen publisher insists on an exclusive license, you may at least retain the copyright for your figures -- follow the guide "Retaining copyright for figures in academic publications to allow easy citation and reuse" by @Elson2016 to learn how to do that. diff --git a/setup.qmd b/setup.qmd index e8edc79..bf382dd 100644 --- a/setup.qmd +++ b/setup.qmd @@ -122,7 +122,7 @@ You can now download the data set we have prepared for you and put into your pro The data set is from the package [`palmerpenguins`](https://allisonhorst.github.io/palmerpenguins/) and contains the recorded bill lengths and sex of penguins living on three islands in the Palmer Archipelago, Antarctica. It was made available under the license [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). -::: {#wrn-legal-restrictions .callout-warning} +::: {#imp-legal-restrictions .callout-important} ### Consider Legal Restrictions Before Sharing Everything you put into the project folder will be shared publicly. For reasons of reproducibility, this should include the data you analyze. Of course, you should only share them to the extent you are allowed to, taking into account: @@ -291,7 +291,7 @@ In order to have some code which you can practice to share, we have prepared a s The manuscript explores differences in bill length between male and female penguins, feel free to read through it. -::: {#wrn-take-copyright-seriously .callout-warning} +::: {#imp-take-copyright-seriously .callout-important} ### Take Copyright Seriously When you include work by others in your project -- especially if you intend to make it available publicly --, make sure you have the necessary rights to do so. Only build on existing work for which you are given an express grant of relevant rights. How do you know you are allowed to copy, edit, and share the two files linked above? From a6520213dceead166b56f85118fa5b6add4ca837 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:10:30 +0100 Subject: [PATCH 03/32] Fix diagram --- _quarto.yml | 2 ++ choose_license.qmd | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/_quarto.yml b/_quarto.yml index 7a10b8e..730b304 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -53,6 +53,8 @@ format: fontsize: 13pt grid: sidebar-width: 300px + mermaid: + theme: neutral csl: apa.csl bibliography: literature.bib diff --git a/choose_license.qmd b/choose_license.qmd index 47ad2f0..ba3ca7b 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -1,10 +1,6 @@ --- title: "Choose a License" lang: en -format: - html: - mermaid: - theme: neutral engine: knitr --- @@ -380,7 +376,7 @@ flowchart TB end subgraph "License for combination of data (database)" - choose_license --> switch_license["Depending on content license"] + choose_license --> switch_license["Depending on
content license
"] use_existing_license_content --> switch_license cc0_content_metadata --> cc0_db["CC0 1.0"] From b9a9e70d08ad17f5e241e4679ec96fa19e3a2947 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:11:36 +0100 Subject: [PATCH 04/32] Fix citation --- literature.bib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/literature.bib b/literature.bib index c93fd9e..e1a10d7 100644 --- a/literature.bib +++ b/literature.bib @@ -652,7 +652,7 @@ @inproceedings{Kluyver2016 booktitle = {Positioning and Power in Academic Publishing: Players, Agents and Agendas}, editor = {Fernando Loizides and Birgit Scmidt}, title = {Jupyter Notebooks – a publishing format for reproducible computational workflows}, - author = {Thomas Kluyver and Benjamin Ragan-Kelley and Fernando P{\'e}rez and Brian Granger and Matthias Bussonnier and Jonathan Frederic and Kyle Kelley and Jessica Hamrick and Jason Grout and Sylvain Corlay and Paul Ivanov and Dami{\'a}n Avila and Safia Abdalla and Carol Willing and Jupyter development team}, + author = {Thomas Kluyver and Benjamin Ragan-Kelley and Fernando P{\'e}rez and Brian Granger and Matthias Bussonnier and Jonathan Frederic and Kyle Kelley and Jessica Hamrick and Jason Grout and Sylvain Corlay and Paul Ivanov and Dami{\'a}n Avila and Safia Abdalla and Carol Willing and {Jupyter development team}}, publisher = {IOS Press}, address = {Netherlands}, year = {2016}, From c9a971f124ca894dcb76b966b686f3414a060ae1 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:12:47 +0100 Subject: [PATCH 05/32] Explain output exception --- choose_license.qmd | 2 +- literature.bib | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/choose_license.qmd b/choose_license.qmd index ba3ca7b..9b5292e 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -139,7 +139,7 @@ Note, however, that the copyleft licenses we discuss here do not mandate sharing ::: {#tip-license-r .callout-tip} #### Projects Involving R Code -In most cases, the output of software, like images or tables, does not depend on the software's license. Therefore, if you use an R package under a copyleft license to create a figure, you are likely the copyright owner. However, if the output is based on data, it can be considered a derivative work and the license of the data also applies. For example, maps may be considered as a derivative of the geographic data they are based on. +In most cases, the output of software, like images or tables, does not depend on the software's license.^[The exception is when the software is part of the output [see @apsillers2019].] Therefore, if you use an R package under a copyleft license to create a figure, you are likely the copyright owner. However, if the output is based on data, it can be considered a derivative work of the data and the license of the data also applies. For example, maps may be considered as a derivative of the geographic data they are based on. It is disputed whether software that uses an R package under AGPLv3 or GPLv3^[a variant of the AGPLv3 that does not cover software running as a service] can only be published under a GPL-compatible license -- or even has to be published under the same license. Posit, the company behind RStudio, does not believe that to be the case [see also @Wickham2023PackagesLicense]. diff --git a/literature.bib b/literature.bib index e1a10d7..bd7e0d6 100644 --- a/literature.bib +++ b/literature.bib @@ -659,4 +659,13 @@ @inproceedings{Kluyver2016 pages = {87--90}, doi = {10.3233/978-1-61499-649-1-87}, abstract = {It is increasingly necessary for researchers in all fields to write computer code, and in order to reproduce research results, it is important that this code is published. We present Jupyter notebooks, a document format for publishing code, results and explanations in a form that is both readable and executable. We discuss various tools and use cases for notebook documents.} +} +@online{apsillers2019, + title = {Answer to "Does "the {GPL} doesn't cover the output of a program" also apply if the output is source code?"}, + url = {https://opensource.stackexchange.com/a/8060/34940}, + shorttitle = {Answer to "Does "the {GPL} doesn't cover the output of a program" also apply if the output is source code?}, + titleaddon = {Open Source Stack Exchange}, + author = {apsillers}, + urldate = {2024-11-28}, + date = {2019-03-11}, } \ No newline at end of file From ad45dfd94e27d15b6c002cc50eeadcf019da5d84 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:13:05 +0100 Subject: [PATCH 06/32] Fix links --- choose_license.qmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index 9b5292e..7b4c713 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -122,9 +122,9 @@ Flowchart for Choosing a License One should take special care when applying license to the following types of works: - __fonts:__ Copyleft licenses applied to fonts can be a special case: If a font is put under the license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/), any documents containing texts using that font will probably be derivative works and have to be put under the same license if shared. If the intent is that only derived fonts, if published, have to be put under the same license, the [SIL Open Font License\ 1.1](https://openfontlicense.org/) is an appropriate choice. Note, however, that it doesn't require attribution for usage. If no copyleft mechanism is intended, [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) also works for fonts. -- __templates and LaTeX packages:__ If a template or, for this purpose, a LaTeX package, is licensed under a copyleft software license such as the [AGPLv3](https://choosealicense.com/licenses/agpl-3.0/), every work that is a derivative of the template or that uses the LaTeX package has to put under the same license, if shared [@Koppor2016]. And if a document contained source code covered by the GPLv3, the same license would also apply to the document [@MadHatter2022]. -- __database content:__ If the work produced from a database (the "output") is a derivative of the content in the database, the output is subject to the restrictions laid out in the license. For example, if geospatial data were to be licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/), all maps produced from the data would likely need to fulfill this license's obligation for unrestricted access (its Anti-DRM provision) if shared [see @Poole2017]. Similarly, following an example from @Matt2009, if one were to choose the copyleft license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) for this purpose, any map that is a derivative of the data would also need to licensed under CC\ BY-SA\ 4.0 (or a compatible license) if shared. If the intention is to only have [derivative databases](https://osmfoundation.org/wiki/Licence/Community_Guidelines/Produced_Work_-_Guideline) under the same license, one might want to choose the [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/) for the database, as it was specifically designed not to apply to works produced from the data in the database. Otherwise [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) is an excellent choice for data. -- __works in the public domain__: If a work is already in the public domain, it should be marked using the [PDM 1.0](https://creativecommons.org/publicdomain/mark/1.0/), rather than applying a waiver such as the [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) (or even another license). +- __templates and TeX packages:__ If a template or, for this purpose, a $\TeX$ package, is licensed under a copyleft license such as the (A)GPLv3, every work that is a derivative of the template or that uses the $\TeX$ package has to put under the same license, if shared [@Koppor2016]. And if a document contained source code covered by the (A)GPLv3, the same license would also apply to the document [@MadHatter2022]. +- __database content:__ If the work produced from a database (the "output") is a derivative of the content in the database, the output is subject to the restrictions laid out in the license. For example, if geospatial data were to be licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/), all maps produced from the data would likely need to fulfill this license's obligation for unrestricted access (its Anti-DRM provision) if shared [see @Poole2017]. Similarly, following an example from @Matt2009, if one were to choose the copyleft license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) for this purpose, any map that is a derivative of the data would also need to be licensed under [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) (or a compatible license) if shared. If the intention is to only have [derivative databases](https://osmfoundation.org/wiki/Licence/Community_Guidelines/Produced_Work_-_Guideline) under the same license, one might want to choose the [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/) for the database, as it was specifically designed not to apply to works produced from the data in the database. Otherwise [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) is an excellent choice for data. +- __works in the public domain__: If a work is already in the public domain, it should be marked using the [PDM 1.0](https://creativecommons.org/publicdomain/mark/1.0/), rather than applying a waiver such as the [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) (or another license). ::: ### Copyleft? From 4285d874f2d6182ece20d4081a44b026bab114f9 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:14:04 +0100 Subject: [PATCH 07/32] Add citation for Fowler quote --- literature.bib | 7 +++++++ setup.qmd | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/literature.bib b/literature.bib index bd7e0d6..967be6c 100644 --- a/literature.bib +++ b/literature.bib @@ -668,4 +668,11 @@ @online{apsillers2019 author = {apsillers}, urldate = {2024-11-28}, date = {2019-03-11}, +} +@book{Fowler1999, + title = {Refactoring: Improving the Design of Existing Code}, + shorttitle = {Refactoring}, + publisher = {Addison-Wesley}, + author = {Fowler, Martin and Beck, Kent and Opdyke, William and Roberts, Don}, + date = {1999}, } \ No newline at end of file diff --git a/setup.qmd b/setup.qmd index bf382dd..c2fe1c9 100644 --- a/setup.qmd +++ b/setup.qmd @@ -425,7 +425,7 @@ This is only a brief summary and there is much more to be learned about coding p > "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." > -> --- Martin Fowler, British software engineer +> --- @Fowler1999, p. 15 ## The Last Mile From 0818e56d2f83c665aa494977ab7350bd9cbfb2db Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:14:40 +0100 Subject: [PATCH 08/32] Address citation of software and data --- literature.bib | 38 ++++++++++++++++++++++++++++++++++++++ setup.qmd | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/literature.bib b/literature.bib index 967be6c..ee83067 100644 --- a/literature.bib +++ b/literature.bib @@ -675,4 +675,42 @@ @book{Fowler1999 publisher = {Addison-Wesley}, author = {Fowler, Martin and Beck, Kent and Opdyke, William and Roberts, Don}, date = {1999}, +} +@misc{Brown2016, + author = {Brown, Louise and + Crusoe, Michael R. and + Miļajevs, Dmitrijs and + Romanowska, Iza}, + title = {{Should you cite this particular piece of software?}}, + year = 2016, + doi = {10.5281/zenodo.2559142}, + url = {https://mr-c.github.io/shouldacite/}, + howpublished = {\url{https://mr-c.github.io/shouldacite/}} +} +@article{Starr2015, + title = {Achieving human and machine accessibility of cited data in scholarly publications}, + volume = {1}, + issn = {2376-5992}, + doi = {10.7717/peerj-cs.1}, + pages = {e1}, + journaltitle = {{PeerJ} Computer Science}, + author = {Starr, Joan and Castro, Eleni and Crosas, Mercè and Dumontier, Michel and Downs, Robert R. and Duerr, Ruth and Haak, Laurel L. and Haendel, Melissa and Herman, Ivan and Hodson, Simon and Hourclé, Joe and Kratz, John Ernest and Lin, Jennifer and Nielsen, Lars Holm and Nurnberger, Amy and Proell, Stefan and Rauber, Andreas and Sacchi, Simone and Smith, Arthur and Taylor, Mike and Clark, Tim}, + urldate = {2024-11-28}, + date = {2015-05-27}, + langid = {english}, +} +@article{Smith2016, + title = {Software citation principles}, + volume = {2}, + rights = {http://creativecommons.org/licenses/by/4.0/}, + issn = {2376-5992}, + url = {https://peerj.com/articles/cs-86}, + doi = {10.7717/peerj-cs.86}, + abstract = {Software is a critical part of modern research and yet there is little support across the scholarly ecosystem for its acknowledgement and citation. Inspired by the activities of the {FORCE}11 working group focused on data citation, this document summarizes the recommendations of the {FORCE}11 Software Citation Working Group and its activities between June 2015 and April 2016. Based on a review of existing community practices, the goal of the working group was to produce a consolidated set of citation principles that may encourage broad adoption of a consistent policy for software citation across disciplines and venues. Our work is presented here as a set of software citation principles, a discussion of the motivations for developing the principles, reviews of existing community practice, and a discussion of the requirements these principles would place upon different stakeholders. Working examples and possible technical solutions for how these principles can be implemented will be discussed in a separate paper.}, + pages = {e86}, + journaltitle = {{PeerJ} Computer Science}, + author = {Smith, Arfon M. and Katz, Daniel S. and Niemeyer, Kyle E. and {FORCE11 Software Citation Working Group}}, + urldate = {2024-11-28}, + date = {2016-09-19}, + langid = {english}, } \ No newline at end of file diff --git a/setup.qmd b/setup.qmd index c2fe1c9..6b43cc8 100644 --- a/setup.qmd +++ b/setup.qmd @@ -427,6 +427,51 @@ This is only a brief summary and there is much more to be learned about coding p > > --- @Fowler1999, p. 15 +## Citing Software and Data + +If you rely on software or data by others in your research, the question arises whether and how to cite it in your publications. Put simply, all data relied upon should be cited to allow for precise identification and access. From the "eight core principles of data citation" [@Starr2015, licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/)]: + +> **Principle 1 – Importance**: "Data should be considered legitimate, citable products of research. Data citations should be accorded the same importance in the scholarly record as citations of other research objects, such as publications." +> +> **Principle 3 – Evidence**: "In scholarly literature, whenever and wherever a claim relies upon data, the corresponding data should be cited." +> +> **Principle 5 – Access**: "Data citations should facilitate access to the data themselves and to such associated metadata, documentation, code, and other materials, as are necessary for both humans and machines to make informed use of the referenced data." +> +> **Principle 7 – Specificity and Verifiability**: "Data citations should facilitate identification of, access to, and verification of the specific data that support a claim. Citations or citation metadata should include information about provenance and fixity sufficient to facilitate verifying that the specific time slice, version and/or granular portion of data retrieved subsequently is the same as was originally cited." + +When it comes to software, the answer is a little more nuanced – you can consult @fig-software-citation for advice whether to cite it. As with data, citations should allow for exact identification and access. From the "software citation principles" [@Smith2016]: + +> **1\. Importance**: Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers. +> +> **5\. Accessibility**: Software citations should facilitate access to the software itself and to its associated metadata, documentation, data, and other materials necessary for both humans and machines to make informed use of the referenced software. +> +> **6\. Specificity**: Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms. + +To help with generating the citation, you can use the [CiteAs](https://citeas.org/) service. + +::: {#fig-software-citation} +```{mermaid} +flowchart TB + asks_for_citation("Does the software
ask you to cite it?") + critical_or_unique_contribution("Did the software
play a critical part
in or contributed
something unique
to your research?") + manipulate("Did the software
manipulate or create
your data, software,
or other outputs?") + relies_on_credit("Do the authors of
the software rely
on academic credit
for funding?") + cite[Cite!] + nocite[Don't cite!] + + asks_for_citation --"Yes"--> cite + asks_for_citation --"No"--> critical_or_unique_contribution + critical_or_unique_contribution --"Yes"--> cite + critical_or_unique_contribution --"No"--> manipulate + manipulate --"Yes"--> cite + manipulate --"No"--> relies_on_credit + relies_on_credit --"Yes"--> cite + relies_on_credit --"No"--> nocite +``` + +"Should I cite the software?" by @Brown2016 licensed under [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/). Simplified from original. +::: + ## The Last Mile `renv` only records the versions of R packages and of R itself. This means that potential system dependencies of R packages and other tools utilized in the project are not documented anywhere, including Quarto.^[As of August 2024, a proposal to record the version of Quarto has not been implemented, see [rstudio/renv#1143](https://github.com/rstudio/renv/issues/1143).] We will manually write them down when [creating a README](make_readme.qmd). For now, however, there is one simple step you can take to record the version of Quarto (and a few other dependencies). Do run the following: From 6ff17ea882858f225c3998bceb9683aab6b74209 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:23:39 +0100 Subject: [PATCH 09/32] Add total number of software citation principles --- setup.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.qmd b/setup.qmd index 6b43cc8..503f40e 100644 --- a/setup.qmd +++ b/setup.qmd @@ -439,7 +439,7 @@ If you rely on software or data by others in your research, the question arises > > **Principle 7 – Specificity and Verifiability**: "Data citations should facilitate identification of, access to, and verification of the specific data that support a claim. Citations or citation metadata should include information about provenance and fixity sufficient to facilitate verifying that the specific time slice, version and/or granular portion of data retrieved subsequently is the same as was originally cited." -When it comes to software, the answer is a little more nuanced – you can consult @fig-software-citation for advice whether to cite it. As with data, citations should allow for exact identification and access. From the "software citation principles" [@Smith2016]: +When it comes to software, the answer is a little more nuanced – you can consult @fig-software-citation for advice whether to cite it. As with data, citations should allow for exact identification and access. From the six "software citation principles" by @Smith2016: > **1\. Importance**: Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers. > From 324669e1fe239cc9bff0a1b30156bf9d1d40c1b8 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 28 Nov 2024 18:31:27 +0100 Subject: [PATCH 10/32] Mention CC BY 4.0 license for software citation principles --- setup.qmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.qmd b/setup.qmd index 503f40e..66b72b8 100644 --- a/setup.qmd +++ b/setup.qmd @@ -429,7 +429,7 @@ This is only a brief summary and there is much more to be learned about coding p ## Citing Software and Data -If you rely on software or data by others in your research, the question arises whether and how to cite it in your publications. Put simply, all data relied upon should be cited to allow for precise identification and access. From the "eight core principles of data citation" [@Starr2015, licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/)]: +If you rely on software or data by others in your research, the question arises whether and how to cite it in your publications. Put simply, all data relied upon should be cited to allow for precise identification and access. From the "eight core principles of data citation" by @Starr2015, licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/): > **Principle 1 – Importance**: "Data should be considered legitimate, citable products of research. Data citations should be accorded the same importance in the scholarly record as citations of other research objects, such as publications." > @@ -439,7 +439,7 @@ If you rely on software or data by others in your research, the question arises > > **Principle 7 – Specificity and Verifiability**: "Data citations should facilitate identification of, access to, and verification of the specific data that support a claim. Citations or citation metadata should include information about provenance and fixity sufficient to facilitate verifying that the specific time slice, version and/or granular portion of data retrieved subsequently is the same as was originally cited." -When it comes to software, the answer is a little more nuanced – you can consult @fig-software-citation for advice whether to cite it. As with data, citations should allow for exact identification and access. From the six "software citation principles" by @Smith2016: +When it comes to software, the answer is a little more nuanced – you can consult @fig-software-citation for advice whether to cite it. As with data, citations should allow for exact identification and access. From the six "software citation principles" by @Smith2016, licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/): > **1\. Importance**: Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers. > @@ -447,7 +447,7 @@ When it comes to software, the answer is a little more nuanced – you can consu > > **6\. Specificity**: Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms. -To help with generating the citation, you can use the [CiteAs](https://citeas.org/) service. +To help with generating the citation, you can use the [CiteAs service](https://citeas.org/). ::: {#fig-software-citation} ```{mermaid} From 5c86ab1b22234dafb524aeebcfaac509eff54187 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 29 Nov 2024 02:15:11 +0100 Subject: [PATCH 11/32] Use global language and tidy _quarto.yml --- _quarto.yml | 6 +----- archive.qmd | 1 - choose_license.qmd | 1 - intro.qmd | 1 - make_readme.qmd | 1 - setup.qmd | 1 - 6 files changed, 1 insertion(+), 10 deletions(-) diff --git a/_quarto.yml b/_quarto.yml index 730b304..77ac279 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -15,8 +15,6 @@ website: favicon: images/LMU-OSC_favicon.jpg margin-header: | ![](/images/LMU-OSC_logo.jpg){width="175"} - - navbar: right: - about.qmd @@ -32,8 +30,6 @@ website: url: https://github.com/lmu-osc/code-publishing/issues - icon: house-heart url: https://www.osc.uni-muenchen.de/ - - sidebar: contents: - intro.qmd @@ -41,7 +37,6 @@ website: - choose_license.qmd - make_readme.qmd - archive.qmd - format: html: @@ -58,3 +53,4 @@ format: csl: apa.csl bibliography: literature.bib +lang: en-US \ No newline at end of file diff --git a/archive.qmd b/archive.qmd index f6b8b08..31537e9 100644 --- a/archive.qmd +++ b/archive.qmd @@ -1,6 +1,5 @@ --- title: "Archive Your Project" -lang: "en" --- ## Where to Deposit Software diff --git a/choose_license.qmd b/choose_license.qmd index 7b4c713..fe6340e 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -1,6 +1,5 @@ --- title: "Choose a License" -lang: en engine: knitr --- diff --git a/intro.qmd b/intro.qmd index fe5a93f..72592b9 100644 --- a/intro.qmd +++ b/intro.qmd @@ -1,6 +1,5 @@ --- title: "Introduction" -lang: en --- In the following, we will provide a brief introduction to the concept of _research compendia_. diff --git a/make_readme.qmd b/make_readme.qmd index dac1b67..63e077b 100644 --- a/make_readme.qmd +++ b/make_readme.qmd @@ -1,6 +1,5 @@ --- title: "Make a README" -lang: en engine: knitr --- diff --git a/setup.qmd b/setup.qmd index 66b72b8..c8adfc9 100644 --- a/setup.qmd +++ b/setup.qmd @@ -1,6 +1,5 @@ --- title: "Project Setup" -lang: en engine: knitr --- From dc36db81729b53204e68a02cdc6518b2ec8db080 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 29 Nov 2024 02:16:25 +0100 Subject: [PATCH 12/32] Fix German literature entry --- literature.bib | 1 + 1 file changed, 1 insertion(+) diff --git a/literature.bib b/literature.bib index ee83067..8debe97 100644 --- a/literature.bib +++ b/literature.bib @@ -382,6 +382,7 @@ @book{Grassmuck2004 author = {Grassmuck, Volker}, urldate = {2024-09-03}, date = {2004}, + langid = {de}, } @collection{Kreutzer2014, From 0040c21cd6f65baa6464705b9806acfbb2345c77 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 29 Nov 2024 02:17:00 +0100 Subject: [PATCH 13/32] Add Console notice --- setup.qmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.qmd b/setup.qmd index c8adfc9..d51a045 100644 --- a/setup.qmd +++ b/setup.qmd @@ -196,7 +196,7 @@ A human-readable data dictionary is necessary for making one's research reproduc This example demonstrates how the title and description of the data set, the description of the variables and their possible values are stored in a machine-readable way. -```r +```{.r filename="Console"} table_info <- c( title = "penguins dataset", description = "Size measurements for adult foraging penguins near Palmer Station, Antarctica" @@ -223,7 +223,7 @@ Generally, metadata are either stored embedded into the data or externally, for Specifically, one can use the R package [`frictionless`](https://docs.ropensci.org/frictionless/) to create a _schema_ which describes the structure of the data.^[In June 2024, [version 2](https://datapackage.org/) of the frictionless data standard has been released. As of November 2024, the R package `frictionless` only supports the first version, though support for v2 is [planned](https://github.com/frictionlessdata/frictionless-r/labels/datapackage%3Av2).] For the purpose of the following code, it is just a nested list that we edit to include our own information. We also explicitly record in the schema that missing values are stored in the data file as `NA` and that the data are licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). Finally, the package is used to create a metadata file that contains the schema. -```r +```{.r filename="Console"} # Read data and create schema dat_filename <- "Data.csv" dat <- read.csv(dat_filename) From ab5248a330f3227c6b468506558ee711f97f3ea2 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 29 Nov 2024 02:17:38 +0100 Subject: [PATCH 14/32] Improve license statement on about page --- about.qmd | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/about.qmd b/about.qmd index 8298ca1..41d70a0 100644 --- a/about.qmd +++ b/about.qmd @@ -40,9 +40,12 @@ sessioninfo::session_info() ## License and Disclaimer -Where not indicated otherwise, the material in this tutorial is licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/). None of the discussion in this tutorial constitutes legal advice. +Except where noted otherwise, the material in this tutorial is licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/). None of the discussion in this tutorial constitutes legal advice. -Any screenshots of [RStudio](https://github.com/rstudio/rstudio) are released under the [GNU Affero General Public License v3](https://www.gnu.org/licenses/gpl-3.0.html). +The screenshots of the [RStudio IDE](https://github.com/rstudio/rstudio) are available under the [GNU Affero General Public License v3](https://www.gnu.org/licenses/gpl-3.0.html). + +::: {.nte-agplv3 .callout-note collapse="true"} +### GNU Affero General Public License v3 ```{.txt .code-overflow-wrap} Copyright (C) 2024 Posit Software, PBC @@ -53,6 +56,7 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY You should have received a copy of the GNU Affero General Public License along with this program. If not, see . ``` +::: ## Funding From 8c948d720625a12ec312dfe4f522cbd208e86100 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 29 Nov 2024 02:19:21 +0100 Subject: [PATCH 15/32] Elaborate on citing code and data --- make_readme.qmd | 16 ++++++--- setup.qmd | 88 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 95 insertions(+), 9 deletions(-) diff --git a/make_readme.qmd b/make_readme.qmd index 63e077b..d98388f 100644 --- a/make_readme.qmd +++ b/make_readme.qmd @@ -25,7 +25,7 @@ Visuals Installation/Dependencies -: What steps need to be taken to run the project? What software needs to be installed? Mention all dependencies here that are not explicitly managed by `renv`, such as the system dependencies of R packages as well as the version of Quarto. An R package's system dependency is any additional software that you need to install on your computer in order to use a particular R package. For example, the R package [`reticulate`](https://rstudio.github.io/reticulate/) allows to run Python code from within R. However, in order to actually use it, one has to additionally install Python itself as it does not come together with `reticulate` -- rather, it is a system dependency. See @sec-dependencies for additional information. +: What steps need to be taken to run the project? What software needs to be installed? R itself and the R packages are already documented as this project uses `renv`. Therefore you can focus on all other dependencies, such as the system dependencies of R packages as well as the version of Quarto.^[As of August 2024, a proposal for `renv` to record the version of Quarto has not been implemented, see [rstudio/renv#1143](https://github.com/rstudio/renv/issues/1143).] Also, don't forget to mention software that you have used for any manual steps. See @sec-dependencies for additional information. Usage @@ -53,10 +53,16 @@ License ## Installation/Dependencies {#sec-dependencies} -An overview over the system dependencies of R packages can be created using the function `pak::pkg_sysreqs()`. In combination with `renv`, we can obtain the system dependencies of all R packages in the current project: +An overview over the system dependencies of R packages can be created using the function `pak::pkg_sysreqs()`. In combination with `renv`, we can obtain the system dependencies of all R packages the current project directly depends on: ```{.r filename="Console"} -pak::pkg_sysreqs(renv::dependencies()$Package) +# First, install pak +renv::install("pak") + +# Then, identify the system dependencies of your direct dependencies +renv::dependencies()$Package |> + unique() |> + pak::pkg_sysreqs() ``` The output may look like the following: @@ -72,7 +78,7 @@ rmarkdown – pandoc sass – make ``` -We can see that `make` and `pandoc` were identified as system dependencies. One can obtain their version by running them with the `--version` argument: +We can see that `make` and `pandoc` were identified as system dependencies. Often, one can obtain their version by running them with the `--version` argument: ```{.bash filename="Terminal"} make --version @@ -110,6 +116,8 @@ The output is quite long and it might look slightly different for you, but the r Version: 2024 ``` +Of course, all the system dependencies identified until now may have dependencies on their own. Use your own judgement to decide when not to dig deeper. + ## Create It! Create your README now as the file `README.md`. If you feel stuck, you can have a look at the following examples: diff --git a/setup.qmd b/setup.qmd index d51a045..79e1a84 100644 --- a/setup.qmd +++ b/setup.qmd @@ -426,9 +426,13 @@ This is only a brief summary and there is much more to be learned about coding p > > --- @Fowler1999, p. 15 -## Citing Software and Data +## Cite Data and Software -If you rely on software or data by others in your research, the question arises whether and how to cite it in your publications. Put simply, all data relied upon should be cited to allow for precise identification and access. From the "eight core principles of data citation" by @Starr2015, licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/): +If you rely on data or software by others in your research, the question arises whether and how to cite it in your publications. + +### Data + +Put simply, all data relied upon should be cited to allow for precise identification and access. From the "eight core principles of data citation" by @Starr2015, licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/): > **Principle 1 – Importance**: "Data should be considered legitimate, citable products of research. Data citations should be accorded the same importance in the scholarly record as citations of other research objects, such as publications." > @@ -438,7 +442,36 @@ If you rely on software or data by others in your research, the question arises > > **Principle 7 – Specificity and Verifiability**: "Data citations should facilitate identification of, access to, and verification of the specific data that support a claim. Citations or citation metadata should include information about provenance and fixity sufficient to facilitate verifying that the specific time slice, version and/or granular portion of data retrieved subsequently is the same as was originally cited." -When it comes to software, the answer is a little more nuanced – you can consult @fig-software-citation for advice whether to cite it. As with data, citations should allow for exact identification and access. From the six "software citation principles" by @Smith2016, licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/): +Now, add an appropriate citation for the data set to the manuscript. Does your citation adhere to the principles above? + +::: {#nte-cite-palmerpenguins .callout-note collapse="true"} +#### Hint for citing the data set + +As the data set is from the R package `palmerpenguins`, one can use the function `citation()` to display a suggested citation: + +```{r, echo = -1} +invisible(loadNamespace("palmerpenguins")) # Tell renv that we need this package +citation("palmerpenguins") +``` + +As this can only be run with the package `palmerpenguins` installed, you can also find a [suggested citation on its website](https://allisonhorst.github.io/palmerpenguins/#citation). + +Copy the BibTeX entry to the file `Bibliography.bib` and add an identifier between `@Manual{` and the comma, such that the entry's first line reads `@Manual{horst2020,`. Then, add a sentence to the manuscript such as follows: + +```md +The analyzed data are by @horst2020. +``` + +Render the document to check that the citation is displayed properly. + +```{.bash filename="Terminal"} +quarto render Manuscript.qmd +``` +::: + +### Software + +When it comes to software, the answer is a little more nuanced due to the large number of involved dependencies. You can consult @fig-software-citation for general advice whether to cite a particular piece of software or not. As with data, citations should allow for exact identification and access. From the six "software citation principles" by @Smith2016, licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/): > **1\. Importance**: Software should be considered a legitimate and citable product of research. Software citations should be accorded the same importance in the scholarly record as citations of other research products, such as publications and data; they should be included in the metadata of the citing work, for example in the reference list of a journal article, and should not be omitted or separated. Software should be cited on the same basis as any other research product such as a paper or a book, that is, authors should cite the appropriate set of software products just as they cite the appropriate set of papers. > @@ -446,7 +479,7 @@ When it comes to software, the answer is a little more nuanced – you can consu > > **6\. Specificity**: Software citations should facilitate identification of, and access to, the specific version of software that was used. Software identification should be as specific as necessary, such as using version numbers, revision numbers, or variants such as platforms. -To help with generating the citation, you can use the [CiteAs service](https://citeas.org/). +In practice, the first step is to identify all pieces of software the project relies on. A few of them are obvious, such as R itself, Quarto, and the $\TeX$ distribution we installed before. Then there are the individual R packages, Quarto extensions, and $\TeX$ packages. All of them, in turn, may have dependencies and it is up to you decide when not to dig deeper. For example, some R packages are only thin wrappers around other R packages or around system dependencies which also might deserve credit. A system dependency is additional software that you require on your computer apart from the R package. ::: {#fig-software-citation} ```{mermaid} @@ -471,9 +504,54 @@ flowchart TB "Should I cite the software?" by @Brown2016 licensed under [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/). Simplified from original. ::: +Now, add references for the software you would like to cite to the manuscript. In the following, we will demonstrate this for R and all R packages by using the R package `grateful`. For arbitrary software, you can use the [CiteAs service](https://citeas.org/) to create appropriate citations. + +Add the following code chunk to the end of the discussion in the manuscript: + +``````{.qmd filename="Manuscript.qmd"} +```{{r}} +#| echo: false + +grateful::cite_packages( + output = "paragraph", + out.dir = ".", + omit = NULL, + dependencies = TRUE, + passive.voice = TRUE, + bib.file = "grateful-refs" +) +``` +`````` + +This will automatically create a paragraph citing all used packages and generate the bibliography file `grateful-refs.bib`.^[Note that the detection can fail ] Then, in the YAML header, add `grateful-refs.bib` by setting the `bibliography` as follows: + +```{.yml filename="Manuscript.qmd"} +bibliography: + - Bibliography.bib + - grateful-refs.bib +``` + +Use `renv` to view, install, and record the newly used package `grateful`: + +```{.r filename="Console"} +renv::status() +renv::install() +renv::snapshot() +``` + +Finally, render the document again and commit the changes: + +```{.bash filename="Terminal"} +quarto render Manuscript.qmd + +git status +git add . +git commit -m "Cite data and software" +``` + ## The Last Mile -`renv` only records the versions of R packages and of R itself. This means that potential system dependencies of R packages and other tools utilized in the project are not documented anywhere, including Quarto.^[As of August 2024, a proposal to record the version of Quarto has not been implemented, see [rstudio/renv#1143](https://github.com/rstudio/renv/issues/1143).] We will manually write them down when [creating a README](make_readme.qmd). For now, however, there is one simple step you can take to record the version of Quarto (and a few other dependencies). Do run the following: +`renv` only records the versions of R packages and of R itself. This means that everything we have not decided to cite in the previous step is not documented anywhere. We will cover system dependencies when [creating a README](make_readme.qmd). For now, however, there is one simple step you can take to record the version of Quarto (and a few other dependencies). Do run the following: ```{.bash filename="Terminal"} quarto use binder From d89651018ed7d2ae74ce66c6e12e14fd817e2c61 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 29 Nov 2024 02:26:20 +0100 Subject: [PATCH 16/32] Use "data set" rather than "dataset" --- README.md | 2 +- _01_Example/Manuscript.qmd | 2 +- _03_Supplement/Checklist.qmd | 2 +- _Instructions.qmd | 2 +- setup.qmd | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 705d217..ec765a8 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ This repository is for day 2 of the self-paced Reproducible Manuscripts Quarto Workshop. The repository is structured as follows: -1. The folder "01_Example" contains a **minimal reproducible example** with a Quarto manuscript using the Palmer Penguins dataset. All necessary files are there, including the .qmd-file, the data in .csv format, a .bib-file with references, and a citation style csl.-file. +1. The folder "01_Example" contains a **minimal reproducible example** with a Quarto manuscript using the Palmer Penguins data set. All necessary files are there, including the .qmd-file, the data in .csv format, a .bib-file with references, and a citation style csl.-file. 2. The folder "02_Practise" contains the data in .csv format, a .bib-file with references, a .cls-file for *apaquarto*, and a citation style .csl-file. These are necessary components to **recreate the minimal reproducible example as a practise**, and would have to be copy-pasted anyway. Other files, like the .RProj-, renv-, and .qmd-files will be created by the participants during the practise in this folder. 3. The folder "03_Supplement" contains a **checklist** that participants can use to go over their project at the end and see which reproducibility measures they were able to implement and how to take it one step further. 4. The file "Instructions.qmd" contains the detailed instructions for day 2, i.e. how to execute the example, recreate it, apply the techniques to own data, and use the checklist, step-by-step. diff --git a/_01_Example/Manuscript.qmd b/_01_Example/Manuscript.qmd index 5974df3..ede54a2 100644 --- a/_01_Example/Manuscript.qmd +++ b/_01_Example/Manuscript.qmd @@ -40,7 +40,7 @@ format: Penguins are fascinating creatures that inhabit various regions of the Southern Hemisphere, including Antarctica and surrounding islands. The study of penguins provides valuable insights into ecosystem dynamics, climate change impacts, and evolutionary biology [@smith2020; @jones2018]. -This manuscript presents a minimal reproducible example utilizing the penguins dataset to demonstrate scientific workflows in R. +This manuscript presents a minimal reproducible example utilizing the penguins data set to demonstrate scientific workflows in R. ```{r} #| label: "t-test" diff --git a/_03_Supplement/Checklist.qmd b/_03_Supplement/Checklist.qmd index 8791c91..6d89b87 100644 --- a/_03_Supplement/Checklist.qmd +++ b/_03_Supplement/Checklist.qmd @@ -34,7 +34,7 @@ You will encounter some points that were not part of this workshop, but don't wo - Are raw or preprocessed data being published? Clearly label the data as one or the other and describe any preprocessing steps in a README file. - Are there any legal restrictions regarding the data? If your work involves patents, contracts, patient data, etc., contact your data protection officer for guidelines. + Accessibility - - Where will the data be stored? Small datasets can be stored in Github, larger ones on the servers of storage providers, e.g. OSF or Figshare. + - Where will the data be stored? Small data sets can be stored in Github, larger ones on the servers of storage providers, e.g. OSF or Figshare. - Where will the data be archived? On your institution's servers and/or publicly. - Under which license/restrictions is the data being published? diff --git a/_Instructions.qmd b/_Instructions.qmd index 468223d..64b7353 100644 --- a/_Instructions.qmd +++ b/_Instructions.qmd @@ -57,7 +57,7 @@ renv::init() 2. Create a Quarto document and copy text from your existing manuscript into the document. 3. Modify the formatting. 4. Copy a figure into the project folder and insert it into the document. -5. Create a table, either by hand or by importing your dataset into the project folder and using a package to generate a table. +5. Create a table, either by hand or by importing your data set into the project folder and using a package to generate a table. 6. Add your bibliography as a .bib file. 7. Choose a citation style and download the appropriate .csl file from the web. 8. Execute your modified scripts and review the generated manuscript files. diff --git a/setup.qmd b/setup.qmd index 79e1a84..033ff84 100644 --- a/setup.qmd +++ b/setup.qmd @@ -131,7 +131,7 @@ Everything you put into the project folder will be shared publicly. For reasons 3. copyright of the data and their particular structure, and 4. any _sui generis_ database right. -Privacy laws and contractual obligations may require you to create a completely anonymized or synthetic dataset^[For example, using [Amnesia](https://amnesia.openaire.eu/), [ARX](https://arx.deidentifier.org/), [sdcMicro](https://sdctools.github.io/sdcMicro/), or [Synthpop](https://www.synthpop.org.uk/).] (if possible), or prohibit any sharing of data, in which case you should provide a reference to a data repository where they can be obtained from. For further information, you can watch the talk "[Data anonymity](https://osf.io/j6fy8)" by Felix Schönbrodt recorded during the LMU Open Science Center Summer School 2023 and have a look at [the accompanying slides](https://osf.io/z6gcu). +Privacy laws and contractual obligations may require you to create a completely anonymized or synthetic data set^[For example, using [Amnesia](https://amnesia.openaire.eu/), [ARX](https://arx.deidentifier.org/), [sdcMicro](https://sdctools.github.io/sdcMicro/), or [Synthpop](https://www.synthpop.org.uk/).] (if possible), or prohibit any sharing of data, in which case you should provide a reference to a data repository where they can be obtained from. For further information, you can watch the talk "[Data anonymity](https://osf.io/j6fy8)" by Felix Schönbrodt recorded during the LMU Open Science Center Summer School 2023 and have a look at [the accompanying slides](https://osf.io/z6gcu). Purely factual data such as measurements are usually not copyrightable, but literary or artistic works that cross the threshold of originality are. Additionally, in some jurisdictions data can be subject to _sui generis_ database rights which prevent extracting substantial parts of a database. As a consequence, you need to ensure that you own or have authority to share the data with respect to copyright and similar rights, and to license it to others (see "[Choose a License](choose_license.qmd)"). ::: @@ -198,7 +198,7 @@ This example demonstrates how the title and description of the data set, the des ```{.r filename="Console"} table_info <- c( - title = "penguins dataset", + title = "penguins data set", description = "Size measurements for adult foraging penguins near Palmer Station, Antarctica" ) descriptions <- c( From 04c065eb0e2faef8337a87206496ec007167af78 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 29 Nov 2024 02:28:00 +0100 Subject: [PATCH 17/32] Also add palmerpenguins package to renv --- renv.lock | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/renv.lock b/renv.lock index f277e03..1867095 100644 --- a/renv.lock +++ b/renv.lock @@ -1,6 +1,6 @@ { "R": { - "Version": "4.4.1", + "Version": "4.4.2", "Repositories": [ { "Name": "CRAN", @@ -534,6 +534,16 @@ ], "Hash": "ccbb8846be320b627e6aa2b4616a2ded" }, + "palmerpenguins": { + "Package": "palmerpenguins", + "Version": "0.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "6c6861efbc13c1d543749e9c7be4a592" + }, "parameters": { "Package": "parameters", "Version": "0.22.1", From 7fe5fd048c22d390c6484d9dfb0725367492689a Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Tue, 3 Dec 2024 23:09:08 +0100 Subject: [PATCH 18/32] Various minor improvements --- _quarto.yml | 6 +++--- choose_license.qmd | 16 ++++++++-------- make_readme.qmd | 5 +++-- setup.qmd | 14 +++++++------- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/_quarto.yml b/_quarto.yml index 77ac279..1dd03e3 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -3,8 +3,8 @@ project: website: title: "Code Publishing Tutorial" - page-footer: - center: "Copyright 2024 Open Science Center at LMU Munich" + page-footer: + center: "© 2024 Open Science Center at LMU Munich" border: false search: location: sidebar @@ -40,7 +40,7 @@ website: format: html: - theme: + theme: - cosmo - custom.scss css: styles.css diff --git a/choose_license.qmd b/choose_license.qmd index fe6340e..d9c52bb 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -7,7 +7,7 @@ engine: knitr Every expression of an idea, such as a literary or an artistic works, is automatically covered by copyright. Put simply, this means that nobody else than the copyright holder is allowed to copy, modify, or share it. Copyright licenses can grant others some of the necessary rights, but mostly don't cover publicity, privacy, moral, patent, or trademark rights. Certain exceptions and limitations to copyright (such as fair use or the right to quote) may obviate the need for a license. -Researchers are only allowed to share material they have the necessary rights to, for example, through a free/open license. These licenses often require to attribute the authors, indicate whether changes were made, and provide the text of the license, among other things. In addition, researchers should share any work by their own under such a license. +Researchers are only allowed to share material they have the necessary rights to. This includes copyrights, which are granted by free/open copyright licenses. These licenses often require to attribute the authors, indicate whether changes were made, and provide the text of the license, among other things. In addition, researchers should share any work by their own under such a license. _Choosing a license_ involves: @@ -24,7 +24,7 @@ You can adapt the following wording to your use case: Whenever you create a literary or artistic work (such as a text, image, video, or software), the copyright law in most countries limits other people from copying, modifying, and sharing it without your express permission. [If the work was created as part of your job, it might be your employer who holds the copyright to the work, depending on the country and contract.]{.aside} This even applies if you make it available to others (e.g., on your website): First and foremost they are not allowed to copy, modify, or share it. This legal default of "all rights reserved" was created to benefit publishers, not authors [@Fogel2006], and runs counter to many cultural and scientific processes. Copyright licenses enable authors to free up their works for reuse by others. -A license is a legal document that regulates what _others_ are allowed to do with a copyright-protected work -- the licenses we discuss do not limit the author or copyright holder in their rights. And while you _could_ write your own, there are already many pre-formulated licenses available to choose from and to apply to your work.^[In fact, you should not create your own license if the purpose is to share your work freely and openly with others. By using a boilerplate license others know what to expect, also because they have been [tested](https://sfconservancy.org/copyleft-compliance/) in [courts](https://legaldb.creativecommons.org/).] +A license is a legal document that regulates what _others_ are allowed to do with a copyright-protected work -- the licenses we discuss are non-exclusive licenses and do not limit the author or copyright holder in their rights. And while you _could_ write your own license, there are already many pre-formulated licenses available to choose from and to apply to your work.^[In fact, you should not create your own license if the purpose is to share your work freely and openly with others. By using a boilerplate license others know what to expect, also because they have been [tested](https://sfconservancy.org/copyleft-compliance/) in [courts](https://legaldb.creativecommons.org/).] ::: {.column-margin} For the purpose of this tutorial, by _license_ we mean _copyright license_. @@ -33,7 +33,7 @@ For the purpose of this tutorial, by _license_ we mean _copyright license_. ::: {#wrn-exclusive-rights .callout-warning} ### Giving Publishers Exclusive Rights -When you have your article published under a Creative Commons license, some publishers still demand an exclusive publishing and distribution license or a copyright assignment. This would give them more rights than the readers of the article have through the chosen Creative Commons license [@Rumsey2022] and exceeds by far what is necessary to make publication possible [@Suber2022]. Consequently, authors should oppose this practice and grant publishers the same rights that every other reader of the article has. If your chosen publisher insists on an exclusive license, you may at least retain the copyright for your figures -- follow the guide "Retaining copyright for figures in academic publications to allow easy citation and reuse" by @Elson2016 to learn how to do that. +Some journals offer to publish your article under a Creative Commons license, but still demand an exclusive publishing and distribution license or a copyright assignment from you. This would give them more rights than the readers of the article have through the respective Creative Commons license [@Rumsey2022] and exceeds by far what is necessary to make publication possible [@Suber2022]. Consequently, authors should oppose this practice and grant publishers the same rights that every other reader of the article has. If your chosen publisher insists on an exclusive license, you may at least retain the copyright for your figures -- follow the guide "Retaining copyright for figures in academic publications to allow easy citation and reuse" by @Elson2016 to learn how to do that. If you have published a closed-access paper before, you can consult [ShareYourPaper](https://shareyourpaper.org/) for legal options to still make it available free of charge to readers. ::: @@ -68,7 +68,7 @@ Two other notable definitions include the _Open Definition_ [@OKFN2016], which w ### Existing License? -First, if you adapt (i.e., modify, build on) a work by others you need to determine if it is provided to you under a free/open license.[You can determine whether a license is free/open by searching for its name in the [SPDX License List](https://spdx.org/licenses/) and looking for at least one `Y` in the two columns _FSF Free/Libre?_ and _OSI Approved?_]{.aside} If yes, we recommend you to make your contribution available under the same license.^[Copyleft licenses even require you to choose the same or a compatible license.] For example, if you adapt code published in another paper, choose the same license for your modifications. The same applies if there are strong community norms to use a particular free/open license^[Of course, this is only a heuristic and there might be good reasons to deviate from community norms.] or if a particular license choice is mandated by your funder. Importantly, as discussed before, you are generally not allowed to adapt a work _not_ published under a free/open license. +First, if you adapt (i.e., modify, remix, build on) a work by others you need to determine if it is provided to you under a free/open license.[You can determine whether a license is free/open by searching for its name in the [SPDX License List](https://spdx.org/licenses/) and looking for at least one `Y` in the two columns _FSF Free/Libre?_ and _OSI Approved?_]{.aside} If yes, we recommend you to make your contribution available under the same license.^[Copyleft licenses even require you to choose the same or a compatible license.] For example, if you adapt code published in another paper, choose the same license for your modifications. The same applies if there are strong community norms to use a particular free/open license^[Of course, this is only a heuristic and there might be good reasons to deviate from community norms.] or if a particular license choice is mandated by your funder. Importantly, as discussed before, you are generally not allowed to adapt a work _not_ published under a free/open license. ### Work Type? @@ -95,7 +95,7 @@ Note, that for data there is, at least in principle, the possibility that a diff ```{mermaid} flowchart TB start("We want
to choose
a license.") --"We adapted a work by
others shared under a
free/open license."--> use_existing_license["Use its license"] - start --"We created the work
entirely by ourselves."--> regulation("Other regulation
(by community or funder)
regarding license?") + start --"We created the work
entirely by ourselves."--> regulation("Other regulation
(by community or funder)
concerning license?") regulation --"Exists"--> follow_existing_norms["Follow that"] regulation --"Does not
exist"--> type("Work type?") @@ -159,7 +159,7 @@ We have prepared two advanced license flowcharts, one for software, writing, ima The advanced license flowcharts also allow you to make additional decisions: -- __Attribution__ means whether recipients of your work are required to provide attribution to you. For software licenses, this is called a copyright notice. Note that even if attribution is not a requirement of the license, good scientific practice demands that appropriate citations are made. +- __Attribution__ means whether recipients of your work are required to provide attribution to you. For software licenses, the attribution is part of a copyright notice. Note that even if attribution is not a requirement of the license, good scientific practice demands that appropriate citations are made. - __State changes__ means that recipients need to indicate if changes were made. - __Anti-DRM__ means that when others share your work they are not allowed to apply technological measures restricting anything that the license permits. DRM is an abbreviation for **d**igital **r**ights **m**anagement. @@ -329,7 +329,7 @@ If you would like to learn more about copyright and licenses you might find the ```{mermaid} flowchart TB start("We want to choose a
license for software,
writing, image, audio,
or video.") --"We adapted a work by
others shared under a
free/open license."--> use_existing_license["Use its license"] - start --"We created the work
entirely by ourselves."--> regulation("Other regulation
(by community or funder)
regarding license?") + start --"We created the work
entirely by ourselves."--> regulation("Other regulation
(by community or funder)
concerning license?") regulation --"Exists"--> follow_existing_norms["Follow that"] regulation --"Does not
exist"--> type("Work type?") @@ -362,7 +362,7 @@ Advanced License Flowchart for Software, Writing, Images, Audio, and Video ```{mermaid} flowchart TB start("We want to choose a
license for data.") --"We adapted a database by
others shared under a
free/open license."--> use_existing_license_db["Use its license(s)
for content and database
"] - start --"We created a database
entirely by ourselves."--> regulation("Other regulation
(by community or funder)
regarding license?") + start --"We created a database
entirely by ourselves."--> regulation("Other regulation
(by community or funder)
concerning license?") regulation --"Exists"--> follow_existing_norms["Follow that"] regulation --"Does not
exist"--> existing_license_content("Adapting content
by others?") diff --git a/make_readme.qmd b/make_readme.qmd index d98388f..579a4e0 100644 --- a/make_readme.qmd +++ b/make_readme.qmd @@ -59,7 +59,8 @@ An overview over the system dependencies of R packages can be created using the # First, install pak renv::install("pak") -# Then, identify the system dependencies of your direct dependencies +# Then, identify the system dependencies +# of your direct dependencies. renv::dependencies()$Package |> unique() |> pak::pkg_sysreqs() @@ -227,6 +228,6 @@ Please cite this draft as follows: ```{.md .code-overflow-wrap filename="README.md"} ## License -The manuscript file and the bibliograhpic references are made available by us under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). The data set by Kristen Gorman has been published under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). `apaquarto` has also been published under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). All other files in this project are available under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). +The manuscript file and the bibliographic references are made available by us under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/). The data set by Kristen Gorman has been published under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). `apaquarto` has also been published under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). All other files in this project are available under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). ``` ::: diff --git a/setup.qmd b/setup.qmd index 033ff84..8cdf16f 100644 --- a/setup.qmd +++ b/setup.qmd @@ -113,13 +113,13 @@ For the purpose of this tutorial, we will provide you with a data set and a corr ## Add Data -You can now download the data set we have prepared for you and put into your project folder: [`Data.csv`](_01_Example/Data.csv){download=""} +You can now download the data set we have prepared for you and put it into your project folder: [`Data.csv`](_01_Example/Data.csv){download=""} ::: {.column-margin} ![palmerpenguins: Palmer Archipelago (Antarctica) Penguin Data](images/palmerpenguins.png){width=250px} ::: -The data set is from the package [`palmerpenguins`](https://allisonhorst.github.io/palmerpenguins/) and contains the recorded bill lengths and sex of penguins living on three islands in the Palmer Archipelago, Antarctica. It was made available under the license [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). +The data set is from the package [`palmerpenguins`](https://allisonhorst.github.io/palmerpenguins/)^[Created with `palmerpenguins` v0.1.1 using `write.csv(palmerpenguins::penguins, file = "Data.csv", row.names = FALSE)`.] and contains the recorded bill lengths and sex of penguins living on three islands in the Palmer Archipelago, Antarctica. It was made available under the license [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). ::: {#imp-legal-restrictions .callout-important} ### Consider Legal Restrictions Before Sharing @@ -293,7 +293,7 @@ The manuscript explores differences in bill length between male and female pengu ::: {#imp-take-copyright-seriously .callout-important} ### Take Copyright Seriously -When you include work by others in your project -- especially if you intend to make it available publicly --, make sure you have the necessary rights to do so. Only build on existing work for which you are given an express grant of relevant rights. How do you know you are allowed to copy, edit, and share the two files linked above? +If you include work by others in your project -- especially if you intend to make it available publicly --, make sure you have the necessary rights to do so. Only build on existing work for which you receive an express grant of relevant rights. How do you know you are allowed to copy, edit, and share the two files linked above? ::: :::: {#nte-take-copyright-seriously-solution .callout-note collapse="true"} @@ -409,9 +409,9 @@ Although we provide the code in this example for you, a few things remain to be - __Think twice about your dependencies.__ Every dependency increases the risk of irreproducibility in the future. Prefer packages that are well-maintained and light on dependencies^[You can use the function `pak::pkg_deps()` to count the total number of package dependencies in R.]. We also recommend you to read "When should you take a dependency?" by @Wickham2023PackagesDependency. -- __Fail early, often and noisily.__ Whenever you expect a certain state, use assertions to be sure. In R, you can use `stopifnot()` to make sure that a condition is actually true. +- __Fail early, often, and noisily.__ Whenever you expect a certain state, use assertions to be sure. In R, you can use `stopifnot()` to make sure that a condition is actually true. -- __Test your code.__ Test your code with scenarios where you know what the result should be. Turn bugs you discovered into test cases. Use linting tools^[A linting tool analyzes your code without actually running it. This process is called static code analysis.] to identify common mistakes in your code, for example, the R package [`lintr`](https://lintr.r-lib.org/). +- __Test your code.__ Test your code with scenarios where you know what the result should be. Turn bugs you discovered into test cases. Use linting tools^[A linting tool analyzes your code without actually running it. Therefore, this process is also called static code analysis.] to identify common mistakes in your code, for example, the R package [`lintr`](https://lintr.r-lib.org/). - __Read through a style guide and follow it.__ A style guide is a set of stylistic conventions that improve the code quality. R users are recommended to read Wickham's [-@Wickham2022Style] "Tidyverse style guide" and use the R package [`styler`](https://styler.r-lib.org/). Python users may benefit from reading the "Style Guide for Python Code" by @VanRossum2013. And even if you don't follow a style guide, be consistent. @@ -523,7 +523,7 @@ grateful::cite_packages( ``` `````` -This will automatically create a paragraph citing all used packages and generate the bibliography file `grateful-refs.bib`.^[Note that the detection can fail ] Then, in the YAML header, add `grateful-refs.bib` by setting the `bibliography` as follows: +This will automatically create a paragraph citing all used packages and generate the bibliography file `grateful-refs.bib`.^[Note that this automatic detection can miss packages in some circumstances, therefore always verify the rendered result.] Then, in the YAML header, add `grateful-refs.bib` by setting the `bibliography` as follows: ```{.yml filename="Manuscript.qmd"} bibliography: @@ -531,7 +531,7 @@ bibliography: - grateful-refs.bib ``` -Use `renv` to view, install, and record the newly used package `grateful`: +Use `renv` to view, install, and record the newly used package: ```{.r filename="Console"} renv::status() From bbf8fa343b63bb8d5bbf4f6066c988a980babdff Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 5 Dec 2024 00:23:55 +0100 Subject: [PATCH 19/32] Various minor stylistic and typographic improvements --- choose_license.qmd | 8 ++++---- intro.qmd | 4 ++-- setup.qmd | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index d9c52bb..1631e62 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -161,7 +161,7 @@ The advanced license flowcharts also allow you to make additional decisions: - __Attribution__ means whether recipients of your work are required to provide attribution to you. For software licenses, the attribution is part of a copyright notice. Note that even if attribution is not a requirement of the license, good scientific practice demands that appropriate citations are made. - __State changes__ means that recipients need to indicate if changes were made. -- __Anti-DRM__ means that when others share your work they are not allowed to apply technological measures restricting anything that the license permits. DRM is an abbreviation for **d**igital **r**ights **m**anagement. +- __Anti-DRM__ means that when others share your work they are not allowed to apply technological measures restricting anything that the license permits. Implementing such restrictive measures is also referred to as **d**igital **r**ights **m**anagement (DRM). From the Creative Commons licenses, only [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) does not require providing attribution. All software licenses in @fig-flowchart-non-data require providing attribution, although only [Apache\ 2.0](https://choosealicense.com/licenses/apache-2.0/) and [AGPLv3](https://choosealicense.com/licenses/agpl-3.0/) require others to indicate changes. For data, the [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/) allows for technological measures that restrict the work only if a version of the database is provided in parallel without such measures. @@ -172,9 +172,9 @@ As indicated before, a free/open license must allow creating derivative works an With the rights provided by free/open licenses comes the possibility to build on and combine multiple works by different authors, which is essential for any cultural and scientific activity. However, this is only possible if the various licenses involved are compatible with each other. For example, one is allowed to remix two figures if the first is licensed under CC\ BY\ 4.0 and the second under CC\ BY-SA\ 4.0 because the licenses were written to be compatible with each other [compare @CC2024FAQ]. Also note that CC\ BY-SA\ 4.0 is [one-way compatible](https://creativecommons.org/compatiblelicenses) with the GPLv3, which in turn is compatible with the AGPLv3. -However, applying a restriction such as only permitting non-commercial use or not allowing derivative works creates _silos_ of works which are mutually incompatible with each other. Put differently, one cannot share a remix of two works where one is licensed under CC\ BY-SA\ 4.0 and the other only allows non-commercial use. In order to avoid silos, one should only choose license which are compatible with the dominant copyleft license in the respective community [@Lammerhirt2017; @Wheeler2014]. If you would like to learn more about the different types of compatibility, we recommend you to read the article "A Quick Guide to Software Licensing for the Scientist-Programmer" by @Morin2012. The following diagram provides an overview of the compatibility of various licenses: +However, applying a restriction such as only permitting non-commercial use or not allowing derivative works creates _silos_ of works which are mutually incompatible with each other. Put differently, one cannot share a remix of two works where one is licensed under CC\ BY-SA\ 4.0 and the other only allows non-commercial use. In order to avoid silos, one should only choose licenses which are compatible with the dominant copyleft license in the respective community [@Lammerhirt2017; @Wheeler2014]. If you would like to learn more about the different types of compatibility, we recommend you to read the article "A Quick Guide to Software Licensing for the Scientist-Programmer" by @Morin2012. The following diagram provides an overview of the compatibility of various licenses: -!["Open data-capable license interoperability" by Robbie Morrison licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/). Taken without modification from @Morrison2024](images/Morrison2024.jpg){.lightbox} +!["Open data-capable license interoperability" by Robbie Morrison [-@Morrison2024] licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/)](images/Morrison2024.jpg){.lightbox} ::: ## Which Licenses to Choose for a Project? @@ -185,7 +185,7 @@ The answer is that you need to indicate the license on a per-file or per-folder ## Applying the License -Having selected the licenses of your choice -- again, you might need multiple ones depending on the types of works your project contains --, we encourage you to read through the full license text (or at least a legal summary) to understand their effect. Then, you can record the license of existing content and apply the licenses of your own contributions. Mostly, this just means indicating which license applies to which file or folder, usually in the project's README (among other places), whose creation will be discussed [later](make_readme.qmd). +Having selected the licenses of your choice -- again, you might need multiple ones depending on the types of works your project contains --, we encourage you to read through the full license text (or at least a legal summary) to understand their effect. Then, you can record the license of existing content and apply the licenses of your own contributions. Mostly, this just means indicating which file or folder is covered by which license, usually in the project's README (among other places), whose creation will be discussed [later](make_readme.qmd). Notably, no sort of registration is required. ::: {#cau-license-versions .callout-caution} ### License Versions Are Important diff --git a/intro.qmd b/intro.qmd index 72592b9..0592b60 100644 --- a/intro.qmd +++ b/intro.qmd @@ -10,13 +10,13 @@ Suppose you are reading an article about a new imaging method to turn seismologi > "An article about computational science in a scientific publication is not the scholarship itself, it is merely advertising of the scholarship. The actual scholarship is the complete software development environment and the complete set of instructions which generated the figures." -Even for articles that are use computers to apply existing methods (rather than reporting on a new method), sharing the source code and being transparent about the computational environment is imperative to making research reproducible [@Ince2012]. By reproducibility, we mean "obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis" [@NASEM2019, p. 46]. +Even when researchers merely apply existing methods (rather than report on a new method), sharing the source code and being transparent about the computational environment is imperative to making their results reproducible [@Ince2012]. By reproducibility, we mean "obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis" [@NASEM2019, p. 46]. ## Linking Results and Computations This tutorial not only covers sharing the source code, but also connecting it to the results through the creation of dynamic documents. Rather than manually copying numerical results, figures, or tables, they are inserted automatically upon rendering of the article. Dynamic documents bundled together with any necessary data and auxiliary software are called a [research compendium](https://research-compendium.science/) [@Gentleman2007]. -The practice to interleave narrative text with code has its roots in the paradigm of literate programming, where documentation and source code are treated as equals and are arranged in a way to maximize understanding [@Knuth1984]. Alternating text and code can be also found in notebook interfaces for exploratory programming, such as provided by Wolfram Mathematica or Jupyter Notebooks [@Kluyver2016], with the added capability of executing the code and embedding its output. With _Sweave_ [@Leisch2002], ideas from both worlds -- literate programming and embedding program output -- were combined into one tool for rendering dynamic documents using the R programming language. It is the predecessor of the R package `knitr` [@Xie2015] which is being used under the hood in this tutorial.^[Specifically, Quarto employs `knitr` to execute chunks of R code.] +The practice to interleave narrative text with code has its roots in the paradigm of literate programming, where documentation and source code are treated as equals and are arranged in a way to maximize understanding [@Knuth1984]. Alternating text and code can be also found in notebook interfaces for exploratory programming [e.g., Wolfram Mathematica or Jupyter Notebooks, see @Kluyver2016] that also have the capability to execute code and embed its output. With _Sweave_ [@Leisch2002], ideas from both worlds -- literate programming and embedding program output -- were combined into one tool for rendering dynamic documents using the R programming language. It is the predecessor of the R package `knitr` [@Xie2015] which is being used under the hood in this tutorial.^[Specifically, Quarto employs `knitr` to execute chunks of R code.] Linking results with their computations has benefits for authors and readers. For the author, articles always contain the most recent version of figures, as they are updated automatically when the computation changes. For the readers, it enables understanding exactly how a particular result was obtained if they get access to the underlying research compendium. diff --git a/setup.qmd b/setup.qmd index 8cdf16f..e4d7a31 100644 --- a/setup.qmd +++ b/setup.qmd @@ -66,7 +66,7 @@ git init git checkout -b main ``` -Then, one can open an R session by simply typing `R` into the terminal. Next, make sure that `getwd()` indicates that the working directory is `code-publishing-exercise`. If not, set it using `setwd("code-publishing-exercise")`. Then, initialize `renv`: +Then, one can open an R session by simply typing `R` into the terminal. Next, make sure that `getwd()` indicates that the working directory is `code-publishing-exercise`. Then, initialize `renv`: ```{.r filename="Console"} renv::init() From 41c384eabedd4183b071dbbe36241f5f049a055d Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 5 Dec 2024 00:24:22 +0100 Subject: [PATCH 20/32] Provide exact page reference --- intro.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intro.qmd b/intro.qmd index 0592b60..d3b2009 100644 --- a/intro.qmd +++ b/intro.qmd @@ -6,7 +6,7 @@ In the following, we will provide a brief introduction to the concept of _resear ## The Importance of Sharing -Suppose you are reading an article about a new imaging method to turn seismological data into subsurface images. The article describes the ideas that went into developing this method and presents a few examples to illustrate its superiority over previous approaches. You got interested and would like to apply this method to your own data. However, with only the article available, it could take months to come up with a working solution, if possible at all. This situation has been put aptly by @Buckheit1995, distilling an idea by geophysicist Jon Claerbout: +Suppose you are reading an article about a new imaging method to turn seismological data into subsurface images. The article describes the ideas that went into developing this method and presents a few examples to illustrate its superiority over previous approaches. You got interested and would like to apply this method to your own data. However, with only the article available, it could take months to come up with a working solution, if possible at all. This situation has been put aptly by Buckheit & Donoho [-@Buckheit1995, p. 59], distilling an idea by the geophysicist Jon Claerbout: > "An article about computational science in a scientific publication is not the scholarship itself, it is merely advertising of the scholarship. The actual scholarship is the complete software development environment and the complete set of instructions which generated the figures." From fcf30579e7f0a93fccf8e665fc7335d28a312c01 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 5 Dec 2024 00:24:45 +0100 Subject: [PATCH 21/32] Add a few resources on licensing --- choose_license.qmd | 6 +++--- literature.bib | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index 1631e62..51b058b 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -89,7 +89,7 @@ One solution is to make such a work simultaneously available under two (or more) > The Quarto files in this project are made available under CC0\ 1.0 or (at your option) under the terms of the Apache Software License\ 2.0. ::: -Note, that for data there is, at least in principle, the possibility that a different license applies to the individual entries than to the collective database. For example, if you were to create a database of artworks by others, those artworks would be licensed individually as chosen by the artists, but the license for the database as a whole could be chosen by you. The latter includes the selection of entries, field names and any _sui generis_ database rights. However, if the content was created by you, we recommend you to choose the same license for both content and database. Factual data (like measurements or metadata) should be licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) -- otherwise, consult @nte-other-work-types for some caveats. +Note, that for data there is, at least in principle, the possibility that a different license applies to the individual entries than to the collective database. For example, if you were to create a database of artworks by others, those artworks would be licensed individually as chosen by the artists, but the license for the database as a whole could be chosen by you. The latter includes the selection of entries, field names and any _sui generis_ database rights. However, if the content was created by you, we recommend you to choose the same license for both content and database. Factual data (like measurements or metadata) should be licensed under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) [@Villa2016Copyleft; @Villa2016CC0] -- otherwise, consult @nte-other-work-types for some caveats. ::: {#fig-flowchart-simple} ```{mermaid} @@ -168,7 +168,7 @@ From the Creative Commons licenses, only [CC0\ 1.0](https://creativecommons.org/ ::: {#nte-silos .callout-note collapse="true"} ### Other Restrictions -As indicated before, a free/open license must allow creating derivative works and must allow exercising the rights granted by it _for any purpose_, including commercial use. There are a few good resources on the reasoning behind that [e.g., see @Klimpel2013; @ODI2015; @Stallman2022NoLimit; @Moller2023], but we would like to highlight one reason in particular. +As indicated before, a free/open license must allow creating derivative works and must allow exercising the rights granted by it _for any purpose_, including commercial use. There are a few good resources on the reasoning behind that [e.g., see @Klimpel2013; @ODI2015; @Stallman2022NoLimit; @Moller2023; @Vezina2020; @WikimediaCommons2009], but we would like to highlight one reason in particular. With the rights provided by free/open licenses comes the possibility to build on and combine multiple works by different authors, which is essential for any cultural and scientific activity. However, this is only possible if the various licenses involved are compatible with each other. For example, one is allowed to remix two figures if the first is licensed under CC\ BY\ 4.0 and the second under CC\ BY-SA\ 4.0 because the licenses were written to be compatible with each other [compare @CC2024FAQ]. Also note that CC\ BY-SA\ 4.0 is [one-way compatible](https://creativecommons.org/compatiblelicenses) with the GPLv3, which in turn is compatible with the AGPLv3. @@ -190,7 +190,7 @@ Having selected the licenses of your choice -- again, you might need multiple on ::: {#cau-license-versions .callout-caution} ### License Versions Are Important -You may have noticed that we mostly refer to licenses using a name _and_ a version number. This is because the organizations that created the licenses sometimes publish updated versions to accommodate for developments in copyright law and the communities that use the licenses. For example, the Creative Commons licenses (that start with `CC`) were first published in 2002. Since then, the possibility to relicense under compatible licenses has been added ([v3.0](https://creativecommons.org/2007/02/23/version-30-launched/)), a 30-day window to correct license violations has been established to combat [copyleft trolls](https://commons.wikimedia.org/wiki/Commons:Copyleft_trolling), and _sui generis_ database rights are covered explicitly ([v4.0](https://creativecommons.org/version4/)). There are many more [subtle differences between license versions](https://wiki.creativecommons.org/wiki/License_Versions), therefore it is important to indicate which license version exactly one is referring to, as the license of a work does not "update" automatically. +You may have noticed that we mostly refer to licenses using a name _and_ a version number. This is because the organizations that created the licenses sometimes publish updated versions to accommodate for developments in copyright law and the communities that use the licenses. For example, the Creative Commons licenses (that start with `CC`) were first published in 2002. Since then, the possibility to relicense under later ([v2.0](https://creativecommons.org/2004/05/25/announcingandexplainingournew20licenses/#:~:text=Share%20Alike%20Across%20Borders)) and compatible licenses ([v3.0](https://creativecommons.org/2007/02/23/version-30-launched/)) has been added, a 30-day window to correct license violations has been established to combat [copyleft trolls](https://commons.wikimedia.org/wiki/Commons:Copyleft_trolling), and _sui generis_ database rights are covered explicitly ([v4.0](https://creativecommons.org/version4/)). There are many more [subtle differences between license versions](https://wiki.creativecommons.org/wiki/License_Versions), therefore it is important to indicate which license version exactly one is referring to, as the license of a work does not "update" automatically. For the AGPLv3 it is even recommended to state whether a work is licensed under exactly the indicated version of the license or, alternatively, also under newer versions of the license [@Stallman2022Version]. ::: diff --git a/literature.bib b/literature.bib index 8debe97..de23f6c 100644 --- a/literature.bib +++ b/literature.bib @@ -714,4 +714,45 @@ @article{Smith2016 urldate = {2024-11-28}, date = {2016-09-19}, langid = {english}, +} +@online{Villa2016Copyleft, + title = {Copyleft, attribution, and data: other considerations}, + url = {https://lu.is/2016/09/copyleft-attribution-and-data-other-considerations/}, + shorttitle = {Copyleft, attribution, and data}, + abstract = {Public licenses for databases don’t work well. Before going into solutions to that problem, though, I wanted to talk briefly about some things that are important to consider when thinking abo…}, + titleaddon = {Luis Villa: Open Tech and Policy}, + author = {Villa, Luis}, + urldate = {2024-12-04}, + date = {2016-09-21}, + langid = {american}, +} +@online{Villa2016CC0, + title = {Public licenses and data: So what to do instead?}, + url = {https://lu.is/2016/09/public-licenses-and-data-so-what-to-do-instead/}, + shorttitle = {Public licenses and data}, + abstract = {I just explained why open and copyleft licensing, which work fairly well in the software context, might not be legally workable, or practically a good idea, around data. So what to do instead? tl;d…}, + titleaddon = {Luis Villa: Open Tech and Policy}, + author = {Villa, Luis}, + urldate = {2024-12-04}, + date = {2016-09-26}, + langid = {american}, +} +@online{Vezina2020, + title = {Why Sharing Academic Publications Under “No Derivatives” Licenses is Misguided}, + url = {https://creativecommons.org/2020/04/21/academic-publications-under-no-derivatives-licenses-is-misguided/}, + abstract = {Using “No Derivatives” ({ND}) licenses on academic publications is ill-advised for policing academic fraud and unhelpful to the dissemination of research.}, + titleaddon = {Creative Commons}, + author = {Vézina, Brigitte}, + urldate = {2024-12-04}, + date = {2020-04-21}, + langid = {american}, +} +@online{WikimediaCommons2009, + title = {Licensing/Justifications}, + url = {https://commons.wikimedia.org/w/index.php?title=Commons:Licensing/Justifications&oldid=917608913}, + titleaddon = {Wikimedia Commons}, + author = {{Wikimedia Commons contributors}}, + urldate = {2024-12-04}, + date = {2009-06-30}, + langid = {english}, } \ No newline at end of file From 922363cbb0da88766850f83c68edabed5faa5550 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Tue, 10 Dec 2024 16:02:50 +0100 Subject: [PATCH 22/32] Add emphasis --- choose_license.qmd | 4 ++-- intro.qmd | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index 51b058b..c7d8469 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -367,14 +367,14 @@ flowchart TB regulation --"Exists"--> follow_existing_norms["Follow that"] regulation --"Does not
exist"--> existing_license_content("Adapting content
by others?") - subgraph "License for individual data entries (content)" + subgraph content["License for content"] existing_license_content --"No, we created the content
entirely by ourselves."--> facts("Entries are facts
(like measurements
or metadata)?") existing_license_content --"Yes, it was
shared under a
free/open license."--> use_existing_license_content["Use that license"] facts --"Yes"--> cc0_content_metadata["CC0 1.0"] facts --"No"--> choose_license["Consult flowchart for
software, writing,
image, audio, and video
"] end - subgraph "License for combination of data (database)" + subgraph database["License for database"] choose_license --> switch_license["Depending on
content license
"] use_existing_license_content --> switch_license diff --git a/intro.qmd b/intro.qmd index d3b2009..c5a5747 100644 --- a/intro.qmd +++ b/intro.qmd @@ -8,7 +8,7 @@ In the following, we will provide a brief introduction to the concept of _resear Suppose you are reading an article about a new imaging method to turn seismological data into subsurface images. The article describes the ideas that went into developing this method and presents a few examples to illustrate its superiority over previous approaches. You got interested and would like to apply this method to your own data. However, with only the article available, it could take months to come up with a working solution, if possible at all. This situation has been put aptly by Buckheit & Donoho [-@Buckheit1995, p. 59], distilling an idea by the geophysicist Jon Claerbout: -> "An article about computational science in a scientific publication is not the scholarship itself, it is merely advertising of the scholarship. The actual scholarship is the complete software development environment and the complete set of instructions which generated the figures." +> "An article about computational science in a scientific publication is __not__ the scholarship itself, it is merely __advertising__ of the scholarship. The actual scholarship is the complete software development environment and the complete set of instructions which generated the figures." Even when researchers merely apply existing methods (rather than report on a new method), sharing the source code and being transparent about the computational environment is imperative to making their results reproducible [@Ince2012]. By reproducibility, we mean "obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis" [@NASEM2019, p. 46]. From bf39a9e21dc6e9695550d8c976d3b187f3746d92 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Tue, 10 Dec 2024 16:03:16 +0100 Subject: [PATCH 23/32] Add references to licensing chapter --- choose_license.qmd | 6 +++--- literature.bib | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index c7d8469..fd21291 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -33,9 +33,9 @@ For the purpose of this tutorial, by _license_ we mean _copyright license_. ::: {#wrn-exclusive-rights .callout-warning} ### Giving Publishers Exclusive Rights -Some journals offer to publish your article under a Creative Commons license, but still demand an exclusive publishing and distribution license or a copyright assignment from you. This would give them more rights than the readers of the article have through the respective Creative Commons license [@Rumsey2022] and exceeds by far what is necessary to make publication possible [@Suber2022]. Consequently, authors should oppose this practice and grant publishers the same rights that every other reader of the article has. If your chosen publisher insists on an exclusive license, you may at least retain the copyright for your figures -- follow the guide "Retaining copyright for figures in academic publications to allow easy citation and reuse" by @Elson2016 to learn how to do that. +Some journals offer to publish your article under a Creative Commons license, but still demand an exclusive publishing and distribution license or a copyright assignment from you. This would give them more rights than the readers of the article have through the respective Creative Commons license [@Rumsey2022] and exceeds by far what is necessary to make publication possible [@Suber2022]. Consequently, authors should oppose this practice and grant publishers the same rights that every other reader of the article has. To facilitate self-archiving, one can also modify the contract with publishers via a rights retention statement [@UKRN2023] / author's addendum [@SPARC2006]. If you have published a closed-access paper before, you can consult [ShareYourPaper](https://shareyourpaper.org/) for legal options to still make it available free of charge to readers. -If you have published a closed-access paper before, you can consult [ShareYourPaper](https://shareyourpaper.org/) for legal options to still make it available free of charge to readers. +If your chosen publisher insists on an exclusive license, you may at least retain the copyright for your figures -- follow the guide "Retaining copyright for figures in academic publications to allow easy citation and reuse" by @Elson2016 to learn how to do that. ::: The licenses we discuss here mostly regard copyright. Therefore, recipients may lack other rights such as publicity, privacy, moral, patent,^[In fact, the software licenses we recommend on this page have been specifically selected to provide an express grant of patent rights.] or trademark rights. For example, sharing photos that depict people is not only a matter of copyright, but also of privacy rights. Conversely, the licenses do not apply if recipients are allowed to use the works for other reasons such as fair use, the right to quote, or because they made a different arrangement with the author. @@ -190,7 +190,7 @@ Having selected the licenses of your choice -- again, you might need multiple on ::: {#cau-license-versions .callout-caution} ### License Versions Are Important -You may have noticed that we mostly refer to licenses using a name _and_ a version number. This is because the organizations that created the licenses sometimes publish updated versions to accommodate for developments in copyright law and the communities that use the licenses. For example, the Creative Commons licenses (that start with `CC`) were first published in 2002. Since then, the possibility to relicense under later ([v2.0](https://creativecommons.org/2004/05/25/announcingandexplainingournew20licenses/#:~:text=Share%20Alike%20Across%20Borders)) and compatible licenses ([v3.0](https://creativecommons.org/2007/02/23/version-30-launched/)) has been added, a 30-day window to correct license violations has been established to combat [copyleft trolls](https://commons.wikimedia.org/wiki/Commons:Copyleft_trolling), and _sui generis_ database rights are covered explicitly ([v4.0](https://creativecommons.org/version4/)). There are many more [subtle differences between license versions](https://wiki.creativecommons.org/wiki/License_Versions), therefore it is important to indicate which license version exactly one is referring to, as the license of a work does not "update" automatically. +You may have noticed that we mostly refer to licenses using a name _and_ a version number. This is because the organizations that created the licenses sometimes publish updated versions to accommodate for developments in copyright law and the communities that use the licenses. For example, the Creative Commons licenses (that start with `CC`) were first published in 2002. Since then, the possibility to relicense under later ([v2.0](https://creativecommons.org/weblog/entry/4216#:~:text=Share%20Alike%20Across%20Borders), 2004) and compatible licenses ([v3.0](https://creativecommons.org/weblog/entry/7249), 2007) has been added, a 30-day window to correct license violations has been established to combat [copyleft trolls](https://commons.wikimedia.org/wiki/Commons:Copyleft_trolling), and _sui generis_ database rights are covered explicitly ([v4.0](https://creativecommons.org/weblog/entry/40768), 2013). There are many more [subtle differences between license versions](https://wiki.creativecommons.org/wiki/License_Versions), therefore it is important to indicate which license version exactly one is referring to, as the license of a work does not "update" automatically. CC0, officially introduced in 2009, is still at version [1.0](http://www.creativecommons.org/weblog/entry/13304). For the AGPLv3 it is even recommended to state whether a work is licensed under exactly the indicated version of the license or, alternatively, also under newer versions of the license [@Stallman2022Version]. ::: diff --git a/literature.bib b/literature.bib index de23f6c..e67f09e 100644 --- a/literature.bib +++ b/literature.bib @@ -755,4 +755,27 @@ @online{WikimediaCommons2009 urldate = {2024-12-04}, date = {2009-06-30}, langid = {english}, +} + +@misc{UKRN2023, + title = {Rights Retention Strategy: a Primer from {UKRN}}, + rights = {https://creativecommons.org/licenses/by/4.0/legalcode}, + url = {https://osf.io/2ajsg}, + doi = {10.31219/osf.io/2ajsg}, + shorttitle = {Rights Retention Strategy}, + abstract = {This guide describes how authors can retain rights on their “author’s accepted manuscripts” using the Rights Retention Strategy.}, + publisher = {Open Science Framework}, + author = {{UK Reproducibility Network} and Eglen, Stephen}, + urldate = {2024-12-10}, + date = {2023-04-18}, +} + +@online{SPARC2006, + title = {Author Rights: Using the {SPARC} Author Addendum}, + url = {https://sparcopen.org/our-work/author-rights/brochure-html/}, + shorttitle = {Author Rights}, + author = {{SPARC}}, + urldate = {2024-12-10}, + date = {2006}, + langid = {american}, } \ No newline at end of file From 6d3ca2be7915a90d5b792c9fb9295f357a9f73f9 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Tue, 10 Dec 2024 19:43:59 +0100 Subject: [PATCH 24/32] Rework adding data set - Use pointblank for the data dictionary - Create data set automatically - Make filename of data set all lowercase As for the reason: I think it doesn't make sense to use datawizard for the data dictionary, as a proper dictionary should contain information that cannot be just "calculated" from the data object. For example, the information about valid values has to come from the user, rather than from the data set itself. --- .gitignore | 1 + _01_Example/Data.csv | 345 -------------------- _01_Example/Manuscript.qmd | 2 +- _01_Example/README.md | 2 +- choose_license.qmd | 6 +- images/datawizard.png | Bin 40274 -> 0 bytes images/pointblank.png | Bin 0 -> 176110 bytes images/tinytable.svg | 59 ---- make_readme.qmd | 2 +- renv.lock | 628 ++++++++++++++++++++++++++++++++++++- setup.qmd | 150 ++++++--- 11 files changed, 720 insertions(+), 475 deletions(-) delete mode 100644 _01_Example/Data.csv delete mode 100644 images/datawizard.png create mode 100644 images/pointblank.png delete mode 100644 images/tinytable.svg diff --git a/.gitignore b/.gitignore index d014494..436960a 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ _outline.md # Other files created by the project grateful-refs.bib +data.csv \ No newline at end of file diff --git a/_01_Example/Data.csv b/_01_Example/Data.csv deleted file mode 100644 index 03e2c58..0000000 --- a/_01_Example/Data.csv +++ /dev/null @@ -1,345 +0,0 @@ -"species","island","bill_length_mm","bill_depth_mm","flipper_length_mm","body_mass_g","sex","year" -"Adelie","Torgersen",39.1,18.7,181,3750,"male",2007 -"Adelie","Torgersen",39.5,17.4,186,3800,"female",2007 -"Adelie","Torgersen",40.3,18,195,3250,"female",2007 -"Adelie","Torgersen",NA,NA,NA,NA,NA,2007 -"Adelie","Torgersen",36.7,19.3,193,3450,"female",2007 -"Adelie","Torgersen",39.3,20.6,190,3650,"male",2007 -"Adelie","Torgersen",38.9,17.8,181,3625,"female",2007 -"Adelie","Torgersen",39.2,19.6,195,4675,"male",2007 -"Adelie","Torgersen",34.1,18.1,193,3475,NA,2007 -"Adelie","Torgersen",42,20.2,190,4250,NA,2007 -"Adelie","Torgersen",37.8,17.1,186,3300,NA,2007 -"Adelie","Torgersen",37.8,17.3,180,3700,NA,2007 -"Adelie","Torgersen",41.1,17.6,182,3200,"female",2007 -"Adelie","Torgersen",38.6,21.2,191,3800,"male",2007 -"Adelie","Torgersen",34.6,21.1,198,4400,"male",2007 -"Adelie","Torgersen",36.6,17.8,185,3700,"female",2007 -"Adelie","Torgersen",38.7,19,195,3450,"female",2007 -"Adelie","Torgersen",42.5,20.7,197,4500,"male",2007 -"Adelie","Torgersen",34.4,18.4,184,3325,"female",2007 -"Adelie","Torgersen",46,21.5,194,4200,"male",2007 -"Adelie","Biscoe",37.8,18.3,174,3400,"female",2007 -"Adelie","Biscoe",37.7,18.7,180,3600,"male",2007 -"Adelie","Biscoe",35.9,19.2,189,3800,"female",2007 -"Adelie","Biscoe",38.2,18.1,185,3950,"male",2007 -"Adelie","Biscoe",38.8,17.2,180,3800,"male",2007 -"Adelie","Biscoe",35.3,18.9,187,3800,"female",2007 -"Adelie","Biscoe",40.6,18.6,183,3550,"male",2007 -"Adelie","Biscoe",40.5,17.9,187,3200,"female",2007 -"Adelie","Biscoe",37.9,18.6,172,3150,"female",2007 -"Adelie","Biscoe",40.5,18.9,180,3950,"male",2007 -"Adelie","Dream",39.5,16.7,178,3250,"female",2007 -"Adelie","Dream",37.2,18.1,178,3900,"male",2007 -"Adelie","Dream",39.5,17.8,188,3300,"female",2007 -"Adelie","Dream",40.9,18.9,184,3900,"male",2007 -"Adelie","Dream",36.4,17,195,3325,"female",2007 -"Adelie","Dream",39.2,21.1,196,4150,"male",2007 -"Adelie","Dream",38.8,20,190,3950,"male",2007 -"Adelie","Dream",42.2,18.5,180,3550,"female",2007 -"Adelie","Dream",37.6,19.3,181,3300,"female",2007 -"Adelie","Dream",39.8,19.1,184,4650,"male",2007 -"Adelie","Dream",36.5,18,182,3150,"female",2007 -"Adelie","Dream",40.8,18.4,195,3900,"male",2007 -"Adelie","Dream",36,18.5,186,3100,"female",2007 -"Adelie","Dream",44.1,19.7,196,4400,"male",2007 -"Adelie","Dream",37,16.9,185,3000,"female",2007 -"Adelie","Dream",39.6,18.8,190,4600,"male",2007 -"Adelie","Dream",41.1,19,182,3425,"male",2007 -"Adelie","Dream",37.5,18.9,179,2975,NA,2007 -"Adelie","Dream",36,17.9,190,3450,"female",2007 -"Adelie","Dream",42.3,21.2,191,4150,"male",2007 -"Adelie","Biscoe",39.6,17.7,186,3500,"female",2008 -"Adelie","Biscoe",40.1,18.9,188,4300,"male",2008 -"Adelie","Biscoe",35,17.9,190,3450,"female",2008 -"Adelie","Biscoe",42,19.5,200,4050,"male",2008 -"Adelie","Biscoe",34.5,18.1,187,2900,"female",2008 -"Adelie","Biscoe",41.4,18.6,191,3700,"male",2008 -"Adelie","Biscoe",39,17.5,186,3550,"female",2008 -"Adelie","Biscoe",40.6,18.8,193,3800,"male",2008 -"Adelie","Biscoe",36.5,16.6,181,2850,"female",2008 -"Adelie","Biscoe",37.6,19.1,194,3750,"male",2008 -"Adelie","Biscoe",35.7,16.9,185,3150,"female",2008 -"Adelie","Biscoe",41.3,21.1,195,4400,"male",2008 -"Adelie","Biscoe",37.6,17,185,3600,"female",2008 -"Adelie","Biscoe",41.1,18.2,192,4050,"male",2008 -"Adelie","Biscoe",36.4,17.1,184,2850,"female",2008 -"Adelie","Biscoe",41.6,18,192,3950,"male",2008 -"Adelie","Biscoe",35.5,16.2,195,3350,"female",2008 -"Adelie","Biscoe",41.1,19.1,188,4100,"male",2008 -"Adelie","Torgersen",35.9,16.6,190,3050,"female",2008 -"Adelie","Torgersen",41.8,19.4,198,4450,"male",2008 -"Adelie","Torgersen",33.5,19,190,3600,"female",2008 -"Adelie","Torgersen",39.7,18.4,190,3900,"male",2008 -"Adelie","Torgersen",39.6,17.2,196,3550,"female",2008 -"Adelie","Torgersen",45.8,18.9,197,4150,"male",2008 -"Adelie","Torgersen",35.5,17.5,190,3700,"female",2008 -"Adelie","Torgersen",42.8,18.5,195,4250,"male",2008 -"Adelie","Torgersen",40.9,16.8,191,3700,"female",2008 -"Adelie","Torgersen",37.2,19.4,184,3900,"male",2008 -"Adelie","Torgersen",36.2,16.1,187,3550,"female",2008 -"Adelie","Torgersen",42.1,19.1,195,4000,"male",2008 -"Adelie","Torgersen",34.6,17.2,189,3200,"female",2008 -"Adelie","Torgersen",42.9,17.6,196,4700,"male",2008 -"Adelie","Torgersen",36.7,18.8,187,3800,"female",2008 -"Adelie","Torgersen",35.1,19.4,193,4200,"male",2008 -"Adelie","Dream",37.3,17.8,191,3350,"female",2008 -"Adelie","Dream",41.3,20.3,194,3550,"male",2008 -"Adelie","Dream",36.3,19.5,190,3800,"male",2008 -"Adelie","Dream",36.9,18.6,189,3500,"female",2008 -"Adelie","Dream",38.3,19.2,189,3950,"male",2008 -"Adelie","Dream",38.9,18.8,190,3600,"female",2008 -"Adelie","Dream",35.7,18,202,3550,"female",2008 -"Adelie","Dream",41.1,18.1,205,4300,"male",2008 -"Adelie","Dream",34,17.1,185,3400,"female",2008 -"Adelie","Dream",39.6,18.1,186,4450,"male",2008 -"Adelie","Dream",36.2,17.3,187,3300,"female",2008 -"Adelie","Dream",40.8,18.9,208,4300,"male",2008 -"Adelie","Dream",38.1,18.6,190,3700,"female",2008 -"Adelie","Dream",40.3,18.5,196,4350,"male",2008 -"Adelie","Dream",33.1,16.1,178,2900,"female",2008 -"Adelie","Dream",43.2,18.5,192,4100,"male",2008 -"Adelie","Biscoe",35,17.9,192,3725,"female",2009 -"Adelie","Biscoe",41,20,203,4725,"male",2009 -"Adelie","Biscoe",37.7,16,183,3075,"female",2009 -"Adelie","Biscoe",37.8,20,190,4250,"male",2009 -"Adelie","Biscoe",37.9,18.6,193,2925,"female",2009 -"Adelie","Biscoe",39.7,18.9,184,3550,"male",2009 -"Adelie","Biscoe",38.6,17.2,199,3750,"female",2009 -"Adelie","Biscoe",38.2,20,190,3900,"male",2009 -"Adelie","Biscoe",38.1,17,181,3175,"female",2009 -"Adelie","Biscoe",43.2,19,197,4775,"male",2009 -"Adelie","Biscoe",38.1,16.5,198,3825,"female",2009 -"Adelie","Biscoe",45.6,20.3,191,4600,"male",2009 -"Adelie","Biscoe",39.7,17.7,193,3200,"female",2009 -"Adelie","Biscoe",42.2,19.5,197,4275,"male",2009 -"Adelie","Biscoe",39.6,20.7,191,3900,"female",2009 -"Adelie","Biscoe",42.7,18.3,196,4075,"male",2009 -"Adelie","Torgersen",38.6,17,188,2900,"female",2009 -"Adelie","Torgersen",37.3,20.5,199,3775,"male",2009 -"Adelie","Torgersen",35.7,17,189,3350,"female",2009 -"Adelie","Torgersen",41.1,18.6,189,3325,"male",2009 -"Adelie","Torgersen",36.2,17.2,187,3150,"female",2009 -"Adelie","Torgersen",37.7,19.8,198,3500,"male",2009 -"Adelie","Torgersen",40.2,17,176,3450,"female",2009 -"Adelie","Torgersen",41.4,18.5,202,3875,"male",2009 -"Adelie","Torgersen",35.2,15.9,186,3050,"female",2009 -"Adelie","Torgersen",40.6,19,199,4000,"male",2009 -"Adelie","Torgersen",38.8,17.6,191,3275,"female",2009 -"Adelie","Torgersen",41.5,18.3,195,4300,"male",2009 -"Adelie","Torgersen",39,17.1,191,3050,"female",2009 -"Adelie","Torgersen",44.1,18,210,4000,"male",2009 -"Adelie","Torgersen",38.5,17.9,190,3325,"female",2009 -"Adelie","Torgersen",43.1,19.2,197,3500,"male",2009 -"Adelie","Dream",36.8,18.5,193,3500,"female",2009 -"Adelie","Dream",37.5,18.5,199,4475,"male",2009 -"Adelie","Dream",38.1,17.6,187,3425,"female",2009 -"Adelie","Dream",41.1,17.5,190,3900,"male",2009 -"Adelie","Dream",35.6,17.5,191,3175,"female",2009 -"Adelie","Dream",40.2,20.1,200,3975,"male",2009 -"Adelie","Dream",37,16.5,185,3400,"female",2009 -"Adelie","Dream",39.7,17.9,193,4250,"male",2009 -"Adelie","Dream",40.2,17.1,193,3400,"female",2009 -"Adelie","Dream",40.6,17.2,187,3475,"male",2009 -"Adelie","Dream",32.1,15.5,188,3050,"female",2009 -"Adelie","Dream",40.7,17,190,3725,"male",2009 -"Adelie","Dream",37.3,16.8,192,3000,"female",2009 -"Adelie","Dream",39,18.7,185,3650,"male",2009 -"Adelie","Dream",39.2,18.6,190,4250,"male",2009 -"Adelie","Dream",36.6,18.4,184,3475,"female",2009 -"Adelie","Dream",36,17.8,195,3450,"female",2009 -"Adelie","Dream",37.8,18.1,193,3750,"male",2009 -"Adelie","Dream",36,17.1,187,3700,"female",2009 -"Adelie","Dream",41.5,18.5,201,4000,"male",2009 -"Gentoo","Biscoe",46.1,13.2,211,4500,"female",2007 -"Gentoo","Biscoe",50,16.3,230,5700,"male",2007 -"Gentoo","Biscoe",48.7,14.1,210,4450,"female",2007 -"Gentoo","Biscoe",50,15.2,218,5700,"male",2007 -"Gentoo","Biscoe",47.6,14.5,215,5400,"male",2007 -"Gentoo","Biscoe",46.5,13.5,210,4550,"female",2007 -"Gentoo","Biscoe",45.4,14.6,211,4800,"female",2007 -"Gentoo","Biscoe",46.7,15.3,219,5200,"male",2007 -"Gentoo","Biscoe",43.3,13.4,209,4400,"female",2007 -"Gentoo","Biscoe",46.8,15.4,215,5150,"male",2007 -"Gentoo","Biscoe",40.9,13.7,214,4650,"female",2007 -"Gentoo","Biscoe",49,16.1,216,5550,"male",2007 -"Gentoo","Biscoe",45.5,13.7,214,4650,"female",2007 -"Gentoo","Biscoe",48.4,14.6,213,5850,"male",2007 -"Gentoo","Biscoe",45.8,14.6,210,4200,"female",2007 -"Gentoo","Biscoe",49.3,15.7,217,5850,"male",2007 -"Gentoo","Biscoe",42,13.5,210,4150,"female",2007 -"Gentoo","Biscoe",49.2,15.2,221,6300,"male",2007 -"Gentoo","Biscoe",46.2,14.5,209,4800,"female",2007 -"Gentoo","Biscoe",48.7,15.1,222,5350,"male",2007 -"Gentoo","Biscoe",50.2,14.3,218,5700,"male",2007 -"Gentoo","Biscoe",45.1,14.5,215,5000,"female",2007 -"Gentoo","Biscoe",46.5,14.5,213,4400,"female",2007 -"Gentoo","Biscoe",46.3,15.8,215,5050,"male",2007 -"Gentoo","Biscoe",42.9,13.1,215,5000,"female",2007 -"Gentoo","Biscoe",46.1,15.1,215,5100,"male",2007 -"Gentoo","Biscoe",44.5,14.3,216,4100,NA,2007 -"Gentoo","Biscoe",47.8,15,215,5650,"male",2007 -"Gentoo","Biscoe",48.2,14.3,210,4600,"female",2007 -"Gentoo","Biscoe",50,15.3,220,5550,"male",2007 -"Gentoo","Biscoe",47.3,15.3,222,5250,"male",2007 -"Gentoo","Biscoe",42.8,14.2,209,4700,"female",2007 -"Gentoo","Biscoe",45.1,14.5,207,5050,"female",2007 -"Gentoo","Biscoe",59.6,17,230,6050,"male",2007 -"Gentoo","Biscoe",49.1,14.8,220,5150,"female",2008 -"Gentoo","Biscoe",48.4,16.3,220,5400,"male",2008 -"Gentoo","Biscoe",42.6,13.7,213,4950,"female",2008 -"Gentoo","Biscoe",44.4,17.3,219,5250,"male",2008 -"Gentoo","Biscoe",44,13.6,208,4350,"female",2008 -"Gentoo","Biscoe",48.7,15.7,208,5350,"male",2008 -"Gentoo","Biscoe",42.7,13.7,208,3950,"female",2008 -"Gentoo","Biscoe",49.6,16,225,5700,"male",2008 -"Gentoo","Biscoe",45.3,13.7,210,4300,"female",2008 -"Gentoo","Biscoe",49.6,15,216,4750,"male",2008 -"Gentoo","Biscoe",50.5,15.9,222,5550,"male",2008 -"Gentoo","Biscoe",43.6,13.9,217,4900,"female",2008 -"Gentoo","Biscoe",45.5,13.9,210,4200,"female",2008 -"Gentoo","Biscoe",50.5,15.9,225,5400,"male",2008 -"Gentoo","Biscoe",44.9,13.3,213,5100,"female",2008 -"Gentoo","Biscoe",45.2,15.8,215,5300,"male",2008 -"Gentoo","Biscoe",46.6,14.2,210,4850,"female",2008 -"Gentoo","Biscoe",48.5,14.1,220,5300,"male",2008 -"Gentoo","Biscoe",45.1,14.4,210,4400,"female",2008 -"Gentoo","Biscoe",50.1,15,225,5000,"male",2008 -"Gentoo","Biscoe",46.5,14.4,217,4900,"female",2008 -"Gentoo","Biscoe",45,15.4,220,5050,"male",2008 -"Gentoo","Biscoe",43.8,13.9,208,4300,"female",2008 -"Gentoo","Biscoe",45.5,15,220,5000,"male",2008 -"Gentoo","Biscoe",43.2,14.5,208,4450,"female",2008 -"Gentoo","Biscoe",50.4,15.3,224,5550,"male",2008 -"Gentoo","Biscoe",45.3,13.8,208,4200,"female",2008 -"Gentoo","Biscoe",46.2,14.9,221,5300,"male",2008 -"Gentoo","Biscoe",45.7,13.9,214,4400,"female",2008 -"Gentoo","Biscoe",54.3,15.7,231,5650,"male",2008 -"Gentoo","Biscoe",45.8,14.2,219,4700,"female",2008 -"Gentoo","Biscoe",49.8,16.8,230,5700,"male",2008 -"Gentoo","Biscoe",46.2,14.4,214,4650,NA,2008 -"Gentoo","Biscoe",49.5,16.2,229,5800,"male",2008 -"Gentoo","Biscoe",43.5,14.2,220,4700,"female",2008 -"Gentoo","Biscoe",50.7,15,223,5550,"male",2008 -"Gentoo","Biscoe",47.7,15,216,4750,"female",2008 -"Gentoo","Biscoe",46.4,15.6,221,5000,"male",2008 -"Gentoo","Biscoe",48.2,15.6,221,5100,"male",2008 -"Gentoo","Biscoe",46.5,14.8,217,5200,"female",2008 -"Gentoo","Biscoe",46.4,15,216,4700,"female",2008 -"Gentoo","Biscoe",48.6,16,230,5800,"male",2008 -"Gentoo","Biscoe",47.5,14.2,209,4600,"female",2008 -"Gentoo","Biscoe",51.1,16.3,220,6000,"male",2008 -"Gentoo","Biscoe",45.2,13.8,215,4750,"female",2008 -"Gentoo","Biscoe",45.2,16.4,223,5950,"male",2008 -"Gentoo","Biscoe",49.1,14.5,212,4625,"female",2009 -"Gentoo","Biscoe",52.5,15.6,221,5450,"male",2009 -"Gentoo","Biscoe",47.4,14.6,212,4725,"female",2009 -"Gentoo","Biscoe",50,15.9,224,5350,"male",2009 -"Gentoo","Biscoe",44.9,13.8,212,4750,"female",2009 -"Gentoo","Biscoe",50.8,17.3,228,5600,"male",2009 -"Gentoo","Biscoe",43.4,14.4,218,4600,"female",2009 -"Gentoo","Biscoe",51.3,14.2,218,5300,"male",2009 -"Gentoo","Biscoe",47.5,14,212,4875,"female",2009 -"Gentoo","Biscoe",52.1,17,230,5550,"male",2009 -"Gentoo","Biscoe",47.5,15,218,4950,"female",2009 -"Gentoo","Biscoe",52.2,17.1,228,5400,"male",2009 -"Gentoo","Biscoe",45.5,14.5,212,4750,"female",2009 -"Gentoo","Biscoe",49.5,16.1,224,5650,"male",2009 -"Gentoo","Biscoe",44.5,14.7,214,4850,"female",2009 -"Gentoo","Biscoe",50.8,15.7,226,5200,"male",2009 -"Gentoo","Biscoe",49.4,15.8,216,4925,"male",2009 -"Gentoo","Biscoe",46.9,14.6,222,4875,"female",2009 -"Gentoo","Biscoe",48.4,14.4,203,4625,"female",2009 -"Gentoo","Biscoe",51.1,16.5,225,5250,"male",2009 -"Gentoo","Biscoe",48.5,15,219,4850,"female",2009 -"Gentoo","Biscoe",55.9,17,228,5600,"male",2009 -"Gentoo","Biscoe",47.2,15.5,215,4975,"female",2009 -"Gentoo","Biscoe",49.1,15,228,5500,"male",2009 -"Gentoo","Biscoe",47.3,13.8,216,4725,NA,2009 -"Gentoo","Biscoe",46.8,16.1,215,5500,"male",2009 -"Gentoo","Biscoe",41.7,14.7,210,4700,"female",2009 -"Gentoo","Biscoe",53.4,15.8,219,5500,"male",2009 -"Gentoo","Biscoe",43.3,14,208,4575,"female",2009 -"Gentoo","Biscoe",48.1,15.1,209,5500,"male",2009 -"Gentoo","Biscoe",50.5,15.2,216,5000,"female",2009 -"Gentoo","Biscoe",49.8,15.9,229,5950,"male",2009 -"Gentoo","Biscoe",43.5,15.2,213,4650,"female",2009 -"Gentoo","Biscoe",51.5,16.3,230,5500,"male",2009 -"Gentoo","Biscoe",46.2,14.1,217,4375,"female",2009 -"Gentoo","Biscoe",55.1,16,230,5850,"male",2009 -"Gentoo","Biscoe",44.5,15.7,217,4875,NA,2009 -"Gentoo","Biscoe",48.8,16.2,222,6000,"male",2009 -"Gentoo","Biscoe",47.2,13.7,214,4925,"female",2009 -"Gentoo","Biscoe",NA,NA,NA,NA,NA,2009 -"Gentoo","Biscoe",46.8,14.3,215,4850,"female",2009 -"Gentoo","Biscoe",50.4,15.7,222,5750,"male",2009 -"Gentoo","Biscoe",45.2,14.8,212,5200,"female",2009 -"Gentoo","Biscoe",49.9,16.1,213,5400,"male",2009 -"Chinstrap","Dream",46.5,17.9,192,3500,"female",2007 -"Chinstrap","Dream",50,19.5,196,3900,"male",2007 -"Chinstrap","Dream",51.3,19.2,193,3650,"male",2007 -"Chinstrap","Dream",45.4,18.7,188,3525,"female",2007 -"Chinstrap","Dream",52.7,19.8,197,3725,"male",2007 -"Chinstrap","Dream",45.2,17.8,198,3950,"female",2007 -"Chinstrap","Dream",46.1,18.2,178,3250,"female",2007 -"Chinstrap","Dream",51.3,18.2,197,3750,"male",2007 -"Chinstrap","Dream",46,18.9,195,4150,"female",2007 -"Chinstrap","Dream",51.3,19.9,198,3700,"male",2007 -"Chinstrap","Dream",46.6,17.8,193,3800,"female",2007 -"Chinstrap","Dream",51.7,20.3,194,3775,"male",2007 -"Chinstrap","Dream",47,17.3,185,3700,"female",2007 -"Chinstrap","Dream",52,18.1,201,4050,"male",2007 -"Chinstrap","Dream",45.9,17.1,190,3575,"female",2007 -"Chinstrap","Dream",50.5,19.6,201,4050,"male",2007 -"Chinstrap","Dream",50.3,20,197,3300,"male",2007 -"Chinstrap","Dream",58,17.8,181,3700,"female",2007 -"Chinstrap","Dream",46.4,18.6,190,3450,"female",2007 -"Chinstrap","Dream",49.2,18.2,195,4400,"male",2007 -"Chinstrap","Dream",42.4,17.3,181,3600,"female",2007 -"Chinstrap","Dream",48.5,17.5,191,3400,"male",2007 -"Chinstrap","Dream",43.2,16.6,187,2900,"female",2007 -"Chinstrap","Dream",50.6,19.4,193,3800,"male",2007 -"Chinstrap","Dream",46.7,17.9,195,3300,"female",2007 -"Chinstrap","Dream",52,19,197,4150,"male",2007 -"Chinstrap","Dream",50.5,18.4,200,3400,"female",2008 -"Chinstrap","Dream",49.5,19,200,3800,"male",2008 -"Chinstrap","Dream",46.4,17.8,191,3700,"female",2008 -"Chinstrap","Dream",52.8,20,205,4550,"male",2008 -"Chinstrap","Dream",40.9,16.6,187,3200,"female",2008 -"Chinstrap","Dream",54.2,20.8,201,4300,"male",2008 -"Chinstrap","Dream",42.5,16.7,187,3350,"female",2008 -"Chinstrap","Dream",51,18.8,203,4100,"male",2008 -"Chinstrap","Dream",49.7,18.6,195,3600,"male",2008 -"Chinstrap","Dream",47.5,16.8,199,3900,"female",2008 -"Chinstrap","Dream",47.6,18.3,195,3850,"female",2008 -"Chinstrap","Dream",52,20.7,210,4800,"male",2008 -"Chinstrap","Dream",46.9,16.6,192,2700,"female",2008 -"Chinstrap","Dream",53.5,19.9,205,4500,"male",2008 -"Chinstrap","Dream",49,19.5,210,3950,"male",2008 -"Chinstrap","Dream",46.2,17.5,187,3650,"female",2008 -"Chinstrap","Dream",50.9,19.1,196,3550,"male",2008 -"Chinstrap","Dream",45.5,17,196,3500,"female",2008 -"Chinstrap","Dream",50.9,17.9,196,3675,"female",2009 -"Chinstrap","Dream",50.8,18.5,201,4450,"male",2009 -"Chinstrap","Dream",50.1,17.9,190,3400,"female",2009 -"Chinstrap","Dream",49,19.6,212,4300,"male",2009 -"Chinstrap","Dream",51.5,18.7,187,3250,"male",2009 -"Chinstrap","Dream",49.8,17.3,198,3675,"female",2009 -"Chinstrap","Dream",48.1,16.4,199,3325,"female",2009 -"Chinstrap","Dream",51.4,19,201,3950,"male",2009 -"Chinstrap","Dream",45.7,17.3,193,3600,"female",2009 -"Chinstrap","Dream",50.7,19.7,203,4050,"male",2009 -"Chinstrap","Dream",42.5,17.3,187,3350,"female",2009 -"Chinstrap","Dream",52.2,18.8,197,3450,"male",2009 -"Chinstrap","Dream",45.2,16.6,191,3250,"female",2009 -"Chinstrap","Dream",49.3,19.9,203,4050,"male",2009 -"Chinstrap","Dream",50.2,18.8,202,3800,"male",2009 -"Chinstrap","Dream",45.6,19.4,194,3525,"female",2009 -"Chinstrap","Dream",51.9,19.5,206,3950,"male",2009 -"Chinstrap","Dream",46.8,16.5,189,3650,"female",2009 -"Chinstrap","Dream",45.7,17,195,3650,"female",2009 -"Chinstrap","Dream",55.8,19.8,207,4000,"male",2009 -"Chinstrap","Dream",43.5,18.1,202,3400,"female",2009 -"Chinstrap","Dream",49.6,18.2,193,3775,"male",2009 -"Chinstrap","Dream",50.8,19,210,4100,"male",2009 -"Chinstrap","Dream",50.2,18.7,198,3775,"female",2009 diff --git a/_01_Example/Manuscript.qmd b/_01_Example/Manuscript.qmd index ede54a2..e8e46df 100644 --- a/_01_Example/Manuscript.qmd +++ b/_01_Example/Manuscript.qmd @@ -47,7 +47,7 @@ This manuscript presents a minimal reproducible example utilizing the penguins d #| echo: false # Load penguins data set -dat <- read.csv("Data.csv") +dat <- read.csv("data.csv") # Remove rows with NA dat_clean <- dat[complete.cases(dat), ] diff --git a/_01_Example/README.md b/_01_Example/README.md index 2d9183c..4dc3184 100644 --- a/_01_Example/README.md +++ b/_01_Example/README.md @@ -2,7 +2,7 @@ A minimal reproducible example on penguins for the workshop on Quarto manuscript This folder contains all relevant data to reproduce the manuscript: * An R-project ```Example.Rproj``` that was set up using a reproducible environment ```renv``` * An apaquarto manuscript ```Manuscript.qmd``` -* Primary data that are necessary to reproduce the analyses ```Data.csv``` +* Primary data that are necessary to reproduce the analyses ```data.csv``` * A bibliography file that contains all references used in the manuscript ```Bibliography.bib``` * Citation language style files that are necessary to format references in APA7 style ```apa7.csl``` and ```apa7.cls``` * further files and folders that are created when you produce the document diff --git a/choose_license.qmd b/choose_license.qmd index fd21291..a476337 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -275,12 +275,12 @@ Note that `Manuscript.qmd` was provided to you under [CC\ BY\ 4.0](https://creat Sometimes, there are file types which do not allow for adding the license information inside them, such as PDF and CSV files. For these, a corresponding `.license` file can be created. Try the following command which indicates that the data were published under [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/): ```{.bash .code-overflow-wrap filename="Terminal"} -reuse annotate --copyright="Kristen Gorman" --license="CC0-1.0" Data.csv +reuse annotate --copyright="Kristen Gorman" --license="CC0-1.0" data.csv ``` -You will notice that this creates another file called `Data.csv.license` containing the relevant information: +You will notice that this creates another file called `data.csv.license` containing the relevant information: -```{.yml filename="Data.csv.license"} +```{.yml filename="data.csv.license"} SPDX-FileCopyrightText: 2024 Kristen Gorman SPDX-License-Identifier: CC0-1.0 diff --git a/images/datawizard.png b/images/datawizard.png deleted file mode 100644 index 77a7f447a76574ae5d566718f83829ace373cc7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40274 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 diff --git a/images/pointblank.png b/images/pointblank.png new file mode 100644 index 0000000000000000000000000000000000000000..5afdebf4b6fcb83a420750859f9d461571f74c92 GIT binary patch literal 176110 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

*C39-2pMDrKPYjZhE2!hTB?tT=X>%T?1) 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 - - - - - - - - tinytable - - diff --git a/make_readme.qmd b/make_readme.qmd index 579a4e0..98bf636 100644 --- a/make_readme.qmd +++ b/make_readme.qmd @@ -197,7 +197,7 @@ renv::restore() The most important file in this project is `Manuscript.qmd` which contains the text of the article as well as the code for its computations. It is accompanied by the following files: - `Bibliography.bib`: bibliographic references used in the manuscript -- `Data.csv`: a data set containing the simplified `palmerpenguins` data created using `write.csv(palmerpenguins::penguins, "dat.csv", row.names = FALSE)` +- `data.csv`: a data set containing the simplified `palmerpenguins` data created using `write.csv(palmerpenguins::penguins, "dat.csv", row.names = FALSE)` - `data_dictionary.html`: a dictionary to the data file, created using `create_data_dictionary.R` The folder `_extensions` contains the `apaquarto` extension which is used to typeset the PDF accoording to APA guidelines. diff --git a/renv.lock b/renv.lock index 1867095..460b89d 100644 --- a/renv.lock +++ b/renv.lock @@ -9,6 +9,17 @@ ] }, "Packages": { + "DBI": { + "Package": "DBI", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "065ae649b05f1ff66bb0c793107508f5" + }, "MASS": { "Package": "MASS", "Version": "7.3-61", @@ -72,6 +83,29 @@ ], "Hash": "f27411eb6d9c3dada5edd444b8416675" }, + "V8": { + "Package": "V8", + "Version": "6.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Rcpp", + "curl", + "jsonlite", + "utils" + ], + "Hash": "6603bfcbc7883a5fed41fb13042a3899" + }, + "askpass": { + "Package": "askpass", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "sys" + ], + "Hash": "c39f4155b3ceb1a9a2799d700fbd4b6a" + }, "base64enc": { "Package": "base64enc", "Version": "0.1-3", @@ -98,6 +132,72 @@ ], "Hash": "71e7da5d38487173de67a1f0d763ceef" }, + "bigD": { + "Package": "bigD", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "78dfe2b21e523358871eea1601b04b56" + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d972ef991d58c19e6efa71b21f5e144b" + }, + "blastula": { + "Package": "blastula", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "commonmark", + "curl", + "digest", + "dplyr", + "fs", + "getPass", + "here", + "htmltools", + "httr", + "jsonlite", + "magrittr", + "mime", + "rlang", + "rmarkdown", + "stringr", + "uuid" + ], + "Hash": "0a4a92a60e3d152c7797f166cf927239" + }, + "blob": { + "Package": "blob", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "rlang", + "vctrs" + ], + "Hash": "40415719b5a479b87949f3aa0aee737c" + }, + "brio": { + "Package": "brio", + "Version": "1.1.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "c1ee497a6d999947c2c224ae46799b1a" + }, "bslib": { "Package": "bslib", "Version": "0.8.0", @@ -131,6 +231,19 @@ ], "Hash": "cd9a672193789068eb5a2aad65a0dedf" }, + "callr": { + "Package": "callr", + "Version": "3.7.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "processx", + "utils" + ], + "Hash": "d7e13f49c19103ece9e58ad2d83a7354" + }, "cli": { "Package": "cli", "Version": "3.6.3", @@ -156,6 +269,45 @@ ], "Hash": "d954cb1c57e8d8b756165d7ba18aa55a" }, + "commonmark": { + "Package": "commonmark", + "Version": "1.9.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "14eb0596f987c71535d07c3aff814742" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "9df43854f1c84685d095ed6270b52387" + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "methods", + "utils" + ], + "Hash": "859d96e65ef198fd43e82b9628d593ef" + }, + "curl": { + "Package": "curl", + "Version": "6.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "e8ba62486230951fcd2b881c5be23f96" + }, "datawizard": { "Package": "datawizard", "Version": "0.12.3", @@ -169,6 +321,62 @@ ], "Hash": "611537168bbb78b57720de109ec1ad19" }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "R6", + "blob", + "cli", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "utils", + "vctrs", + "withr" + ], + "Hash": "39b2e002522bfd258039ee4e889e0fd1" + }, + "desc": { + "Package": "desc", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "utils" + ], + "Hash": "99b79fcbd6c4d1ce087f5c5c758b384f" + }, + "diffobj": { + "Package": "diffobj", + "Version": "0.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "crayon", + "methods", + "stats", + "tools", + "utils" + ], + "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8" + }, "digest": { "Package": "digest", "Version": "0.6.37", @@ -180,6 +388,29 @@ ], "Hash": "33698c4b3127fc9f506654607fb73676" }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "generics", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "rlang", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "fedd9d00c2944ff00a0e2696ccf048ec" + }, "effectsize": { "Package": "effectsize", "Version": "0.8.9", @@ -257,6 +488,29 @@ ], "Hash": "15aeb8c27f5ea5161f9f6a641fafd93a" }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "15e9634c0fcd294799e9b2e929ed1b86" + }, + "getPass": { + "Package": "getPass", + "Version": "0.2-4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rstudioapi", + "utils" + ], + "Hash": "281e56bcab06202f51be7b50254f2fce" + }, "ggplot2": { "Package": "ggplot2", "Version": "3.5.1", @@ -284,14 +538,14 @@ }, "glue": { "Package": "glue", - "Version": "1.7.0", + "Version": "1.8.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "e0b3a53876554bd45879e596cdb10a52" + "Hash": "5899f1eaa825580172bb56c08266f37c" }, "grateful": { "Package": "grateful", @@ -309,6 +563,36 @@ ], "Hash": "f87d698662778b5bae252429742c23de" }, + "gt": { + "Package": "gt", + "Version": "0.11.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "bigD", + "bitops", + "cli", + "commonmark", + "dplyr", + "fs", + "glue", + "htmltools", + "htmlwidgets", + "juicyjuice", + "magrittr", + "markdown", + "reactable", + "rlang", + "sass", + "scales", + "tidyselect", + "vctrs", + "xml2" + ], + "Hash": "3170d1f0f45e531c241179ab57cd30bd" + }, "gtable": { "Package": "gtable", "Version": "0.3.5", @@ -324,6 +608,16 @@ ], "Hash": "e18861963cbc65a27736e02b3cd3c4a0" }, + "here": { + "Package": "here", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "rprojroot" + ], + "Hash": "24b224366f9c2e7534d2344d10d59211" + }, "highr": { "Package": "highr", "Version": "0.11", @@ -351,6 +645,36 @@ ], "Hash": "81d371a9cc60640e74e4ab6ac46dcedc" }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "htmltools", + "jsonlite", + "knitr", + "rmarkdown", + "yaml" + ], + "Hash": "04291cc45198225444a397606810ac37" + }, + "httr": { + "Package": "httr", + "Version": "1.4.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ], + "Hash": "ac107251d9d9fd72f0ca8049988f1d7f" + }, "insight": { "Package": "insight", "Version": "0.20.3", @@ -395,6 +719,16 @@ ], "Hash": "e1b9c55281c5adc4dd113652d9e26768" }, + "juicyjuice": { + "Package": "juicyjuice", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "V8" + ], + "Hash": "3bcd11943da509341838da9399e18bce" + }, "knitr": { "Package": "knitr", "Version": "1.48", @@ -471,6 +805,19 @@ ], "Hash": "7ce2733a9826b3aeb1775d56fd305472" }, + "markdown": { + "Package": "markdown", + "Version": "1.13", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "commonmark", + "utils", + "xfun" + ], + "Hash": "074efab766a9d6360865ad39512f2a7e" + }, "memoise": { "Package": "memoise", "Version": "2.0.1", @@ -534,6 +881,16 @@ ], "Hash": "ccbb8846be320b627e6aa2b4616a2ded" }, + "openssl": { + "Package": "openssl", + "Version": "2.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "askpass" + ], + "Hash": "d413e0fef796c9401a4419485f709ca1" + }, "palmerpenguins": { "Package": "palmerpenguins", "Version": "0.1.1", @@ -593,6 +950,21 @@ ], "Hash": "15da5a8412f317beeee6175fbc76f4bb" }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "callr", + "cli", + "desc", + "processx" + ], + "Hash": "30eaaab94db72652e72e3475c1b55278" + }, "pkgconfig": { "Package": "pkgconfig", "Version": "2.0.3", @@ -603,6 +975,65 @@ ], "Hash": "01f28d4278f15c76cddbea05899c5d6f" }, + "pkgload": { + "Package": "pkgload", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "desc", + "fs", + "glue", + "lifecycle", + "methods", + "pkgbuild", + "processx", + "rlang", + "rprojroot", + "utils", + "withr" + ], + "Hash": "2ec30ffbeec83da57655b850cf2d3e0e" + }, + "pointblank": { + "Package": "pointblank", + "Version": "0.12.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "base64enc", + "blastula", + "cli", + "dbplyr", + "digest", + "dplyr", + "fs", + "glue", + "gt", + "htmltools", + "knitr", + "magrittr", + "rlang", + "scales", + "testthat", + "tibble", + "tidyr", + "tidyselect", + "yaml" + ], + "Hash": "0c27be441965f1862008da6673b79fb7" + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f" + }, "processx": { "Package": "processx", "Version": "3.8.4", @@ -627,6 +1058,21 @@ ], "Hash": "878b467580097e9c383acbb16adab57a" }, + "purrr": { + "Package": "purrr", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "lifecycle", + "magrittr", + "rlang", + "vctrs" + ], + "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc" + }, "quarto": { "Package": "quarto", "Version": "1.4.4", @@ -657,6 +1103,31 @@ ], "Hash": "5e3c5dc0b071b21fa128676560dbe94d" }, + "reactR": { + "Package": "reactR", + "Version": "0.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools" + ], + "Hash": "b8e3d93f508045812f47136c7c44c251" + }, + "reactable": { + "Package": "reactable", + "Version": "0.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "digest", + "htmltools", + "htmlwidgets", + "jsonlite", + "reactR" + ], + "Hash": "6069eb2a6597963eae0605c1875ff14c" + }, "remotes": { "Package": "remotes", "Version": "2.5.0", @@ -734,6 +1205,16 @@ ], "Hash": "062470668513dcda416927085ee9bdc7" }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144" + }, "rstudioapi": { "Package": "rstudioapi", "Version": "0.16.0", @@ -788,6 +1269,72 @@ ], "Hash": "3f9796a8d0a0e8c6eb49a4b029359d1f" }, + "stringi": { + "Package": "stringi", + "Version": "1.8.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "39e1144fd75428983dc3f63aa53dfa91" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "960e2ae9e09656611e0b8214ad543207" + }, + "sys": { + "Package": "sys", + "Version": "3.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "de342ebfebdbf40477d0758d05426646" + }, + "testthat": { + "Package": "testthat", + "Version": "3.2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "brio", + "callr", + "cli", + "desc", + "digest", + "evaluate", + "jsonlite", + "lifecycle", + "magrittr", + "methods", + "pkgload", + "praise", + "processx", + "ps", + "rlang", + "utils", + "waldo", + "withr" + ], + "Hash": "3f6e7e5e2220856ff865e4834766bf2b" + }, "tibble": { "Package": "tibble", "Version": "3.2.1", @@ -807,27 +1354,44 @@ ], "Hash": "a84e2cc86d07289b3b6f5069df7a004c" }, - "tinylabels": { - "Package": "tinylabels", - "Version": "0.2.4", + "tidyr": { + "Package": "tidyr", + "Version": "1.3.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ - "methods", - "stats" + "R", + "cli", + "cpp11", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyselect", + "utils", + "vctrs" ], - "Hash": "55615f29c1e6a1dcc31610eec7b0a6cf" + "Hash": "915fb7ce036c22a6a33b5a8adb712eb1" }, - "tinytable": { - "Package": "tinytable", - "Version": "0.4.0", + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", - "methods" + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" ], - "Hash": "fb44b5c5e35e171b0129b22e7cb35949" + "Hash": "829f27b9c4919c16b593794a6344d6c0" }, "tinytex": { "Package": "tinytex", @@ -849,6 +1413,16 @@ ], "Hash": "62b65c52671e6665f803ff02954446e9" }, + "uuid": { + "Package": "uuid", + "Version": "1.2-1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "34e965e62a41fcafb1ca60e9b142085b" + }, "vctrs": { "Package": "vctrs", "Version": "0.6.5", @@ -873,6 +1447,21 @@ ], "Hash": "c826c7c4241b6fc89ff55aaea3fa7491" }, + "waldo": { + "Package": "waldo", + "Version": "0.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "diffobj", + "glue", + "methods", + "rlang" + ], + "Hash": "52f574062a7b66e56926988c3fbdb3b7" + }, "withr": { "Package": "withr", "Version": "3.0.1", @@ -898,6 +1487,19 @@ ], "Hash": "36ab21660e2d095fef0d83f689e0477c" }, + "xml2": { + "Package": "xml2", + "Version": "1.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "methods", + "rlang" + ], + "Hash": "1d0336142f4cd25d8d23cd3ba7a8fb61" + }, "yaml": { "Package": "yaml", "Version": "2.3.10", diff --git a/setup.qmd b/setup.qmd index e4d7a31..aa1473e 100644 --- a/setup.qmd +++ b/setup.qmd @@ -113,13 +113,19 @@ For the purpose of this tutorial, we will provide you with a data set and a corr ## Add Data -You can now download the data set we have prepared for you and put it into your project folder: [`Data.csv`](_01_Example/Data.csv){download=""} +```{r} +#| echo: false + +write.csv(palmerpenguins::penguins, file = "data.csv", row.names = FALSE) +``` + +You can now download the data set we have prepared for you and put it into your project folder: [`data.csv`](data.csv){download=""} ::: {.column-margin} ![palmerpenguins: Palmer Archipelago (Antarctica) Penguin Data](images/palmerpenguins.png){width=250px} ::: -The data set is from the package [`palmerpenguins`](https://allisonhorst.github.io/palmerpenguins/)^[Created with `palmerpenguins` v0.1.1 using `write.csv(palmerpenguins::penguins, file = "Data.csv", row.names = FALSE)`.] and contains the recorded bill lengths and sex of penguins living on three islands in the Palmer Archipelago, Antarctica. It was made available under the license [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). +The data set is from the package [`palmerpenguins`](https://allisonhorst.github.io/palmerpenguins/) (v`r packageVersion("palmerpenguins")`) and contains the recorded bill lengths and sex of penguins living on three islands in the Palmer Archipelago, Antarctica. It was made available under the license [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/). ::: {#imp-legal-restrictions .callout-important} ### Consider Legal Restrictions Before Sharing @@ -136,24 +142,29 @@ Privacy laws and contractual obligations may require you to create a completely Purely factual data such as measurements are usually not copyrightable, but literary or artistic works that cross the threshold of originality are. Additionally, in some jurisdictions data can be subject to _sui generis_ database rights which prevent extracting substantial parts of a database. As a consequence, you need to ensure that you own or have authority to share the data with respect to copyright and similar rights, and to license it to others (see "[Choose a License](choose_license.qmd)"). ::: -When publishing a data set, it is important to document the meaning (e.g., units) and possible values of its variables. This is typically done with a _data dictionary_ (also called a _codebook_). In the following, we will demonstrate how to create a simple data dictionary using the R packages [`tinylabels`](https://cran.r-project.org/package=tinylabels), [`datawizard`](https://easystats.github.io/datawizard/), and [`tinytable`](https://vincentarelbundock.github.io/tinytable/). You can install them now using: +When distributing a data set, it is important to document the meaning (e.g., units) and valid values of its variables. This is typically done with a _data dictionary_ (also called a _codebook_). In the following, we will demonstrate how to create a simple data dictionary using the R package [`pointblank`](https://rstudio.github.io/pointblank/). You can install it now using: + +::: {.column-margin} +![pointblank: Data Validation and Organization of Metadata for Local and Remote Tables](images/pointblank.png){width=250px} +::: ```{.r filename="Console"} -renv::install(c( - "tinylabels", - "datawizard", - "tinytable" -)) +renv::install("pointblank") ``` You can put the code that follows for creating the data dictionary into a new file called `create_data_dictionary.R`. -Using `tinylabels` we can add labels to the variables of a `data.frame` in R:^[Note that the code provided does not alter the data file -- no labels will be added to `Data.csv`. The labels are only added to a (temporary) copy of the data set within R in order to create the data dictionary.] +First, we write down everything we know about the data set. This includes: -```{r, echo = -1, eval = -2, filename="create_data_dictionary.R"} -dat <- read.csv(file.path("_01_Example", "Data.csv")) -dat <- read.csv("Data.csv") +- a general description of the data set +- descriptions of all columns +- valid values, where applicable +```{r, filename="create_data_dictionary.R"} +table_info <- c( + title = "palmerpenguins::penguins", + description = "Size measurements for adult foraging penguins near Palmer Station, Antarctica" +) descriptions <- c( species = "a character string denoting penguin species", island = "a character string denoting island in Palmer Archipelago, Antarctica", @@ -164,59 +175,90 @@ descriptions <- c( sex = "a character string denoting penguin sex", year = "an integer denoting the study year" ) -tinylabels::variable_label(dat) <- descriptions + +vals <- list( + species = c("Adelie", "Gentoo", "Chinstrap"), + island = c("Torgersen", "Biscoe", "Dream"), + sex = c("male", "female"), + year = c(2007, 2008, 2009) +) ``` -Subsequently, `datawizard` can be employed to create the data dictionary containing the name and label, but also some other information about each variable: +Depending on the type of data, it may also be necessary to describe measurement instruments, sampling procedures, appropriate weighting, or contact information. In this case, as the data have already been published, we only store a reference to its source: -::: {.column-margin} -![datawizard: Easy Data Wrangling and Statistical Transformations](images/datawizard.png){width=250px} -::: +```{r, class.output = "r code-overflow-wrap", echo = FALSE} -```{r, filename="create_data_dictionary.R"} -(dict <- datawizard::data_codebook(dat) |> - subset(select = -.row_id) |> - tinytable::tt()) +# We have provided the data set as CSV file to the readers. +# Therefore, we cannot assume or require that readers have +# the R package palmerpenguins installed. Instead, we create +# the citation on our end and hide how we obtained it. + +dat_source <- citation("palmerpenguins", auto = TRUE) |> + format(bibtex = FALSE, style = "text") +dat_source |> + gsub("\\n", " ", x = _) |> + gsub("\"", "\\\\\"", x = _) |> # Escape any quotation marks + paste0("dat_source <- \"", ... = _, "\"") |> + cat() ``` -Finally, we can store the data dictionary inside an HTML file using the R package `tinytable` and put the HTML file into the project folder as well. +Then, we use `pointblank` to create a data dictionary with this information. -::: {.column-margin} -![tinytable: Simple and Configurable Tables](images/tinytable.svg){width=250px} -::: +```{r, filename="create_data_dictionary.R"} +vals <- sapply(vals, \(x) { + paste0( + "(", + knitr::combine_words(x, and = " or ", before = "`", after = "`"), + ")" + ) +}) + +dat <- read.csv("data.csv") + +dict <- pointblank::create_informant( + dat, + tbl_name = NA, + label = table_info[["title"]], + lang = "en" +) |> + pointblank::info_tabular( + Description = table_info[["description"]], + Source = dat_source + ) |> + pointblank::info_columns_from_tbl(stack(descriptions)[2:1]) |> + pointblank::info_columns_from_tbl(stack(vals)[2:1]) |> + pointblank::get_informant_report( + title = "Data Dictionary for `data.csv`" + ) + +dict +``` + +Finally, we can store the data dictionary inside an HTML file and put the HTML file into the project folder as well. ```{.r filename="create_data_dictionary.R"} -tinytable::save_tt(dict, output = "data_dictionary.html") +pointblank::export_report(dict, filename = "data_dictionary.html") ``` -A human-readable data dictionary is necessary for making one's research reproducible and the example we provided demonstrates only the bare minimum. A full data documentation including measurement instruments, sampling procedures, appropriate weighting, contact information, and more information about the study can be created with the R package [`pointblank`](https://rstudio.github.io/pointblank/articles/INFO-1.html). And one could go even further by making the information machine-readable in a standardized way. We provide an optional example of that in @nte-frictionless. If you want to learn more about the sharing of research data, have a look at the tutorial "[FAIR research data management](https://lmu-osc.github.io/FAIR-Data-Management/)". +For a more elaborate introduction to `pointblank`, you can read their [Intro to Information Management](https://rstudio.github.io/pointblank/articles/INFO-1.html). + +One could go even further by making the information machine-readable in a standardized way. We provide an optional example of that in @nte-frictionless. If you want to learn more about the sharing of research data, have a look at the tutorial "[FAIR research data management](https://lmu-osc.github.io/FAIR-Data-Management/)". ::: {#nte-frictionless .callout-note collapse="true"} ### Create Machine-Readable Variable Documentation -This example demonstrates how the title and description of the data set, the description of the variables and their possible values are stored in a machine-readable way. +This example demonstrates how the title and description of the data set, the description of the variables and their valid values are stored in a machine-readable way. As before, we also provide a reference to the source. -```{.r filename="Console"} -table_info <- c( - title = "penguins data set", - description = "Size measurements for adult foraging penguins near Palmer Station, Antarctica" -) -descriptions <- c( - species = "a character string denoting penguin species", - island = "a character string denoting island in Palmer Archipelago, Antarctica", - bill_length_mm = "a number denoting bill length (millimeters)", - bill_depth_mm = "a number denoting bill depth (millimeters)", - flipper_length_mm = "an integer denoting flipper length (millimeters)", - body_mass_g = "an integer denoting body mass (grams)", - sex = "a character string denoting penguin sex", - year = "an integer denoting the study year" -) -vals <- list( - species = c("Adelie", "Gentoo", "Chinstrap"), - island = c("Torgersen", "Biscoe", "Dream"), - sex = c("male", "female"), - year = c(2007, 2008, 2009) -) +```{r, class.output = "r code-overflow-wrap", echo = FALSE} + +# We have provided the data set as CSV file to the readers. +# Therefore, we cannot assume or require that readers have +# the R package palmerpenguins installed. Instead, we create +# the citation on our end and hide how we obtained it. + +citation("palmerpenguins", auto = TRUE)$url |> + paste0("dat_source <- \"", ... = _, "\"") |> + cat() ``` Generally, metadata are either stored embedded into the data or externally, for example, in a separate file. We will use the "[frictionless data](https://frictionlessdata.io/)" standard, where metadata are stored separately. Another alternative would be [RO-Crate](https://www.researchobject.org/ro-crate/). @@ -225,7 +267,7 @@ Specifically, one can use the R package [`frictionless`](https://docs.ropensci.o ```{.r filename="Console"} # Read data and create schema -dat_filename <- "Data.csv" +dat_filename <- "data.csv" dat <- read.csv(dat_filename) dat_schema <- frictionless::create_schema(dat) @@ -234,7 +276,7 @@ dat_schema$fields <- lapply(dat_schema$fields, \(x) { c(x, description = descriptions[[x$name]]) }) -# Record possible values +# Record valid values dat_schema$fields <- lapply(dat_schema$fields, \(x) { if (x$name %in% names(vals)) { modifyList(x, list(constraints = list(enum = vals[[x$name]]))) @@ -258,12 +300,16 @@ dat_package <- frictionless::create_package() |> name = "CC0-1.0", path = "https://creativecommons.org/publicdomain/zero/1.0/", title = "CC0 1.0 Universal" + )), + sources = list(list( + title = "CRAN", + path = dat_source )) ) frictionless::write_package(dat_package, directory = ".") ``` -This creates the metadata file `datapackage.json` in the current directory. Make sure it is located in the same folder as `Data.csv`, as together they comprise a [data package](https://specs.frictionlessdata.io/data-package/). +This creates the metadata file `datapackage.json` in the current directory. Make sure it is located in the same folder as `data.csv`, as together they comprise a [data package](https://specs.frictionlessdata.io/data-package/). ::: Having added the data and its documentation, one can view and record the utilized packages with `renv`... From f9a7bd4d4edd091680825e793ad21e417b4661ee Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 13 Dec 2024 03:26:25 +0100 Subject: [PATCH 25/32] Don't mention SIL OFL anymore While accepted by FSF and OSI, it would be inconsistent to recommend a (somewhat) non-commercial license here. --- choose_license.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/choose_license.qmd b/choose_license.qmd index a476337..f23e723 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -120,7 +120,7 @@ Flowchart for Choosing a License One should take special care when applying license to the following types of works: -- __fonts:__ Copyleft licenses applied to fonts can be a special case: If a font is put under the license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/), any documents containing texts using that font will probably be derivative works and have to be put under the same license if shared. If the intent is that only derived fonts, if published, have to be put under the same license, the [SIL Open Font License\ 1.1](https://openfontlicense.org/) is an appropriate choice. Note, however, that it doesn't require attribution for usage. If no copyleft mechanism is intended, [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) also works for fonts. +- __fonts:__ Copyleft licenses applied to fonts can be a special case: If a font is put under the license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/), any documents containing texts using that font will probably be derivative works and have to be put under the same license if shared. As a non-copyleft license, [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) is a good choice for fonts. - __templates and TeX packages:__ If a template or, for this purpose, a $\TeX$ package, is licensed under a copyleft license such as the (A)GPLv3, every work that is a derivative of the template or that uses the $\TeX$ package has to put under the same license, if shared [@Koppor2016]. And if a document contained source code covered by the (A)GPLv3, the same license would also apply to the document [@MadHatter2022]. - __database content:__ If the work produced from a database (the "output") is a derivative of the content in the database, the output is subject to the restrictions laid out in the license. For example, if geospatial data were to be licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/), all maps produced from the data would likely need to fulfill this license's obligation for unrestricted access (its Anti-DRM provision) if shared [see @Poole2017]. Similarly, following an example from @Matt2009, if one were to choose the copyleft license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) for this purpose, any map that is a derivative of the data would also need to be licensed under [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) (or a compatible license) if shared. If the intention is to only have [derivative databases](https://osmfoundation.org/wiki/Licence/Community_Guidelines/Produced_Work_-_Guideline) under the same license, one might want to choose the [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/) for the database, as it was specifically designed not to apply to works produced from the data in the database. Otherwise [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) is an excellent choice for data. - __works in the public domain__: If a work is already in the public domain, it should be marked using the [PDM 1.0](https://creativecommons.org/publicdomain/mark/1.0/), rather than applying a waiver such as the [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) (or another license). From 82cd6eba8584657175c63c39214c8449dcb4917a Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 13 Dec 2024 13:14:28 +0100 Subject: [PATCH 26/32] Add SIL OFL again and remove CC0 SIL OFL is the de facto standard license (e.g., the only accepted license by Google Fonts and recommended by Fedora), while CC0 is not even mentioned. --- choose_license.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/choose_license.qmd b/choose_license.qmd index f23e723..5aae245 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -120,7 +120,7 @@ Flowchart for Choosing a License One should take special care when applying license to the following types of works: -- __fonts:__ Copyleft licenses applied to fonts can be a special case: If a font is put under the license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/), any documents containing texts using that font will probably be derivative works and have to be put under the same license if shared. As a non-copyleft license, [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) is a good choice for fonts. +- __fonts:__ Copyleft licenses applied to fonts can be a special case: If a font is put under the license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/), any documents containing texts using that font will probably be derivative works and have to be put under the same license if shared. The [SIL Open Font License\ 1.1](https://openfontlicense.org/) is the _de facto_ standard license for fonts, requiring that derived fonts, if published, have to be put under the same license. It doesn't require attribution for usage (e.g., when embedded in a document), but forbids that the font is sold by itself. Selling the font is allowed, however, if it is bundled with other software. - __templates and TeX packages:__ If a template or, for this purpose, a $\TeX$ package, is licensed under a copyleft license such as the (A)GPLv3, every work that is a derivative of the template or that uses the $\TeX$ package has to put under the same license, if shared [@Koppor2016]. And if a document contained source code covered by the (A)GPLv3, the same license would also apply to the document [@MadHatter2022]. - __database content:__ If the work produced from a database (the "output") is a derivative of the content in the database, the output is subject to the restrictions laid out in the license. For example, if geospatial data were to be licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/), all maps produced from the data would likely need to fulfill this license's obligation for unrestricted access (its Anti-DRM provision) if shared [see @Poole2017]. Similarly, following an example from @Matt2009, if one were to choose the copyleft license [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) for this purpose, any map that is a derivative of the data would also need to be licensed under [CC\ BY-SA\ 4.0](https://creativecommons.org/licenses/by-sa/4.0/) (or a compatible license) if shared. If the intention is to only have [derivative databases](https://osmfoundation.org/wiki/Licence/Community_Guidelines/Produced_Work_-_Guideline) under the same license, one might want to choose the [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/) for the database, as it was specifically designed not to apply to works produced from the data in the database. Otherwise [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) is an excellent choice for data. - __works in the public domain__: If a work is already in the public domain, it should be marked using the [PDM 1.0](https://creativecommons.org/publicdomain/mark/1.0/), rather than applying a waiver such as the [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) (or another license). From 4e7f26d396ab9d4224ae5db11caaf9f29f070eab Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Sun, 15 Dec 2024 18:22:44 +0100 Subject: [PATCH 27/32] Mention full text and code disclosure requirements --- choose_license.qmd | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index 5aae245..0ef348f 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -160,7 +160,9 @@ We have prepared two advanced license flowcharts, one for software, writing, ima The advanced license flowcharts also allow you to make additional decisions: - __Attribution__ means whether recipients of your work are required to provide attribution to you. For software licenses, the attribution is part of a copyright notice. Note that even if attribution is not a requirement of the license, good scientific practice demands that appropriate citations are made. +- __Add license text__ means that recipients need to distribute the full text of the license along with the work (rather than only mentioning its license, for example, via a link). - __State changes__ means that recipients need to indicate if changes were made. +- __Disclose code__ means that recipients need to disclose the source code when distributing modified versions of your work. - __Anti-DRM__ means that when others share your work they are not allowed to apply technological measures restricting anything that the license permits. Implementing such restrictive measures is also referred to as **d**igital **r**ights **m**anagement (DRM). From the Creative Commons licenses, only [CC0\ 1.0](https://creativecommons.org/publicdomain/zero/1.0/) does not require providing attribution. All software licenses in @fig-flowchart-non-data require providing attribution, although only [Apache\ 2.0](https://choosealicense.com/licenses/apache-2.0/) and [AGPLv3](https://choosealicense.com/licenses/agpl-3.0/) require others to indicate changes. For data, the [ODbL\ 1.0](https://opendatacommons.org/licenses/odbl/summary/) allows for technological measures that restrict the work only if a version of the database is provided in parallel without such measures. @@ -334,12 +336,12 @@ flowchart TB regulation --"Exists"--> follow_existing_norms["Follow that"] regulation --"Does not
exist"--> type("Work type?") - type --"Software"--> code_sa("Attribution?
State changes?
Copyleft?") + type --"Software"--> code_sa("Attribution?
Add license text?
State changes?
Disclose code?
Copyleft?") type --"Writing, image, audio, video"--> nocode_cc("Attribution?
State changes?
Anti-DRM?
Copyleft?") - code_sa --"Attribution &
State changes"--> apache["Apache 2.0"] - code_sa --"Attribution &
Weak copyleft"--> mpl["MPL 2.0"] - code_sa --"Attribution &
State changes &
Strong copyleft"--> agpl["AGPLv3"] + code_sa --"Attribution &
Add license text &
State changes"--> apache["Apache 2.0"] + code_sa --"Attribution &
Disclose code &
Weak copyleft"--> mpl["MPL 2.0"] + code_sa --"Attribution &
Add license text &
State changes &
Disclose code &
Strong copyleft"--> agpl["AGPLv3"] nocode_cc --"Neither"--> cc0["CC0 1.0"] nocode_cc --"Attribution &
State changes &
Anti-DRM"--> cc_by["CC BY 4.0"] From d3ad5cba727cf9cdcbd964073bc278a03baa9ba4 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Tue, 7 Jan 2025 18:51:45 +0100 Subject: [PATCH 28/32] Mention .gitignore files during archival --- archive.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive.qmd b/archive.qmd index 31537e9..3ebe1e4 100644 --- a/archive.qmd +++ b/archive.qmd @@ -51,7 +51,7 @@ First, create an account on the Zenodo Sandbox by clicking on _Sign up_ in the u Now you can follow the guide "[Create new upload](https://help.zenodo.org/docs/deposit/create-new-upload/)", taking into account the following notes specific to each step: -- __Add/remove files__: To circumvent the file limit on Zenodo, you can bundle your project folder in one ZIP file and upload that instead. +- __Add/remove files__: To circumvent the file limit on Zenodo, you can bundle your project folder in one ZIP file and upload that instead. Be sure to exclude all files mentioned in your `.gitignore` file! - __Fill in metadata__ - __Digital Object Identifier__ (DOI): Usually, you will want a DOI, therefore you need to choose _No_ for the question whether you already have a DOI for this upload, and click on _Get a DOI now!_. - __Resource type__: Select the most appropriate one, for example, _Publication / Preprint_. From 04567c00b04ea8398404d7146396913996cadc63 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Tue, 7 Jan 2025 18:52:55 +0100 Subject: [PATCH 29/32] Fix title --- literature.bib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/literature.bib b/literature.bib index e67f09e..ae74beb 100644 --- a/literature.bib +++ b/literature.bib @@ -94,7 +94,7 @@ @online{Wickham2023Design @book{Raymond2003, location = {Boston}, - title = {The art of {UNIX} programming: with contributions from thirteen {UNIX} pioneers, including its inventor, Ken Thompson}, + title = {The art of {UNIX} programming: with contributions from thirteen {UNIX} pioneers, including its inventor, {Ken Thompson}}, isbn = {978-0-13-142901-7}, url = {https://www.arp242.net/the-art-of-unix-programming/}, series = {Addison-Wesley professional computing series}, From b95d6b91c8a2e06dbc13163aebf30c22834a384f Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Thu, 16 Jan 2025 16:35:21 +0100 Subject: [PATCH 30/32] Improve mention of RStudio's license --- about.qmd | 668 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 664 insertions(+), 4 deletions(-) diff --git a/about.qmd b/about.qmd index 41d70a0..e31d7f2 100644 --- a/about.qmd +++ b/about.qmd @@ -42,7 +42,7 @@ sessioninfo::session_info() Except where noted otherwise, the material in this tutorial is licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/). None of the discussion in this tutorial constitutes legal advice. -The screenshots of the [RStudio IDE](https://github.com/rstudio/rstudio) are available under the [GNU Affero General Public License v3](https://www.gnu.org/licenses/gpl-3.0.html). +The screenshots of the [RStudio IDE](https://github.com/rstudio/rstudio) are available under the [GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.html). The source code is available on [GitHub](https://github.com/rstudio/rstudio/tree/v2024.04.2%2B764). ::: {.nte-agplv3 .callout-note collapse="true"} ### GNU Affero General Public License v3 @@ -50,11 +50,671 @@ The screenshots of the [RStudio IDE](https://github.com/rstudio/rstudio) are ava ```{.txt .code-overflow-wrap} Copyright (C) 2024 Posit Software, PBC -This program is free software: you can redistribute it and/or modify it under the terms of version 3 of the GNU Affero General Public License as published by the Free Software Foundation. +Unless you have received this program directly from Posit Software pursuant to the terms of a commercial license agreement with Posit Software, then RStudio is licensed to you under the AGPLv3, the terms of which are included below. Details on obtaining the source code for this distribution are included in the file SOURCE. -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. +RStudio includes other open source software whose license terms can be found in the file NOTICE. RStudio for Windows is bundled with binary copies of several utilities, whose license terms can be found in the file SOURCE. -You should have received a copy of the GNU Affero General Public License along with this program. If not, see . + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. ``` ::: From 88133c365b2847bc336b2f020213795a8cdd7ae7 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 17 Jan 2025 01:41:59 +0100 Subject: [PATCH 31/32] Retain capitalization of "Creative Commons" --- literature.bib | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/literature.bib b/literature.bib index ae74beb..9d2ec8a 100644 --- a/literature.bib +++ b/literature.bib @@ -214,7 +214,7 @@ @online{MadHatter2022 } @misc{Klimpel2013, - title = {Free knowledge based on Creative Commons licenses}, + title = {Free knowledge based on {Creative Commons} licenses}, url = {https://meta.wikimedia.org/wiki/Free_knowledge_based_on_Creative_Commons_licenses}, publisher = {Wikimedia}, author = {Klimpel, Paul}, @@ -234,7 +234,7 @@ @online{ODI2015 } @online{CC2024FAQ, - title = {Answer to 'Can {I} combine material under different Creative Commons licenses in my work?' in Frequently Asked Questions}, + title = {Answer to 'Can {I} combine material under different {Creative Commons} licenses in my work?' in Frequently Asked Questions}, url = {https://creativecommons.org/faq/#can-i-combine-material-under-different-creative-commons-licenses-in-my-work}, author = {{Creative Commons}}, urldate = {2024-09-03}, @@ -361,7 +361,7 @@ @malte.elson/retaining-copyright-for-figures-in-academic-publications-to-allow-e } @online{CC2024Certificate, - title = {Creative Commons Certificate for Educators, Academic Librarians, and Open Culture}, + title = {{Creative Commons} Certificate for Educators, Academic Librarians, and Open Culture}, url = {https://certificates.creativecommons.org/cccertedu/}, author = {{Creative Commons}}, urldate = {2024-09-03}, @@ -526,7 +526,7 @@ @online{Stallman2022NoLimit } @online{Moller2023, - title = {The case for Free use: reasons not to use a Creative Commons -{NC} license}, + title = {The case for Free use: reasons not to use a {Creative Commons} -{NC} license}, url = {https://freedomdefined.org/index.php?title=Licenses/NC&oldid=27327}, author = {Möller, Erik}, urldate = {2024-09-21}, From c1c098670fed9d4b12f089741c550369e2409340 Mon Sep 17 00:00:00 2001 From: Florian Kohrt Date: Fri, 17 Jan 2025 03:46:12 +0100 Subject: [PATCH 32/32] Shorten section on other restrictions - Make the argument more succinct - Remove the references as they are not that good --- choose_license.qmd | 6 +---- literature.bib | 66 ---------------------------------------------- 2 files changed, 1 insertion(+), 71 deletions(-) diff --git a/choose_license.qmd b/choose_license.qmd index 0ef348f..450a878 100644 --- a/choose_license.qmd +++ b/choose_license.qmd @@ -170,11 +170,7 @@ From the Creative Commons licenses, only [CC0\ 1.0](https://creativecommons.org/ ::: {#nte-silos .callout-note collapse="true"} ### Other Restrictions -As indicated before, a free/open license must allow creating derivative works and must allow exercising the rights granted by it _for any purpose_, including commercial use. There are a few good resources on the reasoning behind that [e.g., see @Klimpel2013; @ODI2015; @Stallman2022NoLimit; @Moller2023; @Vezina2020; @WikimediaCommons2009], but we would like to highlight one reason in particular. - -With the rights provided by free/open licenses comes the possibility to build on and combine multiple works by different authors, which is essential for any cultural and scientific activity. However, this is only possible if the various licenses involved are compatible with each other. For example, one is allowed to remix two figures if the first is licensed under CC\ BY\ 4.0 and the second under CC\ BY-SA\ 4.0 because the licenses were written to be compatible with each other [compare @CC2024FAQ]. Also note that CC\ BY-SA\ 4.0 is [one-way compatible](https://creativecommons.org/compatiblelicenses) with the GPLv3, which in turn is compatible with the AGPLv3. - -However, applying a restriction such as only permitting non-commercial use or not allowing derivative works creates _silos_ of works which are mutually incompatible with each other. Put differently, one cannot share a remix of two works where one is licensed under CC\ BY-SA\ 4.0 and the other only allows non-commercial use. In order to avoid silos, one should only choose licenses which are compatible with the dominant copyleft license in the respective community [@Lammerhirt2017; @Wheeler2014]. If you would like to learn more about the different types of compatibility, we recommend you to read the article "A Quick Guide to Software Licensing for the Scientist-Programmer" by @Morin2012. The following diagram provides an overview of the compatibility of various licenses: +As indicated before, a free/open license must allow creating derivative works and must allow exercising the rights granted by it _for any purpose_, including commercial use. Otherwise, creating adaptations from multiple works by different authors would either limit commercial use for everybody (including the authors) or would not be possible at all (when including materials with a copyleft license), effectively creating _silos_ of works which are mutually incompatible with each other. This is especially relevant for work types for which adaptations are created frequently, such as text, data, and source code. In order to avoid silos, one should only choose licenses which are compatible with the dominant copyleft license in the respective community [@Lammerhirt2017; @Wheeler2014]. If you would like to learn more about the different types of compatibility, we recommend you to read the article "A Quick Guide to Software Licensing for the Scientist-Programmer" by @Morin2012. The following diagram provides an overview of the compatibility of various licenses: !["Open data-capable license interoperability" by Robbie Morrison [-@Morrison2024] licensed under [CC\ BY\ 4.0](https://creativecommons.org/licenses/by/4.0/)](images/Morrison2024.jpg){.lightbox} ::: diff --git a/literature.bib b/literature.bib index 9d2ec8a..f353613 100644 --- a/literature.bib +++ b/literature.bib @@ -213,35 +213,6 @@ @online{MadHatter2022 date = {2022-03-18} } -@misc{Klimpel2013, - title = {Free knowledge based on {Creative Commons} licenses}, - url = {https://meta.wikimedia.org/wiki/Free_knowledge_based_on_Creative_Commons_licenses}, - publisher = {Wikimedia}, - author = {Klimpel, Paul}, - urldate = {2024-09-03}, - date = {2013}, - langid = {english} -} - -@online{ODI2015, - title = {What are the impacts of non-open licences?}, - url = {https://theodi.org/insights/guides/what-are-the-impacts-of-non-open-licences/}, - abstract = {This guide outlines the key considerations that inform licensing decisions}, - author = {{Open Data Institute}}, - urldate = {2024-09-03}, - date = {2015-09-22}, - langid = {english} -} - -@online{CC2024FAQ, - title = {Answer to 'Can {I} combine material under different {Creative Commons} licenses in my work?' in Frequently Asked Questions}, - url = {https://creativecommons.org/faq/#can-i-combine-material-under-different-creative-commons-licenses-in-my-work}, - author = {{Creative Commons}}, - urldate = {2024-09-03}, - date = {2024-06-03}, - langid = {english} -} - @article{Morin2012, title = {A Quick Guide to Software Licensing for the Scientist-Programmer}, volume = {8}, @@ -517,23 +488,6 @@ @report{ScienceEurope2021 howpublished = {\url{https://scienceeurope.org/our-resources/practical-guide-to-the-international-alignment-of-research-data-management/}} } -@online{Stallman2022NoLimit, - title = {Why programs must not limit the freedom to run them}, - url = {https://www.gnu.org/philosophy/programs-must-not-limit-freedom-to-run.html}, - author = {Stallman, Richard}, - urldate = {2024-09-21}, - date = {2022-09-06}, -} - -@online{Moller2023, - title = {The case for Free use: reasons not to use a {Creative Commons} -{NC} license}, - url = {https://freedomdefined.org/index.php?title=Licenses/NC&oldid=27327}, - author = {Möller, Erik}, - urldate = {2024-09-21}, - date = {2023-12-15}, - langid = {english}, -} - @online{Fogel2006, title = {The Surprising History of Copyright and The Promise of a Post-Copyright World}, url = {https://questioncopyright.org/promise/}, @@ -737,26 +691,6 @@ @online{Villa2016CC0 date = {2016-09-26}, langid = {american}, } -@online{Vezina2020, - title = {Why Sharing Academic Publications Under “No Derivatives” Licenses is Misguided}, - url = {https://creativecommons.org/2020/04/21/academic-publications-under-no-derivatives-licenses-is-misguided/}, - abstract = {Using “No Derivatives” ({ND}) licenses on academic publications is ill-advised for policing academic fraud and unhelpful to the dissemination of research.}, - titleaddon = {Creative Commons}, - author = {Vézina, Brigitte}, - urldate = {2024-12-04}, - date = {2020-04-21}, - langid = {american}, -} -@online{WikimediaCommons2009, - title = {Licensing/Justifications}, - url = {https://commons.wikimedia.org/w/index.php?title=Commons:Licensing/Justifications&oldid=917608913}, - titleaddon = {Wikimedia Commons}, - author = {{Wikimedia Commons contributors}}, - urldate = {2024-12-04}, - date = {2009-06-30}, - langid = {english}, -} - @misc{UKRN2023, title = {Rights Retention Strategy: a Primer from {UKRN}}, rights = {https://creativecommons.org/licenses/by/4.0/legalcode},