Onderzoekssoftware en reproduceerbaarheid

Hoe publiceer je jouw onderzoekscode op een manier die anderen echt kunnen gebruiken

Lieke de Vries Lieke de Vries
· · 8 min leestijd

Je hebt maanden — misschien zelfs jaren — gewerkt aan een prachtig onderzoek.

Inhoudsopgave
  1. Waarom je onderzoekscode publiceren anders is dan je artikel publiceren
  2. Stap 1: Kies het juiste platform voor jouw code
  3. Stap 2: Maak je code leesbaar — ook voor jezelf over zes maanden
  4. Stap 3: Gebruik versiebeheer — en doe het goed
  5. Stap 4: Denk aan je licentie
  6. Stap 5: Maak je code reproduceerbaar
  7. Stap 6: Publiceer en deel — maar blijf niet stilzitten
  8. De moeite waard
  9. Veelgestelde vragen

De resultaten zijn gepubliceerd, de grafieken zien er goed uit, en de reviewers waren enthousiast. Maar dan vraagt iemand: "Mag ik jouw code even inzien?" En ineens ligt er een map vol bestanden op je laptop met namen als final_v3_ACTUEL_definitief.py en dit_werkt_wel_ik_denk.m. Klinkt dat bekend? Geen zorgen. Laten we er samen iets moois van maken.

Waarom je onderzoekscode publiceren anders is dan je artikel publiceren

Publiceren van een wetenschappelijk artikel heb je misschien al een keer gedaan. Maar code publiceren is een ander verhaal.

Een artikel leest zich vanzelf — code niet. Als iemand jouw code wil hergebruiken, moet die persoon begrijpen wat elk onderdeel doet, welke versies van software nodig zijn, en hoe alles samenhangt. En laten we het hebben over reproduceerbaarheid: onderzoekers, reviewers en financieringsorganisaties zoeken steeds vaker naar de onderliggende code achter publicaties.

NWO en de VSNU benadrukken in hun Open Science-beleid dat onderzoekssoftware net zo belangrijk is als onderzoeksdata.

Dus ja, het is echt de moeite waard om hier tijd in te steken.

Stap 1: Kies het juiste platform voor jouw code

Je code ergens zetten is niet genoeg — je moet het op de juiste plek zetten. De populairste opties voor onderzoekers in Nederland zijn GitHub, GitLab en Zenodo.

GitHub en GitLab zijn ideaal voor samenwerking en versiebeheer. Zenodo, ontwikkeld door CERN, geeft je een DOI — een persistente identifier — zodat je code net zo geciteerd kan worden als een wetenschappelijk artikel. De combinatie is goud: werk in GitHub of GitLab, en publiceer een snapshot op Zenodo wanneer je klaar bent.

Veel Nederlandse universiteiten bieden ook hun eigen infrastructuur. De TU Delft, Universiteit Utrecht en Radboud Universiteit hebben bijvoorbeeld Research Data Management-teams die je kunnen helpen met het kiezen van de juiste repository.

Check wat jouw universiteit aanbiedt voordat je zelf iets opzet.

Stap 2: Maak je code leesbaar — ook voor jezelf over zes maanden

Dit is misschien wel de belangrijkste regel: schrijf code alsof je het aan een collega uitlegt die niks van je project afweet. Dat betekent duidelijke variabelenamen, commentaar waar het nodig is, en een logische structuur.

Geen x1, temp of data2 meer. Gebruik namen die vertellen wat erin zit.

Een goede README is onmisbaar. Denk aan het als de omslag van je boek. Zet erin wat het project doet, hoe je het installeert, welke afhankelijkheden er zijn, en hoe je de code uitvoert. Voeg eventueel een klein voorbeeld toe. Leer hoe je een README schrijft die andere onderzoekers direct op weg helpt, zodat ze binnen vijf minuten begrijpen wat er aan de hand is.

Wat staat er in een goede README?

  • Korte beschrijving van het project
  • Installatie-instructies, inclusief benodigde softwareversies
  • Een snelstart-voorbeeld
  • Uitleg van de bestandsstructuur
  • Informatie over licenties
  • Contactgegevens of een manier om vragen te stellen

Stap 3: Gebruik versiebeheer — en doe het goed

Git is de standaard voor versiebeheer, en daar is een reden voor. Het houdt bij wat je verandert, wanneer, en waarom.

Maar Git alleen is niet genoeg — je moet het ook consistent gebruiken. Maak zinvolle commit-berichten.

Niet "fixed stuff", maar bijvoorbeeld "Correctie voor normalisatie in preprocessing-stap 3". Je toekomzige zelf zal je dankbaar zijn. Tag je releases. Wanneer je een versie publiceer die hoort bij een artikel, maak dan een release aan in GitHub of GitLab.

Zo kan iedereen precies de versie terugvinden die bij jouw resultaten hoort. En koppel die release aan een DOI via Zenodo.

Stap 4: Denk aan je licentie

Zonder licentie is jouw code juridisch gezien niet vrij te gebruiken — ook als je dat wel bedoelt.

De meeste onderzoekers kiezen voor een open licentie zoals MIT, Apache 2.0 of GPL. De MIT-licentie is de eenvoudigste: anderen mogen alles doen met je code, zolang ze je naam vermelden. Apache 2.0 biedt extra bescherming voor patenten. GPL zegt dat afgeleide werken ook open moeten blijven.

