Onderzoekssoftware en reproduceerbaarheid

Hoe schrijf je een README die andere onderzoekers écht helpt jouw code te begrijpen

Lieke de Vries Lieke de Vries
· · 7 min leestijd

Stel: je stopt een jaar lang onderzoek in een GitHub-repository. Dan stapt een ander onderzoeker binnen, kijkt naar je code, en heeft geen idee waar het begint.

Inhoudsopgave
  1. Waarom je README het belangrijkste bestand in je repository is
  2. Wat staat er in een README die écht werkt?
  3. Wat grote projecten anders doen
  4. Veelgemaakte fouten die je vandaag nog kunt vermijden
  5. Veelgestelde vragen

Geen idee welke versie van Python je gebruikte, welke packages nodig zijn, of hoe ze jouw pipeline moeten draaien.

Ze sluiten het tabje. Jouw werk verdwijnt in de digitale afgrond. Dat gebeurt vaker dan je denkt.

En het is vrijwel altijd te voorkomen met één simpel bestand: de README. Maar dan wel een goede. Want een README met alleen een titel en één zin is geen README. Dat is een onderschrift.

Waarom je README het belangrijkste bestand in je repository is

Je README is geen bijzaak. Het is het eerste wat iemand ziet op GitHub, GitLab of Zenodo.

Het is je visitekaartje, je handleiding en je aanspreekpunt in één. Onderzoekers die jouw code willen hergebruiken, beoordelen vaak binnen dertig seconden of ze verdergaan. Als ze niet snappen wat het doet en hoe het werkt, zijn ze weg. En laten we het hebben over reproduceerbaarheid, het hart van goede wetenschap.

Zonder duidelijke documentatie kan niemand jouw resultaten controleren. Dat is geen klein probleem.

Studies tonen aan dat een groot deel van wetenschappelijke onderzoeken niet reproduceerbaar is, en slechte documentatie is een van de hoofdoorzaken.

Jouw README is dus niet alleen handig, het is een wetenschappelijke verantwoordelijkheid.

Wat staat er in een README die écht werkt?

Een duidelijke titel en beschrijving

Begin met een titel die precies zegt wat het is. Geen cryptische codenaam, maar een beschrijving die ook iemand buiten je vakgebied begrijpt. Daaronder twee tot vier zinnen over wat het project doet, waarom het bestaat, en wat het oplost.

Denk aan de "elevator pitch": als je dit in dertig seconden moet uitleggen, wat zeg je dan?

Installatie en vereisten

Dit is waar de meeste README's falen. Schrijf stap voor stap uit hoe iemand jouw code aan de praat krijgt.

Vermeld de exacte versies: Python 3.11, R 4.3.2, Node.js 20. Geen "recente versie" of "wat je maar hebt". Geef een requirements.txt, een environment.yml, of een Dockerfile om je Jupyter notebook duurzaam reproduceerbaar te maken.

Gebruiksaanwijzing met voorbeelden

Als je tools als Conda of Poetry gebruikt, zeg het. Vermeld ook het besturingssysteem als dat relevant is.

Wat werkt op macOS, crasht misschien op Windows. Laat zien hoe je code werkt met concrete voorbeelden. Niet alleen commando's, maar ook wat de verwachte output is. Een onderzoeker die jouw code draait wil weten of het resultaat klopt.

Structuur van het project

Geef hen iets om mee te vergelijken. Als je scripts hebt met parameters, leg ze uit.

Gebruik codeblokken met syntax highlighting zodat het leesbaar blijft. Een korte beschrijving van de mappenstructuur helpt enorm.

Waar staan de data? Waar komt de output? Welk script draai je eerst?

Citaat en licentie

Een simpel diagram of een lijstje met uitleg maakt het verschil tussen vijf minuten begrijpen en een uur zoeken. Andere onderzoekers moeten weten hoe ze jouw werk mogen gebruiken en citeren. Maak je onderzoekscode inzichtelijk en herbruikbaar; vermeld een DOI als je die hebt, bijvoorbeeld via Zenodo. Kies een licentie, bijvoorbeeld MIT of Apache 2.0, en zeg het expliciet. Zonder licentie weten mensen niet of ze jouw code mogen aanpassen of hergebruiken, en dan doen ze het gewoon niet.

