Selecting a Publication Location for Open Code
The long-term preservation and accessibility of code and research software should be ensured by archiving it on a suitable, trustworthy platform. A distinction must be made here between publication to make code available in principle and publication as or as part of a research publication.
Large code repositories such as GitHub (or at least an institute-internal Git repository that is publicly accessible) are ideal for making code accessible in principle. Their advantage is that they already offer a version control and a release management. You can also initially restrict the visibility of your own repository for third parties (“make private”) and decide when you want to make it publicly accessible. You also have the option of referencing a specific version (commit) or to cite a release.
Code Notebooks, such as Jupyter Notebook, can also be stored and managed on GitHub and shared as executable versions via environments such as MyBinder. Containers, such as Docker, can be shared via platforms such as Docker Hub.
There are various ways to publish code for research purposes:
- You can search for a subject-specific repository. If you are planning a journal publication, first check whether there is already a repository associated with the journal. Various journals of the American Economic Association (AEA) have their own repository for data and code. Storing code in this repository is part of a publication and is also assigned a DOI. One of such data repositories is the ZBW Journal Data Archive. Various journals make data and code for published articles available to the research community there.
- You can store the code on generic repositories such as Zenodo or Figshare. You will then also receive your own DOI for subsequent citation. Once files have been uploaded, they cannot be changed afterwards. This type of publication is therefore particularly suitable for certain versions or a release. Code stored on Zenodo or Figshare can also be cited accordingly in a publication (for example as supplemental material). GitHub already includes support for Zenodo, with which a release is published on Zenodo.
- You can also publish more extensive code packages or entire software as an independent publication, but there are very few options for this. The Open Access journal Journal of Open Source Software publishes research software that is Open Source. The journal’s reviewers examine the submitted code and its documentation. If all criteria are met, publication takes place as a so-called software paper, in which the published software is referenced on a repository. A list of possible journals can also be found on the advice page “In which journals should I publish my software?“ from the Software Sustainability Institute at the University of Edinburgh.
- You can also publish your code on platforms such as the Open Science Framework (OSF).
- If there are no other options, you could also consider uploading code as “supplemental material”, that means as a kind of appendix to a journal publication. However, these appendices are not citable themselves.
The following points may also play a role in your decision as to where and for what purpose you ultimately store your code:
- sufficient storage space for your purposes,
- long-term archiving (ideally: long-term archiving) of the code,
- provider is secure on the market in the long term,
- free of charge if possible.