diff --git a/_guidance/preparing-replication-package-details.md b/_guidance/preparing-replication-package-details.md index f93d7cea..8409d806 100644 --- a/_guidance/preparing-replication-package-details.md +++ b/_guidance/preparing-replication-package-details.md @@ -9,7 +9,7 @@ date: 2026-01-07 This document describes how to prepare your code for verification in detail, taking into account some of the most frequent issues that the Data Editor and his team have encountered in submitted replication packages. -> ⚠️❗ **IMPORTANT:** At this point, you should only be seeing this page if you were asked by the Data Editor team to do so, and if your replication package relies on a single software. Admissible containers are listed in the [Step 5 section: authorized containers](#authorized-containers). We are not currently attempting to generalize this to multi-software replication packages, though [it](https://github.com/AEADataEditor/docker-r-gurobi) [is](https://github.com/AEADataEditor/docker-aer-2022-0276) [possible](https://github.com/AEADataEditor/docker-aer-2023-0505) [to do so](https://github.com/AEADataEditor/docker-aer-2023-0700). +> ⚠️❗ **IMPORTANT:** At this point, you should only be seeing this page if you were asked by the Data Editor team to do so, and if your replication package relies on a single software, or a **small number of single-software steps**. Admissible software are listed in the [Step 5 section: authorized containers](preparing-replication-package-step5#authorized-containers). We are not currently attempting to generalize this to arbitrary multi-software replication packages, though [it](https://github.com/AEADataEditor/docker-r-gurobi) [is](https://github.com/AEADataEditor/docker-aer-2022-0276) [possible](https://github.com/AEADataEditor/docker-aer-2023-0505) [to do so](https://github.com/AEADataEditor/docker-aer-2023-0700). diff --git a/_guidance/preparing-replication-package-finalize.md b/_guidance/preparing-replication-package-finalize.md index d3c57232..059358c5 100644 --- a/_guidance/preparing-replication-package-finalize.md +++ b/_guidance/preparing-replication-package-finalize.md @@ -4,7 +4,7 @@ toc: true date: 2026-02-16 --- -[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 5](preparing-replication-package-step5) +[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 5](preparing-replication-package-step5) | [Next: Submitting ▶](preparing-replication-package-submit) ### Finalize README @@ -36,7 +36,7 @@ Code ran for about 35 hours. Code runs about 10 minutes for Stata portion, and about 5 days for MATLAB portion. ``` +> NOTE about SIVACOR here: You should not modify your README after your last run on SIVACOR, as the TRO generated by SIVACOR contains a checksum that would highlight the modification to the README. However, the auxiliary files generated by SIVACOR (the `.jsonld` file) contain all the necessary information. -### Submitting -You can now submit your replication package to the Data Editor, along with the completed checklist from above, and the generated `main.log`/`main.Rout` as evidence. \ No newline at end of file +[▶ Next: Submitting](preparing-replication-package-submit) diff --git a/_guidance/preparing-replication-package-step1.md b/_guidance/preparing-replication-package-step1.md index 81aa6cd0..ca80659b 100644 --- a/_guidance/preparing-replication-package-step1.md +++ b/_guidance/preparing-replication-package-step1.md @@ -4,7 +4,7 @@ toc: true date: 2026-02-16 --- -[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) +[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [Next: Step 2 ▶](preparing-replication-package-step2) > You may or may not have a main file. The following should be adapted to your circumstances. You do not need to create a file that is called `main.do` if you already have one, but you may need to update your existing main file. @@ -12,6 +12,10 @@ date: 2026-02-16 Creating a single main file is straightforward. However, you will want to make some minor edits depending on where, in the above template setup, the file is located: +> The adjustments described on this page also apply to a **small number (2-4) of single-software main files** that are run in sequence. +> +> If using SIVACOR in [Step 5](preparing-replication-package-step5): SIVACOR allows for multi-step software flows, where a **small** number of single-software containers are run in sequence, with the output of one container being used as the input to the next. See [SIVACOR documentation](https://docs.sivacor.org/docs/step0-prepare/#your-replication-package-only-uses-a-single-software-application-per-step). Each of the main files should be structured as outlined on this page. + ## Scenario A: `main` is in the `code` directory The most frequent scenario we see (which we call **Scenario A**) amongst economists is that the main file is in the `code` directory: diff --git a/_guidance/preparing-replication-package-step2.md b/_guidance/preparing-replication-package-step2.md index 7f0e3bd3..a28667c4 100644 --- a/_guidance/preparing-replication-package-step2.md +++ b/_guidance/preparing-replication-package-step2.md @@ -4,7 +4,7 @@ toc: true date: 2026-02-16 --- -[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 1](preparing-replication-package-step1) +[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 1](preparing-replication-package-step1) | [Next: Step 3 ▶](preparing-replication-package-step3) Two issues: diff --git a/_guidance/preparing-replication-package-step3.md b/_guidance/preparing-replication-package-step3.md index 9dac038f..848930e9 100644 --- a/_guidance/preparing-replication-package-step3.md +++ b/_guidance/preparing-replication-package-step3.md @@ -4,7 +4,7 @@ toc: true date: 2026-02-16 --- -[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 2](preparing-replication-package-step2) +[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 2](preparing-replication-package-step2) | [Next: Step 4 ▶](preparing-replication-package-step4) ## Stata packages diff --git a/_guidance/preparing-replication-package-step4.md b/_guidance/preparing-replication-package-step4.md index bbdf6bae..69179fcd 100644 --- a/_guidance/preparing-replication-package-step4.md +++ b/_guidance/preparing-replication-package-step4.md @@ -4,7 +4,7 @@ toc: true date: 2026-02-16 --- -[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 3](preparing-replication-package-step3) +[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 3](preparing-replication-package-step3) | [Next: Step 5 ▶](preparing-replication-package-step5) Displays (figures and tables) should be written out to external files, and the authors' versions, as used in the manuscript, should be provided. In the prototypical replication package structure above, these files would be in the `results` directory. diff --git a/_guidance/preparing-replication-package-step5.md b/_guidance/preparing-replication-package-step5.md index 671928fd..b1d52205 100644 --- a/_guidance/preparing-replication-package-step5.md +++ b/_guidance/preparing-replication-package-step5.md @@ -4,7 +4,7 @@ toc: true date: 2026-02-16 --- -[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 4](preparing-replication-package-step4) +[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Step 4](preparing-replication-package-step4) | [Next: Finalize README ▶](preparing-replication-package-finalize) After you have made all the changes, you should test your code. To make this simple, we have set up a public website that hides the complexity of running containers from you. You only need to choose the software, the system will run the properly configured code automatically. @@ -12,31 +12,33 @@ After you have made all the changes, you should test your code. To make this si We have developed the [SIVACOR](https://sivacor.org) service, which allows you to run your code using authorized containers without the need to install software on your own computer, producing a Trusted Research Object (TRO). -> In fact, we will run your code using this same system to verify compliance with all of the above steps! +> If successful, your last run on SIVACOR will be the package you [submit](preparing-replication-package-submit#sivacor) to the Data Editor! [![SIVACOR landing page](/images/sivacor-login.png)](https://sivacor.org) -For more information on how to use SIVACOR, see . Once you have successfully run your code on SIVACOR, provide the generated certified ZIP file instead of the original replication package to the Data Editor (via import to your openICPSR draft deposit). A TRO does not need to be re-run by the Data Editor. +For more information on how to use SIVACOR, see . Once you have successfully run your code on SIVACOR, you can proceed directly to [Submitting](preparing-replication-package-submit#sivacor). A TRO does not need to be re-run by the Data Editor. ## Authorized containers -SIVACOR uses a curated list of containers, chosen because they are reliably available, and achieve the desired transparency. You can inspect the most current list at . In general, Stata, R, and MATLAB (with Dynare) are supported. +SIVACOR uses a curated list of containers, chosen because they are reliably available, and achieve the desired transparency. You can inspect the most current list at . At the moment, Stata, R, and MATLAB (with Dynare) are supported. + +> If you know of a different container that we should add to this list, please let us know. The [AEA Data Editor's Github profile](https://github.com/AEADataEditor/) has a few other containers that have worked. However, we do not allow for arbitrary (user-created) containers on SIVACOR, though if you think that they are useful for your replication package, please reach out. + +> SIVACOR allows for multi-step software flows, where a **small** number of single-software containers are run in sequence, with the output of one container being used as the input to the next. See [SIVACOR documentation](https://docs.sivacor.org/docs/step0-prepare/#your-replication-package-only-uses-a-single-software-application-per-step). -If you know of a different container that we should add to this list, please let us know. The [AEA Data Editor's Github profile](https://github.com/AEADataEditor/) has a few other containers that have worked. However, we do not allow for arbitrary (user-created) containers on SIVACOR, though if you think that they are useful for your replication package, please reach out. ## A note about multi-software workflows We are not currently attempting to generalize this to all multi-software replication packages. Building multi-software containers [definitely](https://github.com/AEADataEditor/docker-r-gurobi) [is](https://github.com/AEADataEditor/docker-aer-2022-0276) [possible](https://github.com/AEADataEditor/docker-aer-2023-0505) [with some effort](https://github.com/AEADataEditor/docker-aer-2023-0700). -However, SIVACOR does allow for multi-step software flows, where a **small** number of single-software containers are run in sequence, with the output of one container being used as the input to the next. See [SIVACOR documentation](https://docs.sivacor.org/docs/step0-prepare/#your-replication-package-only-uses-a-single-software-application-per-step). ## Testing using Docker locally (advanced) -If SIVACOR does not work for you, you can either attempt to run it in Docker on your own computer, or skip this step entirely and revert back to the standard (manual) verification process. Installing and running Docker on your computer is straightforward (undergraduate students in the AEA Data Editor team have done this in under half an hour), but may not meet everybody's needs. +If SIVACOR does not work for you, you can either attempt to run it in Docker on your own computer, or skip this step entirely and revert back to the standard (manual) verification process. Installing and running Docker on your computer is straightforward (undergraduate students in the AEA Data Editor team have done this in under half an hour), but may not meet everybody's needs, or your institution's IT policies. -> ⚠️❗ **IMPORTANT:** If you do not have Docker installed on your computer, do not have the rights to install Docker on your computer, or do not have access otherwise to Docker, please do not attempt this, and skip straight [to the alternative approach](#alternative-approach). +> ⚠️❗ **IMPORTANT:** If you do not have Docker installed on your computer, do not have the rights to install Docker on your computer, or do not have access otherwise to Docker, please do not attempt this, and skip straight [to the alternative approach](#fallback-run-on-a-different-computer). > ⚠️❗ **IMPORTANT:** Do not provide us with a custom container that is not on the above list. Transparency requires that the container be built, using a `Dockerfile` or `apptainer.def` file, from publicly available sources. While we will happily use your container, it must be built from one of the above sources, or well-known "standard" sources, such as "Docker Official Images" in the Dockerhub `library` space (e.g., ). diff --git a/_guidance/preparing-replication-package-submit.md b/_guidance/preparing-replication-package-submit.md new file mode 100644 index 00000000..054053fc --- /dev/null +++ b/_guidance/preparing-replication-package-submit.md @@ -0,0 +1,36 @@ +--- +title: "Submitting" +toc: true +date: 2026-08-10 +--- + +[◀ Back to Checklist](preparing-replication-package) | [Back to Details](preparing-replication-package-details) | [◀ Previous: Finalize README](preparing-replication-package-finalize) + +You can now submit your replication package to the Data Editor. + +In all cases, the [**completed checklist**](preparing-replication-package#checklist) should be sent directly to the Data Editor, using `reply-all` to the email that you received from the Data Editor. + +## If you ran using SIVACOR {#sivacor} + +From the [output from SIVACOR](https://docs.sivacor.org/docs/step4-download/), you should + +- use the `Replicated Package` ZIP file, and **replace the entire content** of your draft openICPSR deposit. +- not remove any files from the ZIP file. +- upload the ZIP file using the ["Import"](data-deposit-aea#importing-zip-files) function in your draft openICPSR deposit. + + +The ZIP file contains your entire upload (minus any explicitly deleted files!), plus any generated output and log files, as well as the **certificate** which documents that you ran this replication package through SIVACOR. + +You do not need to email any of the log files or output to the Data Editor separately. + +## Submitting other checked code + +In addition to the checklist, update the journal deposit with any updated code, data, and README. Ideally, you should also include and document the outputs and log files generated by your reproducible run. In the interest of transparency, these will be published as part of the replication package, without further edits. + +However, if you prefer, you can submit the generated logfiles as evidence by email. + +## Mark the deposit as complete + +In all cases, you should mark the openICPSR deposit as **complete** by [re-submitting it](faq#i-was-asked-to-modify-files-in-my-repository-not-yet-published-but-i-cannot-upload-or-edit-anything). + +## You are done. diff --git a/_guidance/preparing-replication-package.md b/_guidance/preparing-replication-package.md index c162e0fd..c2b30187 100644 --- a/_guidance/preparing-replication-package.md +++ b/_guidance/preparing-replication-package.md @@ -9,9 +9,9 @@ date: 2025-12-04 This document describes how to prepare your code for verification, taking into account some of the most frequent issues that the Data Editor and his team have encountered in submitted replication packages. -> ⚠️❗ **IMPORTANT:** At this point, you should only be seeing this page if you were asked by the Data Editor team to do so. If using multiple software in the replication package, you must be able to split the processing into a reasonably small set of single-software master scripts (see [SIVACOR documentation](https://docs.sivacor.org/docs/step0-prepare/#your-replication-package-only-uses-a-single-software-application-per-step)). Only a limited set of software are feasible at this time (see [Step 5 section: authorized containers](#authorized-containers)). +> ⚠️❗ **IMPORTANT:** At this point, you should only be seeing this page if you were asked by the Data Editor team to do so. If using multiple software in the replication package, you must be able to split the processing into a reasonably small set of single-software master scripts (see [SIVACOR documentation](https://docs.sivacor.org/docs/step0-prepare/#your-replication-package-only-uses-a-single-software-application-per-step)). Only a limited set of software are feasible at this time (see [Step 5 section: authorized containers](preparing-replication-package-step5#authorized-containers)). > -> You do NOT need to know how Docker or similar software works, nor do you need to be able to run containers on your own computer (though it helps). See [Step 5 section: Using the SIVACOR website](#using-the-sivacor-website). +> You do NOT need to know how Docker or similar software works, nor do you need to be able to run containers on your own computer (though it helps). See [Step 5 section: Using the SIVACOR website](preparing-replication-package-step5#using-the-sivacor-website). ## Overview @@ -43,22 +43,22 @@ The AI will work through each step with you, identify issues, and suggest specif Print off (as PDF or on paper) the following checklist, and tick off each item as you complete it. Provide the completed checklist as part of the replication package.
-- [ ] [**Step 1: Main file**](preparing-replication-package-step1): A single main file is provided that runs all code. [Details](preparing-replication-package-step1) -- [ ] [**Step 2: Path names**](preparing-replication-package-step2): All paths in code use `/` (forward slashes) relative to a single top-level project directory (`$rootdir`, `$basedir`, etc.). The top-level project directory is set dynamically, not hard-coded (explanations below). [Details](preparing-replication-package-step2) -- [ ] [**Step 3: Dependencies**](preparing-replication-package-step3): All packages/libraries/dependencies are installed via code once. [Details](preparing-replication-package-step3) +- [ ] [**Step 1: Main file**](preparing-replication-package-step1): A single main file (or a very small number of single-software main files) is provided that runs all code. [▶](preparing-replication-package-step1) +- [ ] [**Step 2: Path names**](preparing-replication-package-step2): All paths in code use `/` (forward slashes) relative to a single top-level project directory (`$rootdir`, `$basedir`, etc.). The top-level project directory is set dynamically, not hard-coded (explanations below). [▶](preparing-replication-package-step2) +- [ ] [**Step 3: Dependencies**](preparing-replication-package-step3): All packages/libraries/dependencies are installed via code once. [▶](preparing-replication-package-step3) - [ ] For Stata, these packages are installed into a subdirectory in the project (`$rootdir/ado`, `$basedir/adofiles`, etc.), and used by the code. - [ ] For R, `renv` is used (exceptions made for other package management systems if such a system is explained). - [ ] For Python, environments are used (native `venv` or `conda`), and the necessary top-level requirements specified (no OS-specific dependencies are included). -- [ ] [**Step 4: Displays**](preparing-replication-package-step4): All figures and tables are written out to clearly identified external files, and the authors' versions, as used in the manuscript, are provided. [Details](preparing-replication-package-step4) -- [ ] [**Step 5: Testing on AEA-maintained website**](preparing-replication-package-step5): After all changes were made, the code was run using the referenced website, a certified ZIP file was created, and is provided instead of the original replication package (alternatives exist for certain situations). [Details](preparing-replication-package-step5) -- [ ] (usually not necessary) [**Finalize**](preparing-replication-package-finalize): Update the README with the necessary information about computer specifications, Docker image used, memory and disk space requirements, and expected runtime. +- [ ] [**Step 4: Displays**](preparing-replication-package-step4): All figures and tables are written out to clearly identified external files, and the authors' versions, as used in the manuscript, are provided. [▶](preparing-replication-package-step4) +- [ ] [**Step 5: Testing on AEA-maintained website**](preparing-replication-package-step5): After all changes were made, the code was run using the referenced website, a certified ZIP file was created, and is provided instead of the original replication package (alternatives exist for certain situations). [▶](preparing-replication-package-step5) +- [ ] (usually not necessary) [**Finalize**](preparing-replication-package-finalize): Update the README with the necessary information about computer specifications, Docker image used, memory and disk space requirements, and expected runtime. [▶](preparing-replication-package-finalize)
## Submitting -You can now submit your replication package to the Data Editor, along with the completed checklist from above, and the generated `main.log`/`main.Rout` as evidence. +You can now submit your replication package to the Data Editor, along with the completed checklist from above, and the generated `main.log`/`main.Rout` as evidence. See the [Submitting](preparing-replication-package-submit) page for details. ## Problems? diff --git a/_posts/2026-08-12-PSM-Github.md b/_posts/2026-08-12-PSM-Github.md new file mode 100644 index 00000000..500dd974 --- /dev/null +++ b/_posts/2026-08-12-PSM-Github.md @@ -0,0 +1,85 @@ +--- +title: "PSA: Please be precise when using Github as input to scientific articles." +categories: dataeditor +date: 2026-08-12 +mastodon: +bluesky: +tags: + - data editor tips + - reproducibility + - data citation + - Github + - licenses +--- + +If you use Github as an deposit for your scientific output, or you are re-using somebody else's Github deposit, please be precise. I have some thoughts... + + + + +From a recent (draft) replication package: + +> Data on Kelly et al. (2021)'s patent indicator are downloaded from the authors’ GitHub repository. A copy of the data is provided as part of this archive. The data are in the public domain. To download, visit at https://github.com/KPSS2017, click the pinned repository named "Measuring-Technological-Innovation-Over-the-Long-Run-Extended-Data," and download "PatentSimilarityImportanceBreakthrough_forPost2022.csv.zip". + +A few things, first for those re-using the data, and then for those providing the data. + +## For re-users + +### Citing + +If using the Github data, and not the replication package to the original article, the Github data must be cited. Here, that would be + +> Kelly, B., Papanikolaou, D., Seru, A. and Taddy, M. 2023. *Updates and Extension of Measuring Technological Innovation Over the Long Run*. https://github.com/KPSS2017/Measuring-Technological-Innovation-Over-the-Long-Run-Extended-Data, version from November 2023. + +On the [Github README](https://github.com/KPSS2017/Measuring-Technological-Innovation-Over-the-Long-Run-Extended-Data/blob/main/README.md), the authors actually say + +> The version released on Sept 29, 2023 is the latest. + +but the [commits](https://github.com/KPSS2017/Measuring-Technological-Innovation-Over-the-Long-Run-Extended-Data/commits/main/) on the Github actually tell a different story: there are September and November updates to the deposit. Whether those are materially different is not clear (these are ZIP files), but as a re-user, you should identify the version you ACTUALLY used. + +Note that the authors ask that their published article be cited as a source. That is fine, as long as the re-user ALSO cites the actual source of the data, which is Github. + +### Downloading + +The very verbose description is actually not the best way. First, the actual Github repository has a direct link. The *pinned* repositories can change over time, without any reason. Re-users should not rely on that. In fact, as I mentioned above, there are multiple commits. Unless the Github owners manipulate those commits (possible), the specific commit is what should be identified, possibly in the citation, but definitely in the download instructions. Here is the same verbose instructions expressed as a single URL: + +> Download +> + +which preserves the metadata (it doesn't directly download the data, but rather, allows you to see the context in which you are downloading the data). Much simpler. + +### Distributing + +The quote I provided mentions "data are in the public domain." That is incorrect. The data are downloadable by anybody without registration. However, "public domain" is a legal term that means that nobody has the copyright on the data. Possibly because the entity producing the data is legally excluded from claiming copyright (oversimplifying somewhat, in the US, the federal government), or because the person producing the data has explicitly relinquished this (often under a "CC0" license). + +But in the absence of true "public domain", the data are copyrighted by the original authors. Fair-use is fine (so using the data is likely the intent of posting it on the internet here), but re-purposing the data may not be. Copyright = all rights reserved does not need an explicit mention! So strictly speaking, you need the authors' permission to redistribute the data, or you might have to claim "fair use" explicitly. We usually send the re-users to ask permission, which is cleaner. + +## For authors + +All of the above can be greatly simplified if authors (those posting on Github) followed some simple best practices: + +### Define a license + +Authors should clearly specify the license under which the data are released. Common licenses include Creative Commons (CC) licenses, which allow for various levels of reuse of data, or open-source software licenses like MIT or GPL, which might be more relevant for code. A dual-license setup can work. See [guidance](https://aeadataeditor.github.io/aea-de-guidance/Licensing_guidance) on my website. The license should be expressed as a `LICENSE.txt` or `LICENSE.md` file in the root of the repository, it will be picked up and displayed in the sidebar by Github. + +If authors do NOT want to provide a general license, that is also fine, but they should likely explicitly say it, to be clear, although that may not be legally required: "Copyright John Doe and Alice Smith, all rights reserved. Permission to redistribute or reuse this data must be obtained from the authors." + +### Versioning + +Rather than having re-users guess at versions, and have long commit-based URLs, create tags or releases. Very easy to do in both `git` and on Github. That would allow for much simpler URLs: + +> Download [https://github.com/KPSS2017/Measuring-Technological-Innovation-Over-the-Long-Run-Extended-Data/blob/ **v1.1** /PatentSimilarityImportanceBreakthrough_forPost2022.csv.zip](https://github.com/KPSS2017/Measuring-Technological-Innovation-Over-the-Long-Run-Extended-Data/blob/v1.1/PatentSimilarityImportanceBreakthrough_forPost2022.csv.zip) + +(OK, that's not much shorter in this case, because of the long repository and file names, but it is easier to read). + +### Citation + +Authors in general prefer that you cite the article, because under current academic norms (at least in economics), is the only thing that counts. Nevertheless, if the article is published in 2021, and the data in 2023, re-users are misleading their readers because they materially reference data that does not exist at the cited location (the article, or its replication package), and cannot be easily linked. The solution is to cite both. + +And to make that easy, use the [CITATION.cff](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files) file. It, too, is highlighted by Github in the right panel. + +### Preserving + +And finally, if you have license and citation all tidied up, why not preserve it, and get a DOI to boot? This does away with the fragility of deposits and commits (anybody can delete their Github repo forever, in 30 seconds flat), and simplifies citation as well. You can do so nearly automatically (if creating releases) [via Zenodo](https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content), or to [Dataverse](https://github.com/marketplace/actions/dataverse-uploader-action). + +Re-users can then simply use the Zenodo version, which has a DOI, and is guaranteed to be preserved. \ No newline at end of file