No Title

Software publication pipeline

Steps

It is recommended that all steps in the pipeline are followed, but they are not dependent on each other. In this pipeline we provide resources to achieve the whole pipeline using GitHub or GitLab for hosting the source code

  • Software repository
  • Tag/semantic versioning
  • Get a persistent identifier
  • Registries
  • Software Paper

Software repository

If possible, during the development of Research Software, changes should be tracked using dedicated version control software like git.

Put all source files in a public version-controlled repository, preferably GitHub or GitLab. Both GitHub and Gitlab provide online repositories for hosting source code. As can be inferred from their names, they were designed to be used together with Git version control. The nice thing about using git together with GitHub and GitLab is that it stores the complete history of changes to the source code, rather than just a single version .

A quickstart tutorial for...

Versions, tags and releases

Every time software changes, and that history is stored, that can be considered a new version of the software. It is useful to add special identifiers, called tags to new versions that mark significant changes, so that specific versions of your software can be cited or referenced as dependency by other software. If you use git for version control, you can create tags in git

It is good practice to use semantic versioning to tag the software. In this way, information about the impact of the change from one version to the next is stored in the tag. Usually, tagged versions of the software are opened up to the public in a software release, together with updated documentation and a documentation of the changes since the previous release in a so called changelog.

The documentation of creating releases...

Get a persistent identifier

Specific versions of the software should be published to an archiving service that provides persistent identifiers

For example, Zenodo is a long term archiving service for scientific data and software. Zenodo will assign a DOI to the published data, making it citable.

Documentation on how to integrate Zenodo with your repository...

Registries

To improve findability of the software, it should be shared in existing software registries. Preferably, software is added to a registry specific to the domain and/or programming language. Software can be shared in multiple registries if they are relevant to the software.

Software Paper

A major, but also optional step is to publish a journal article about the software specifically in a dedicated software journal. Some examples are:

Check this extensive list of software journals

Note that this is different than other scientific journal publications in that the publication should be focussing on the software and its features and not on any particular research results. However, research projects in which the software plays a crucial role can of course be mentioned as use cases.

Communication and outreach

Once software is released, it is often a good idea to spend some time on communication and outreach to potential users of the software. In this way the world will get to know your software. This can be in many forms:

  • Blogposts
  • Organisational/institutional newsletters
  • Conference presentations/posters
  • Etc.