Wat grote projecten anders doen

Kijk eens naar populaire repositories op GitHub van projecten als scikit-learn, TensorFlow of het Pandas-project.

Hun README's zijn compact, visueel opgeruimd, en leiden je binnen seconden naar wat je nodig hebben. Ze gebruiken badges voor build-status en dekking, hebben een duidelijke inhoudsopgave, en linken naar uitgebreide documentatie zonder alles in één bestand te proppen. Maar je hebt geen miljoenen gebruikers nodig om dit toe te passen. Zelfs een repository met honderd sterren profiteert hiervan.

Het gaat om respect voor de tijd van anderen. En om eerlijkheid: ook voor jouw toekomstige zelf. Over zes maanden ben jij degene die niet meer weet hoe het werkte.

Veelgemaakte fouten die je vandaag nog kunt vermijden

Schrijf geen volledige handleiding in je README. Houd het beknopt en link naar uitgebruikte documentatie als dat nodig is.

Vermijd jargon dat alleen binnen jouw onderzoeksgroep bekend is. En update je README wanneer je code verandert, niet alleen bij de eerste commit. Een verouderde README is erger dan geen README, want die misleidt actief.

Test je README eens zelf. Clone je eigen repository op een schone machine en volg alleen de instructies in je README.

Als je ergens vastloopt, vastloopt een ander onderzoeker dat ook. Die oefening kost vijftien minuten en levert meer op dan je denkt. Goede documentatie is geen extraatje, maar een essentieel onderdeel als je een research compendium wilt maken.

Het is onderdeel van goede wetenschrift. Schrijf je README alsof je het voor een collega schrijft die morgen begint. Want dat is precies wat er gebeurt.

Veelgestelde vragen

Waarom is een goede README zo belangrijk voor een GitHub-repository?

Een goed geschreven README is cruciaal voor het delen van je onderzoek, omdat het de eerste indruk maakt op potentiële gebruikers.

Wat moet ik minimaal in een README-bestand opnemen om reproduceerbaarheid te bevorderen?

Het dient als een duidelijke handleiding, waarin je uitlegt wat je project doet, waarom het belangrijk is en hoe het werkt, zodat anderen je werk gemakkelijk kunnen begrijpen en hergebruiken. Om de reproduceerbaarheid van je onderzoek te waarborgen, moet je in je README-bestand de exacte versies van software (zoals Python, R, of Node.js) en afhankelijkheden vermelden, zoals een requirements.txt of environment.yml.

Hoe kan ik een README-bestand zo schrijven dat het snel te begrijpen is voor iemand die niet bekend is met je project?

Dit zorgt ervoor dat anderen je code succesvol kunnen uitvoeren met dezelfde omgeving. Begin je README met een korte, duidelijke beschrijving van je project, inclusief een titel die direct aangeeft waar het over gaat. Leg in een paar zinnen uit wat het doel is, wat het oplost en waarom het belangrijk is, zodat zelfs iemand zonder specifieke kennis snel kan beoordelen of het project relevant is voor hen. Geef stap-voor-stap instructies over hoe je code kan worden geïnstalleerd en uitgevoerd, inclusief de benodigde softwareversies en afhankelijkheden.

Wat is de beste manier om installatie-instructies in een README-bestand weer te geven?

Vermeld een requirements.txt, environment.yml of Dockerfile om de omgeving te standaardiseren en reproduceerbaarheid te garanderen.

Wat is het doel van een README-bestand in een GitHub-repository?

Een README-bestand is het centrale punt van informatie in je repository. Het fungeert als een visitekaartje, een handleiding en een aanspreekpunt, waardoor het voor anderen gemakkelijk is om te begrijpen wat je project doet, hoe het werkt en hoe ze het kunnen gebruiken of hergebruiken.


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 →