Mark Schelbergen, promovendus aan de faculteit Luchtvaart- en Ruimtevaarttechniek, doet onderzoek naar een nieuwe manier om windenergie te winnen. In plaats van de traditionele windmolens wordt gebruik gemaakt van een windenergiesysteem (AWE) hoog in de lucht. Om een volledig beeld te krijgen van de hoeveelheid windenergie die zij potentieel kunnen opleveren, was software nodig waarmee hij openbaar beschikbare winddatasets kan analyseren.

AWE (Airborne Wind Energy) systemen, maken gebruik van vliegers die doorgaans meer dan 150 meter boven de grond vliegen, waar de wind meestal sterker en constanter is dan op lagere hoogte. Er is ook minder materiaal voor nodig dan voor conventionele windturbines en ze zijn in operationele zin flexibeler: de hoogte van de vlieger kan actief worden aangepast aan de steeds veranderende windomstandigheden.

AWE systeem. Bron: Roland Schmehl

Ik denk dat je veel meer kunt bijdragen als je niet alleen je bevindingen publiceert, maar ook je code deelt en andere onderzoekers de tools geeft om meer inzicht in je onderzoek te krijgen.

Toen Schelbergen eerder werk bestudeerde om zijn software te bouwen, merkte hij dat bij de meeste artikelen niet de code is bijgevoegd waar de resultaten mee zijn geproduceerd. Dit motiveerde hem om zijn werk in een open vorm te delen, zodat anderen er efficiënter op kunnen voortbouwen. “Een van de dingen die me inspireerden om te promoveren, was dat ik op een of andere manier een bijdrage wilde leveren”, vertelt Schelbergen. “Ik denk dat je veel meer kunt bijdragen als je niet alleen je bevindingen publiceert, maar ook je code deelt en andere onderzoekers de tools geeft om meer inzicht in je onderzoek te krijgen. Dit kan hen inspireren, zodat zij met ideeën komen waar je zelf niet aan hebt gedacht.”

Efficiënter samenwerken

Vastberaden om zijn software open-source te ontwikkelen, deelde Schelbergen vanaf de start van zijn promotietraject in 2018  bij zijn artikelen de code online. Maar pas tijdens zijn deelname aan een Code Refinery workshop in oktober 2020 maakte hij kennis met concrete methodes en middelen om software repositories - opslagplaatsen- opener en uitnodigender te maken om aan bij te dragen. Vergelijk het met het bouwen van een kast. Dat is veel gemakkelijker als er duidelijke instructies bij zitten, en je kunt de configuratie eenvoudig wijzigen als alle planken en schroeven standaardafmetingen hebben. Software kan samenwerking en aanpassing aanmoedigen als er goede documentatie bij zit waarin iedereen kan lezen welk onderdeel wat doet, en als het ontwerp modulair is, zodat anderen gemakkelijk het ene onderdeel door het andere kunnen vervangen.

Door te implementeren wat hij had geleerd, besefte Schelbergen dat een nette en modulaire codebase niet alleen belangrijk is voor potentiële bijdragers, maar ook voor hemzelf en zijn team. Het zorgt ervoor dat de code ook later nog te begrijpen is. Naarmate hij meer masterstudenten ging begeleiden, konden ze efficiënter samenwerken doordat ze een transparante, eenvoudig te begrijpen coderepository hadden. “Het geeft veel voldoening om te zien dat ze de code kunnen gebruiken zoals ik het bedoeld heb”.

Maak van opschonen routine

Als het netjes houden van code zo belangrijk en nuttig is, waarom doet niet iedereen dat dan? “Ik heb gemerkt dat het best veel tijd en moeite kost”, zegt Schelbergen. Hij zit in het laatste jaar van zijn promotietraject, en het is een flinke opgave om zijn voortdurend uitdijende code op te schonen en te documenteren terwijl hij ook nog artikelen moet schrijven.

De beste oplossing is om een gewoonte te maken van het opschonen. “Maak van het refactoren van je code een wekelijks onderdeel van je werkzaamheden. Snelle fixes zijn oké, maar je moet functies en code regelmatig herstructureren, zodat je niet één groot bestand met een heleboel regels incompatibele code krijgt. Al moet ik toegeven dat ik dit zelf ook nog in mijn routine moet inbouwen.” Het zou ook nuttig zijn voor onderzoekers, met name promovendi, als afdelingen en onderzoeksgroepen best practices voor softwareontwikkeling kunnen organiseren en gezamenlijk implementeren. Dat draagt bij aan nauwere samenwerking van hoge kwaliteit.

Meer impact maken met open source software

“Als je samenwerkt in softwareontwikkeling voor onderzoek, kan jouw software nog steeds je eigen ‘kindje’ zijn, maar die software is dan tevens onderdeel van iets groters, met een grotere kans op impact”. Schelbergen heeft bijvoorbeeld de code gedeeld van de nieuwste machine learning methode die hij heeft ontwikkeld om windbronnen te karakteriseren. Dit betekent dat onderzoekers wereldwijd software niet hoeven herschrijven op basis van de uitleg en de vergelijkingen in zijn artikel, maar dat ze zijn code kunnen gebruiken en toepassen op hun eigen lokale of regionale winddatasets. Met behulp van zijn documentatie kunnen ze de software zelfs aanpassen om eventuele andere vragen te beantwoorden. Een masterstudent aan de Universiteit van Bonn gebruikt bijvoorbeeld de software voor haar afstudeerproject en op haar beurt draagt ze met haar ervaringen bij aan Schelbergens software.

De software kan open of publiekelijk beschikbaar zijn, maar moet ook vindbaar en interoperabel zijn.

Schelbergen is nu bijna gepromoveerd, maar er is nog veel wat hij wil leren en uitproberen. “De software kan open of publiekelijk beschikbaar zijn, maar moet ook vindbaar en interoperabel zijn.” Hij is van plan zijn diverse coderepository’s te integreren in één volledig open codebase, en om een gebruiksvriendelijke interface te ontwikkelen die andere onderzoekers en industriële partners in zijn vakgebied kunnen gebruiken om hun eigen datasets te analyseren, of die ze in hun analysetraject kunnen opnemen. Hij is nog op zoek naar andere stappen die hij kan zetten om zijn werk opener en uitnodigender te maken voor samenwerkende partijen.

Mark Schelbergen’s inzet voor openheid heeft onlangs een eervolle vermelding gekregen bij de nationale Open Initiative Trophies.

Wil je op de hoogte blijven van de laatste ontwikkelingen en kansen in open science? Sluit je aan bij Open Science Community Delft.

/* */