Making repos citeable
Citation
There are a few registered agencies that can register DOIs with DOI.org. The big one for science is DataCite and you can see the organizations and institutions that are members of DataCite. NOAA is a member so if there were a software release program, one could get a DOI through that. That is how some USGS software is released and DOI generated. But Zenodo is probably most common for GitHub products and has GitHub integration now so that archiving and DOI generation can be automated when you create a release on GitHub.
If your work is something people cite, like a report or a software package, add a CITATION.md
file or add citation information to the Readme.md
file. You can create a DOI for software. Not all repositories are things that someone would cite however so this is not something one always adds.
Examples
Here are examples of DOIs created for agency software products
- EPA CMAQ creates DOIs for the software releases on Zenodo
- EPA CMAQ creates data DOIs for the CMAQ simulation output on Dataverse
- USGS releases software and generate DOIs for its software. Example the DOI for groundmotion is generated by USGS Software Releases.
Zenodo
A public GitHub repository is an option but not completely ideal as the code may change and GitHub may not be around forever. Therefore, proper archives such as Zenodo (https://zenodo.org/) are preferable.
Note Zenodo has GitHub integration for archiving your GitHub releases.
Socrata
Socrata also has publicly accessible archived data with a permanent record. You can contact your NOAA database manager to discuss options for archiving additional data.
Badges
Here is examples of code to add to your Readme.md
to get the DOI badges. Edit the DOI and svg urls to that for your DOI.
Derivation work and use
In some cases, you might want to add a statement about “fair use” and “fair attribution” to your repo. That really depends on what the repo is about. I tend to add this when I am sharing teaching material and I want to be clear that it is fine to copy the repo material and re-work it for other uses.