Skip to main content

Search Account

Citing & publishing software: Publishing research software


Why should you publish software?

Publishing your research software helps ensure your software is citable, preserved, and accessible -- which supports scientific reproducibility; replication, and transparency. Additionally, it helps with gaining appropriate credit for your work. Publishing software also helps the community by enabling reuse of your code and methods. Moreover, it is increasingly required by funders who want researchers to make their data and workflows open and by publishers who aim to improve replicability. 

Where to publish software?

There are a number of different channels for publishing research software, including software papers, general source code repositories, and disciplinary archives. (Read more about options for software publishing…)

Where to publish depends on context...

  • When the primary consideration is scholarly attribution, consider publishing in software journals first, or in general archives that enable the software to be cited.
  • When the primary consideration is transparency and replicability, consider general replication archives.
  • When the primary consideration is reuse consider publishing in a general replication archive, or disciplinary archive.
  • When the primary consideration is preservation, consider an archive that provides an institutional commitment to persistence – this includes most general replication archives, and most institutional archives.

It is frequently appropriate to publish in multiple channels. For example, many creators of statistical software maintain development code in Github so that developers can contribute to it and reuse itpublish released versions in CRAN so that practitioners can find it and apply it; and vet major new functionality through publication in The Journal of Statistical Software.

How to make your software more citable?

Making your software citable both gains credit for your work, and improves reproducibility of research that relies on the software. There are a variety of ways to make your software citable:

  • Publishing your software in a software journal provides a citation with a persistent identifier, and provides peer review.
  • Publishing your software in a major general replication archive provides a citation with a persistent identifier, and usually allows you to publish citable new versions of the software as you choose.
  • If you publish software in Github, you can create a citable archived version whenever you choose, through Zenodo.
  • If you publish software in a channel that does not directly support citation, you can include a citation file in the software itself.

Software Publishing Options

A software journal, such as PLOS One or The Journal of Open Research Software, allows submissions that "allow for submissions entirely focused on research software", enabling description and credit for research software (Force11 software citation principles). Like data journals, which focus on publishing papers that describe data sets, these journals support publishing papers that explain and describe research software packages. Publishing a software paper both serves as a way to extensively document the code, and to get publication credit for your work. 

Major source code repositories, such as Github, Codeplex, BitBucket, or Sourceforge publish code, and provide many features to support ongoing development.

Disciplinary software repository such as The Comprehensive R Archive Network (CRAN) or NanoHub are often heavily used among specific research communities to locate software that can be applied in research.

General subject/replication archives such as Dataverse, Zenodo, or FigShare  publish individual versions of software and data in support of replication and reuse.

Institutional repositories such as DSPACE@MIT archive papers, publications, and data in support of an institution's commitment to durable open access to the content produced by its community. 

Archive Your Software and Making it Citable Using Zenodo

If your code is stored in GitHub, you can archive your repository and get a permanent citable DOI by archiving in either Zenodo or Figshare. These are data repositories that allow management of all kinds of data, and are both free for researchers to use. Zenodo and Figshare can also be used to store research data.

Archiving your GitHub repository in Zenodo or Figshare: 

  Zenodo (directions) Figshare (directions)
How to link GitHub with Zenodo or Figshare

Log into Zenodo with your GitHub account

Authorize Zenodo application in GitHub

Use a browser extension bookmark or this webpage to fetch your GitHub repository

Authorize your Figshare account to sync with GitHub

Your GitHub repository Must be public. Toggle the "on" button next to your repository. Must be public to archive. 
Provides a DOI? Yes. Provide metadata in Zenodo and click "publish". DOI is also displayed in GitHub Yes
When you publish a new commit Does not update archive Does not update archive
When you publish a new release Automatically triggers Zenodo to archive your repository Automatically updates if you turn on autosync in Figshare
Also supports linking to research data collections? Yes Yes

Creating a CITATION file for your software

The FORCE11 software citation principles include the recommendation that software packages include a CITATION file along with other README files that documents exactly how the authors of the software would like to be cited by others. This ensures that users of the package know what information to include in their citations and makes citations of the code more likely, increasing the credit that you receive. 

Software citation files can be human readable CITATION files or machine readable files, and may vary depending on the language (for instance, R supports a citation() function as well as CITATION files). Citation files should include:

  • author(s) in the order you would like them to be credited
  • title of the software package or code
  • link to the location where the code can be downloaded or purchased 
  • DOI if you have created one, or other unique identifier -- Force11 recommends that the identifier resolve to "a persistent landing page that contains metadata and a link to the software itself, rather than directly to the source code files, repository, or executable."
  • version number
  • release date

A citation file can also include contributor roles and the software license. Also consider including a BibTeX citation and the citation of any associated publications. 

Librarian for Electrical Engineering & Computer Science