Skip to main content
Versioning & Collaboration
Software that helps you keep track of your process during your research will also ultimately make it easier for you to share that process with others.
This version control software allows you to transparently keep track of how files are changed during a project, and go to back to earlier versions if necessary
Tutorials for Git and the unix shell
There are a number of websites that facilitate collaboration by hosting the content you're working on. These all include versioning capabilies:
GitHub is an extremely popular hosting platform that was designed to work with Git. Aimed at open-source development, it allows you to work with unlimited contributors but charges if you want to keep your work private.
Bitbucket is a less popular, though still well-used, platform. Private repositories are free, though if you have more than 5 collaborators you will need to pay.
Open Science Framework
OSF is a free platform that allows you to link to other storage platforms like Dropbox, GitHub, and Google Drive. Its focus is on keeping track of the higher level project, rather than the code itself.
Pipelines tell the story of your research, detailing your methodology in a way that others can reproduce. This can take the form of a script that will make your process directly machine executable:
A Python-based tool
Another Python-based tool
Unix users will be comfortable using Make as their build tool
A build tool implemented in Ruby
Or it can be in a human readable form, styled like a notebook with code interspersed:
Python users can use Jupiter notebooks to combine text and Python code in one executable document
R users can write text and code together in R Markdown documents
Sometimes it is important to keep the entire operating system identical across different computers. Virtual environments help to minimise the effect of minor variations in operating systems.
A tool to create a virtual disk image that acts as a self-contained machine within the host operating system.
A tool to create more lightweight versions of virtual machines that are hosted on a Hub accessible to anyone over the internet.
A tool to automate the installation and configuration of the software within your virtual environment.