CodeRefinery at PDC summer school 2025
PDC Summer school webpage: https://www.pdc.kth.se/summer-school/2025
Timing: 14:30-17:30 (- few minutes in beginning and 15 min break in middle)
Mix of lecture and hands-on!
- working with neighbor?
Plan
- Samantha does lecture
- Johan assistant, asking questions and supporting answering of tricky questions
- Short break in beginning
- Longer break in middle
- 2 larger exercise sessions
- people run on own laptop (fallback: Dardel)
- Reconnect Tue 15.7
- Johan on vacation: 21.7-3.8
Meeting notes
16.7 Johan, Samantha
- learners do not have any project work
- more exercises than time, mark as optional
- slides vs materials -> Samantha still undecided :/ but materials will stay availabe even if slides will be used for the presentation
- main exercises for the lesson: git & documentation
- "Let's bring us all to same level" instead of "this will be boring for some of you"
- dependency management for compiled languages ? (compiling etc is being discussed on Fri before by Johan)
- cmake: non-intrusive, separate machinery, define order in which to execute files to compile + buildtime and runtime availability, constraints are defined (between x and y), scans computer for availability: if not available it throws an error (for non-optional)
- Johan will add a brief info box on that
during PASC25: Johan, Alessandra, Parasuram, Samantha
People should understand:
- licensing as a concept
- collaborative coding
- documentation
- short on git
- testing as a concept (within a minute)
- packaging (no containers)
7.3 Johan, Samantha
- Plan: co-teaching
- We decided to go with slides
- And limit the content to really fit the timeframe, keep other stuff as extra reading material
- eg the course has no immediate need for containers
- Johan to discuss with Allessandra what are the most important aspects of this lecture + hands-on to see what to focus on
- After that another meeting to split the content "who does what" and then start preparing
To do
Parts
- Why we are here talking about RSE
- PDC flagship codes will be presented (Gromacs, Veloxchem and neko) -> exemplary projects for implementation of what is taught here; all sizes!
- Introduction of the example project
- Share the link to the example repository
Ask questions:
- Would you know what to do with that?
- What would you wish for?
- Could you run it?
-> link to lessons!
- Version control
- Documentation
- Reproducibile dependencies and environments
- Sharing (licensing and publishing)
- (Testing)
- (Automation and reproducible workflows)
- When what is needed
Exercises (to be updated)
- Why we are here talking about RSE
- Introduction of the example project
- Version control
- Git-1: Turn your project to a Git repo and share it
- Git-2: Create a new branch and a new commit
- Git-3: Archaeology using Git annotate (“blame”)
- Documentation
- Documentation-1: Improve the README of your project
- Documentation-2: In-code documentation
- Reproducibile dependencies and environments
- Reproducibility-1: Time-capsule of dependencies
- Reproducibility-2: Time-travel with containers
- Reproducibility-3: Build a container and run it on a cluster
- Reproducibility-4: Building a container on GitHub and running it on a cluster
- Reproducibility-5: Building a container on a cluster
- (Testing)
- Testing-1: Design an end-to-end test
- Testing-2: Add a unit test
- (Automation and reproducible workflows)
- Sharing (licensing and publishing)
- Sharing-1: Add a license file to your project
- Sharing-2: CITATION.cff and Zenodo sandbox
- Sharing-3: What constitutes derivative work?
- Sharing-4: Licensing situations
Schedule
14.30 - 14.40 context break
14.40 - 14.50 Why are we talking about this
14.50 - 15.10 Version control
15.10 - 15.30 Exercises
15.30 - 15.20 Reproducible dependencies
xx - xx
16.00 - 16.20 Break
16.20 - xx Documentation
xx - xx Exercises
xx - 17.15
17.15 - 17.30 wrapup