Skip to main content
It looks like you're using Internet Explorer 11 or older. This website works best with modern browsers such as the latest versions of Chrome, Firefox, Safari, and Edge. If you continue with this browser, you may see unexpected results.
Note that this guide is still under review!
Publishing and preserving your research software helps you to ensure this software is citable and accessible in addition to ensuring the reproducibility and open science. This guide will help you to learn how to
publish your code on Github and how to generate a citable archived repository for your code on Zenodo, a research data and code repository. Zenodo allows users to get permanent citable DOIs for published repositories on GitHub. The guide assumes that you already have a Github account.
If you want to learn how to prepare your code for publishing, check out
Why making your code citable is important
Publishing and preserving code is important:
You will be using your code in future
Your software will be easily found
You want people to use your code and give you
credit Others would be encouraged to contribute to your code
It is required now by funders and publishers to publish your data and code
Others can easily use your methods and code and build upon it
Providing citation information make it easy for others to cite your work and your code
Advance the science
Encourage open science
Allow reproducibility and transparency
Workflow for preserving your code
The following workflow is divided into two main parts:
Publishing your code/software on GitHub
Getting DOI for your code/software
Publishing your code on GitHub:
Log in to your GitHub account if you are not logged in.
Create a new repository:
Head over to the top of green button in the middle of the page to generate a new repository.
Fill in the repository data, e.g., name (make the name descriptive), description.
Make the repo public to be able to archive it.
Initiate the repository with a README or you can add it later.
here to see what you should include in your README.md. Add your scripts and other related files to your software.
Add licensing information to your repository.
An important tip: Provide an informative descriptive for your code!
Getting a DOI for your software:
Link GitHub with Zendodo:
Head over to
https://zenodo.org You can log in to Zenodo with your GitHub account.
You may need to authorize Zenodo application
Zenodo will redirect you back to GitHub for Authorization
Choose the repository webhooks options
From the drop-down menu next to your email address at the top of the page, select
You will be presented with a list of all your Github repositories
Archiving a repo:
Select a repository you want to archive on Zenodo.
Toggle the "on" button next to the repository ou need to archive.
Click on the Repo that you want to reserve.
Click on Create
release button at the top of the page. Zenodo will redirect you back to GitHub’s repo page to generate a release Trigger Zenodo to Archive your repository
Go to GitHub and create a release. Zenodo will automatically download a .zip-ball of each new release and register a DOI.
If this is the first release of your code then you should give it a version number of v1.0.0. Add description for your release then click the Publish release button.
Zenodo takes an archive of your GitHub repository each time you create a new Release
To ensure that everything is working:
go to https://zenodo.org/account/settings/github/, or the Upload page (https://zenodo.org/deposit), you will find your repo is listed
Click on the repo, Zenodo will redirect you to a page that contains a DOI for your repo will the information that you added to the repo.
You can edit the archive on Zenodo and/or publish a new version of your software.
It is recommended that you add a description for your repo and fill in other metadata in the edit page.
Your code is now published on a Github public repository and archived on Zenodo.
Your software is now published on a Github public repository and has a DOI that can be used for citations.
Tools for Documentation
Software sharing platforms:
Software Archiving options:
Research Data Management Program Service Lead