How to upload your scientific software code to GitHub and get a DOI from Zenodo

Opinions
News & Events
Software
GitHub
Zenodo
A step-by-step guide to migrating scientific software to GitHub and linking it with Zenodo for automatic DOI assignment — illustrated with the KARDIA software.
Published

April 14, 2019

This past weekend I had the pleasant experience of migrating my software KARDIA from its old home at the SourceForge repository to GitHub. Although the clearest benefit from this migration is the possibility to more easily collaborate with other programmers for the future development of the software, there are several other sweet candies that came along…

First of all, it looks great! With less than an hour of markdown editing, the README file, that is open by default when you visit the landing page, became KARDIA’s tutorial, with a detailed description of all the main functions, including screenshots from the program’s graphical interface.

Second, with the perfect integration between GitHub and Zenodo, in less than five minutes I had uploaded the latest release of the software code to the Zenodo repository, which instantly assigned a DOI, making the code itself a citable research object!

GitHub is ultimately a collaboration platform for programmers who wish to work together for the co-development of open source software, but is also a place for end users to request features, report bugs and offer their feedback. Another cool feature is the wiki option, which makes it possible for programmers and users to collaborate for the development of instructional material and detailed use cases.

GitHub has been around for about 10 years and is considered the state of the art in git-based software development platforms. My first impressions from this new workflow for developing and sharing open source scientific software have been so positive that I strongly recommend it to any colleagues who think that their software code could be useful to others.

Here are a few steps to get you going:

  1. Document your code properly using function descriptions, inline comments and intuitive variable names.
  2. Install the git version control system: https://git-scm.com.
  3. Create a GitHub account and add a new repository.
  4. Use terminal commands (see the documentation) or a third-party interface such as GitHub Desktop to upload your local repository to GitHub.
  5. After uploading, make sure to include a license file and a readme file. GitHub makes it easy by adding these two files automatically upon request. Edit your readme file using Markdown to introduce your software and its functions. You can use KARDIA’s readme as a reference — here is the raw code and here is the formatted result.
  6. Create a Zenodo account if you do not already have one.
  7. Once logged in to Zenodo, follow the simple steps described here and in less than five minutes you will have your software code automatically uploaded to Zenodo with a DOI — and a beautiful badge like this one: DOI

If you feel that your software also deserves to be reviewed and published as a journal paper with its own DOI, a great option is The Journal of Open Source Software. From what I have read at the author guidelines, everything looks pretty straightforward once your code is properly documented and uploaded to GitHub.

Finally, make sure to share your new repository with your colleagues and with existing users of your software. And when all is said and done, sit back, relax and celebrate your contribution to making science more open and collaborative.