The GitLab platform (git.doit.wisc.edu) supports collaborative research and research reproducibility by allowing UW-Madison researchers to back up, version and share their code using git version control. This shared GitLab instance can be a useful tool for UW-Madison researchers and labs in the following ways.
Researchers can use GitLab to:
Back up their version controlled software
Collaborate with UW-Madison colleagues on source code for research tools and web applications
Perform data analysis and validation of results using GitLabCI
How to Get Started
The following things are required to use GitLab for research:
Meet with the DoIT Shared Tools team for a needs analysis, which will help the Shared Tools team make recommendations about how GitLab could fit into your own research workflow
The shared instance of GitLab should not be used for:
Storing large amounts of data (the current storage limit on each repository is 2GB).
GitLab is a code repository platform researchers can use to share code with collaborators and track versions of software. GitLab is useful for projects in which multiple collaborators are writing different parts of the code base, working with multiple versions of the software, or deploying the software for use in new projects.
GitLab and GitHub are web platforms based on Git that store remote copies of Git repositories, allowing your code to be backed up to another location besides your computer. They also allow you to share your repositories with collaborators.
Comparisons between the three, including the type of license agreement for each and how it protects the intellectual property of your or a third party’s code are summarized here:
Git
DoIT Shared Tools GitLab
GitHub
License
Git’s open source license
UW-Madison has a license agreement that includes terms protecting intellectual property
You commit to an Individual License Agreement that has limited protections for intellectual property
Where code is hosted
On your computer
On UW-Madison servers
On Microsoft’s remote servers
OK to use with Proprietary Code?
Depends on the terms of the proprietary software’s license
Depends on the terms of the proprietary software’s license
Not recommended
Authentication
Computer login
NetID login service
Users manage their own login credentials
Support
Web-based documentation
DoIT Shared Tools team and the GitLab Territory Account Manager. Shared Tools can also submit cases to GitLab support under the UW-Madison license.
The answer is: it depends! If you are using software that is covered by a contractual agreement with an outside party, the software license might specify terms of use or you might want to consult with a contractual specialist in your department/unit or the University Office of Legal Affairs (https://legal.wisc.edu/), before using GitLab with this software.
If it is determined that you can use GitLab for your proprietary software, ensure the appropriate user attestation process and management in place. For example, make projects with proprietary software private and limit the membership as much as possible.
Can I use GitLab to share or publish code?
GitLab is a repository and collaborative platform for working code but it should not be used as a repository for making code accessible to the public. Best practices for making code publicly accessible include; using a repository that is designed to archive code long term and provides permanent digital object identifiers. For more information, consult resources in the UW Madison Libraries Data Sharing Essentials and the Researcher Toolkit.
How-to use GitLab to collaborate
GitLab has several visibility options to facilitate collaboration across projects. Contributors to the project must have an active UW Madison Net ID to contribute to the project and to make pull requests. The three visibility options are:
Public
Internal
Private
GitLab can be used to make your code publicly available to anyone by changing the project's visibility to Public. However, contributors to your code base would have to have a UW-Madison NetID to make pull requests and contribute to the project.
What is DevOps and how does it help with research?
Tools like GitLab are designed to support several software development practices commonly referred to as DevOps. DevOps is a term that emphasizes the importance of closely integrating the development and operations cycles of software. This makes it easier to:
Catch and correct bugs during all stages of software development
Shorten the time for delivering new versions and releases of the software
DevOps includes the practice of Continuous Integration/Continuous Delivery (CI/CD). This practice focuses on:
Automating code build updates
Testing
Delivery
GitLab’s CI/CD features include automation tools for creating components such as pipelines for compiling and testing code.
The DevOps concept may be applicable to your research if you and your collaborators are iteratively developing new versions of software that:
Will be used by multiple individuals
Need testing that is regularly or automatically performed
Require bug fixes and code updates to be managed in each version