Please note that this is a public pad. Thus, please only share non-sensitive information.

Foundations of Research Software Publication (26./27.05.2025)

Organizational Details

Day 1 (26.05.2025)

Day 2 (27.05.2025)

Before the Workshop

During the Workshop

Workshop Materials

Day 1

Welcome and Introduction

Please tell us in a minute about your background and interest in the workshop :)

Motivation

Reproducibility of scientific results and enabling others to review them are vital in research.

the-turing-way/reproducibility.jpg at main · alan-turing-institute/the-turing-way (github.com)

Image credit: The image is part of Illustrations from The Turing Way: Shared under CC-BY 4.0 for reuse created by the Turing Way Community & Scriberia and licensed under CC BY 4.0.

Making research code openly available helps. But there are more aspects to consider!

Closed Source vs. Open Source

Image credit: The image is part of the Open Science MOOC, Module 5 “Open-Research-Software” and licensed under CC0 1.0.

In this workshop we consider minimum practices when publishing research code to improve reproducibility of scientific results.

[Task]: Please think about situations where you wanted to share your code outside organization:

Why did you want to share your code?

What worked well?

What obstacles did you encounter?

Introduction to the Workshop Example “Astronaut Analysis”

Small Python 3 script using pandas and matplotlib.

Source available at: https://codebase.helmholtz.cloud/hifis/software/education/hifis-workshops/foundations-of-research-software-publication/astronaut-analysis-data/-/tree/0-original-source

example plot 1

example plot 1

example plot 1

How should I publish my analysis code to enable others to check or reproduce my results?

1. Put your code under version control
2. Make sure that your code is in a shareable state
3. Add essential documentation
4. Add a license
5. Make your code citable
6. Release your code

[Task]: Please tell us about your experience with version control systems and code collaboration platforms:

Which version control system(s) do you currently use?

Which artifacts do you usually store in the repository?

Which artifacts do you exclude?

Which collaboration platforms (e.g., GitLab or GitHub) do you currently use?

What are your experiences when working collaboratively with others?

Step 1: Put your code under version control

You can follow using the material from episode 1.

Where should I store my code?

What belongs into the repository?

What to do if data is too large?

Key Points

Further Readings

[Task]: Please take a look at the content of our example repository and particularly the main.py. What aspects would you change before sharing it?

Step 2: Make sure that your code is in a shareable state

You can follow using the material from episode 2.

General Hints

Improve your code style

Think about testing

Key Points

[Task]: Please think about your experiences with code documentation:

What experiences have you had with good or bad documentation?

What was important for you as a user?

What was important for you as a contributor?

What might be important for a researcher in our example?

Step 3: Add essential documentation

You can follow using the material from episode 3.

Mind your target groups

Typical Documentation Files

Markup Languages

[Task]: Please write a README file for our example.

# Section title
## Subsection title
Normal text

A list with items
- item1
- item2

Wrap Up

Day 2

Welcome and Introduction

[Task]: Please think about your experiences with software and data licenses:

Which licenses (software, data) do you know and typically use when publishing content?

How do you add license information to your software project?

Does your home organization offer any support with licensing (software or data)? What kind of support?

Step 4: Add a license

DISCLAIMER: This information is no legal advice and solely reflects the experiences of the episode contributors. Please contact a lawyer or your organizational legal department, if you are in doubt and require solid legal advice.

You can follow using the material from episode 4.

Software Licenses

Software License Types

Combining Modules under Different Licenses

Derivative Work or Combined Work?

License Incompatibility

Minimal Checklist

Ask for legal advice if you are unsure!

REUSE Live Demonstration

REUSE Overview

Key Points

Further Readings

[Task]: Please think about your experiences concerning attribution of software in research publications:

Did you cite or reference software that you used? Why or why not?

How did you cite or reference software?

Step 5: Make your code citable

You can follow using the material from episode 5.

The problem: How to cite software correctly? Software has no title page with metadata.

How to cite Software?

Example

“The data sets and the notebook containing the analysis details have been published separately [11].”

References

How to make your Software citable?

  1. Provide citation metadata
  2. Archive your software and obtain a persistent identifier (PID)
  3. Provide a prominent citation hint as part of your documentation

Managing Citation Metadata

Authorship and Contributorship in Software

When determining the authors, please consider the following recommendations:

Archiving Software

Software Journals

[Task]: Please write a CITATION.cff file for a software or a data set using cffinit.

  1. Decide which software or data set you want to use. If in doubt, you can use the workshop example (links on published version on Zenodo.
  2. Determine the relevant citation metadata for a specific software/data set release. This includes:
    • Name
    • Authors
    • Identifier for the exact software version:
      • Recommended: Persistent identifier such as the DOI
      • Alterantive: Repository URL + exact version (tag name, Git commit ID)
    • Version number (e.g., 1.2.0)
    • Publication date
  3. Create an initial CITATION.cff using the online editor cffinit.

What worked well for you?

What problems did you encounter?

Key Points

[Task]: Please think about how you handle reference versions of your software (e.g., specific version used in a paper, release):

How do you mark these reference versions?

How do you share these special versions with others?

Step 6: Release your code

You can follow using the material from episode 6.

Release Basics

Minimal Release Checklist for Research Code

Basic release decisions for the “Astronauts Analysis”:

First you need to make some basic decisions for your research code.

For every new release do:

1. Prepare your code for release
2. Check your code
3. Publish and archive the release

For our result, please see: https://codebase.helmholtz.cloud/hifis/software/education/hifis-workshops/foundations-of-research-software-publication/astronaut-analysis-data/-/tree/2024-03-20

Key Points

Wrap Up