This lesson is in the early stages of development (Alpha version)
This lesson will discuss how you (and why) you can publish the software used to enable your
This lesson assumes familiarity with the
Git version control system,
the Python programming language,
and will also touch on using the Unix shell. If these are not familiar to you,
then it would be worth trying to go to a Software Carpentry workshop before trying to work through
this one. If you are unable to go, you can work through the notes linked for each topic above,
which is the same material as a Software Carpentry workshop would cover.
This lesson incorporates material from
Research Software Engineering in Python
by Damien Irving, Kate Hertweck, Luke Johnston, Joel Ostblom, Charlotte Wickham,
and Greg Wilson, and the supporting repository
Setup Download files required for the lesson
Get it in Git
Why should I make my code public?
How do I get files into a GitHub repository?
What should I include in a repository?
Structuring your repository
How should files be organised in a repository?
What metadata should be included, and how?
How do I adjust the structure of a repository once it is created?
Documentation and automation
How do I tell other researchers how to use my code?
How can I make it easier for others (or me) to run my full analysis?
Jupyter Notebooks and automation
How does using Jupyter Notebooks affect automation and reproducibility?
How do I put a Jupyter Notebook into a repository?
What changes can I make to a Jupyter Notebook to improve automation?
How do I get data for my code to work on?
Where should I store data?
Should data be published?
Reproducible software environments
Why do I need to document the software environment?
How do I document what packages and versions are needed to reproduce my work?
Verifying your analysis
How can I use environment definitions to get started on a new machine?
How can I check that my analysis is working?
How do I verify that the environment definition is correct?
Publishing in open science repositories
How is an open science repository different to something like GitHub?
How do I create a permanent version of record of my code?
How can I create a DOI for my code and cite it?
The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.