Plaats een LICENSE-bestand in de hoofdmap van je repository. Dat is het enige dat nodig is.

Sommige universiteiten, zoals de Universiteit Utrecht, bieden hulp bij auteursrechtvraagstukken via hun auteursrechtinformatiepunt.

Neem daar gerust contact mee op als je twijfelt.

Stap 5: Maak je code reproduceerbaar

Het ultieme doel is dat iemand anders jouw code kan draaien en dezelfde resultaten krijgt.

Klinkt simpel, maar in de praktijk is het lastig. Begin met het vastleggen van je omgeving. Gebruik tools zoals requirements.txt voor Python, renv voor R, of Docker-containers voor complexere opstellingen. Maak je Jupyter notebook toekomstbestendig, zodat iedereen precies weet welke versies van pakketten jij gebruikt hebt. Test je code op een schone machine — of vraag een collega om het te proberen. Als zij het kunnen draaien zonder twintig uur te besteden aan het oplossen van foutmeldingen, ben je op de goede weg.

Stap 6: Publiceer en deel — maar blijf niet stilzitten

Code publiceren is geen eenmalige actie. Het is een proces.

Wanneer je artikel gepubliceerd is, zorg er dan voor dat de bijbehorende code ook beschikbaar is.

Vermelde de link naar je repository in je artikel, bijvoorbeeld in een "Data Availability" of "Code Availability" sectie. Stuur de link ook naar je co-auteurs en naar het Research Data Management-team van je universiteit. En blijf reageren op vragen.

Iemand die een issue opent of een pull request indient, helpt jouw code beter te maken. Dat is precies waar het om gaat bij Open Science: door een volledig research compendium te maken, bouw je samen aan beter onderzoek.

De moeite waard

Ja, het kost tijd om je code netjes te publiceren. Maar denk eraan: elke minuut die je hierin steekt, bespaart anderen uren — of zelfs dagen — aan frustratie.

En het verhoogt de impact van je werk enorm. Onderzoekers die hun code delen, worden vaker geciteerd, krijgen meer samenwerkaanvragen, en dragen bij aan een transparanter wetenschappelijk ecosysteem.

Dus open die map met final_v3_ACTUEL_definitief.py, en maak er iets moois van. De wetenschap zal je bedanken.

Veelgestelde vragen

Waarom is het publiceren van onderzoekscode anders dan het publiceren van een artikel?

Het publiceren van onderzoekscode vereist meer dan alleen het delen van een artikel. Het is cruciaal dat anderen de code kunnen begrijpen, reproduceren en gebruiken, wat betekent dat ze de onderliggende logica, benodigde softwareversies en de manier waarop alles samenhangt moeten kunnen volgen.

Welke platforms zijn geschikt voor het opslaan van onderzoekscode?

Bovendien wordt het steeds belangrijker dat onderzoekers hun code publiceren om reproduceerbaarheid te garanderen, zoals benadrukt door NWO en de VSNU. Er zijn verschillende opties voor het opslaan van je onderzoekscode, waaronder GitHub, GitLab en Zenodo. GitHub en GitLab zijn uitstekend voor samenwerking en versiebeheer, terwijl Zenodo, ontwikkeld door CERN, een persistente identifier (DOI) biedt, vergelijkbaar met een geciteerd wetenschappelijk artikel.

Hoe moet ik mijn code schrijven om het voor anderen begrijpelijk te maken?

Veel Nederlandse universiteiten bieden ook hun eigen infrastructuur aan, dus check wat jouw universiteit aanbiedt.

Wat is de belangrijkste functie van een README-file voor onderzoekscode?

Schrijf je code alsof je het uitlegt aan een collega die geen kennis heeft van je project. Gebruik duidelijke variabelenamen, voeg commentaar toe waar nodig en zorg voor een logische structuur. Vermijd vage namen zoals x1 of temp en maak gebruik van een goede README-file die de functionaliteit, installatie, afhankelijkheden en uitvoeringsinstructies beschrijft. Een README-file dient als de 'omslag' van je code, waardoor anderen direct inzicht krijgen in wat het project doet en hoe ze het kunnen gebruiken.

Waarom is het belangrijk om code te publiceren naast een artikel?

Het beschrijft de functionaliteit, installatie-instructies, benodigde afhankelijkheden en een eenvoudig voorbeeld, waardoor anderen snel kunnen beginnen met het begrijpen en reproduceren van je onderzoek. Het publiceren van code naast een artikel is essentieel voor reproduceerbaarheid en hergebruik van onderzoek. Onderzoekers, reviewers en financieringsorganisaties verwachten steeds vaker dat de onderliggende code beschikbaar is, zodat anderen de resultaten kunnen verifiëren en verder kunnen bouwen op het onderzoek.


Lieke de Vries
Lieke de Vries
Expert in Open Science principes

Lieke adviseert onderzoekers over het publiceren van FAIR data volgens de nieuwste normen.

Meer over Onderzoekssoftware en reproduceerbaarheid

Bekijk alle 28 artikelen in deze categorie.

Naar categorie →
Lees volgende
Waarom onderzoekssoftware ook FAIR moet zijn en niet alleen jouw data
Lees verder →