The HIFIS team offers IT services to all Helmholtz communities which enable scientists to do research and develop research software in tight collaboration with other scientists from within Helmholtz. Offering a sophisticated Software Project Management Platform is an important prerequisite to achieve this. The Software Project Management Platform GitLab has already become a de-facto standard for many Helmholtz centers in the past years. Many centers offer GitLab to their scientists. In order to bundle resources and foster cross-center collaboration HIFIS Software offers Helmholtz GitLab to all Helmholtz disregarding the center affiliation. The benefits and synergies of using GitLab are manifold. Nowadays, research software needs to be open, transparent, reproducible, accessible, findable, reusable just to name a few desired properties. We believe that a full-fledged feature-rich open-source software like GitLab is the right tool to support scientists to develop such software that adheres to these properties.
Features of the Helmholtz GitLab Service
Version Control with Git
One reason for many Helmholtz research centers to have chosen GitLab as the right tool might be the popularity of the Version Control System Git. GitLab is using Git under the hood and Git and GitLab interact with each other seamlessly. With Version Control scientists are able to keep track of their changes they make during research software development due to the fact that Git stores the complete history of changes in the respective Git repository. One can jump back and forth in the history and for example inspect previous versions or even restore previous versions of the software. GitLab or any other Git-based Software Project Management Platform offer a central point to exchange code and ideas with others and render close and fruitful collaboration between scientists. But what if you already use another Git-based Software Project Management Platform? That's perfect, no worries. GitLab offers an import wizard with which researchers can migrate their remote Git repositories just easily if the necessity arises.
Project Management with GitLab
As mentioned in the previous section, collaboration is such a necessity. Today, there is literally no research project that is not driven by collaboration. Hence, project management is an important task and duty of researchers in order to make good progress in their research projects. GitLab is a specialized tool to support software project management. It offers Groups, Projects, Issue Trackers, Issue/Kanban Boards, Milestones, Labels, Branches, Merge Requests among many other useful features. This platform is very open in terms of supported workflows in research software projects and can be adapted to almost any practical software development workflow you may think of. Using the Helmholtz GitLab Service makes it easier to see and keep track of the progress of your projects.
GitLab Continuous Integration
Continuous Integration (CI) is a first-class citizen available free-of-charge and already activated for all users. Almost every software product benefits from automated tasks. CI pipelines can automatically build, test and finally deploy the software product to a container, package registry or a staging/production environment on which simulations may run. Often these automated task are used as quality gates which need to be passed successfully in order to be able to integrate the code change into some mainline. Developers are able to "integrate" their contributions "continuously" and due to a high level of automation many of the time consuming tasks don't need to be done manually. Thus, researchers can focus on doing research and not on doing tedious tasks again and again.
GitLab Container Registry
Containers have become very popular: Gitlab takes that into account by offering Container Registry very similar to Docker Hub. Once research software developers build their own images they can be stored centrally in such a registry for later reuse.
GitLab Package Registry
Package Registries exist already for a long time, GitLab supports the most prominent candidates like PyPI (Python), Conan (C++), Maven (Java), NPM (NodeJS), Composer (PHP), NuGet (.NET), etc. so that packages can be stored independently from these public registries. On top GitLab also adds access control to keep the group of project members manageable.
Additionally, there is a feature called GitLab Pages that can be used to publish static web sites e.g. your documentation. Like other features, e.g. GitLab Container andd Package Registries, GitLab Pages can be used during automation with CI pipelines. Each time a contribution is made to your project your documentation is rebuilt including the new changes and automatically made accessible to anyone with the right permissions.