Mark Schelbergen, PhD candidate at the Faculty of Aerospace Engineering, researches airborne wind energy (AWE) systems, a novel type of wind energy converter which is an alternative to the traditional tower-based wind turbines. To build a full picture of how much wind energy AWE systems can potentially harvest, Mark needs software to gain insights from publicly available wind datasets.
AWEs use kites that typically operate more than 150 meters above ground, where wind is generally stronger and more persistent than at a lower altitude. They are also less material-intensive than conventional wind turbines, and operationally more flexible – one can actively adjust the height of the kite to the continuously changing wind condition.
I think your contribution can be a lot larger if you not only publish your findings, but share your code and give other researchers the tools to get more insights in your research.
While referring to published work in his field to build this software, Mark realised most papers are not accompanied by the code producing the results. This motivated him to share his work openly so that others can more efficiently build upon it. “One thing that inspired me to do a PhD is that I wanted to make a contribution somehow,” Mark recalled. “I think your contribution can be a lot larger if you not only publish your findings, but share your code and give other researchers the tools to get more insights in your research. They can be inspired and come up with ideas that you didn’t think about yourself.”
A modular and open code repository for easy teamwork
Committed to developing his software open-source, Mark has shared the code of his first papers online since he started his PhD in 2018. However, it was only when he participated in a Code Refinery workshop in October 2020 that he got exposed to concrete examples of ways and tools to make software repositories more open and inviting to contributors. Imagine building a shelf: the shelf is much easier to build if it comes with a clear set of instruction, and you can easily change its configuration if all the planks and screws are of standard sizes. Software that encourages collaboration and adaptation has good documentation to tell others which component does what, and is modular to allow others to easily swap one component with another.
Implementing what he has learnt, Mark realised that keeping a clean and modular codebase is important, not only for potential contributors, but also for himself and his team. As he started supervising more master students, a transparent, easy to comprehend code repository has helped them work together more efficiently. “Seeing that they are able to use the code the way I intended, that’s very rewarding.” Similarly, well-documented and clean code is useful for comprehending our own code that was written a while ago.
The importance of cleaning up code regularly
If keeping the code clean is so important and beneficial, what stops everyone from doing it? “From my experience, it takes quite some time and effort to clean and share code,” Mark commented. Mark is in the final year of his PhD, so juggling the accumulating cleaning and documenting of his code and writing papers is burdensome.
To this end, Mark suggested that we build a habit of cleaning. “Make it part of your weekly working activities to refactor your code. You can make fast fixes, but reorganise functions and code regularly such that it does not become one big file with many lines of incompatible code. Although I have to admit that I still need to build this into my own routine.” It would also be beneficial for researchers, particularly for PhD candidates, if departments and research groups can organise and collectively implement best practices for software development, which will help foster tighter collaborations and ensure high quality.
Increasing impact with open-source software
“With collaborative research software development, you can still have your own ‘little baby’ software, but then it is also part of something bigger with increased chance of having an impact.” For example, Mark has shared the code underlying the latest machine learning approach that he has developed to characterise wind resources openly. This means that instead of rewriting software based on the explanation and equations in Mark’s paper, researchers worldwide can take Mark’s code and apply it on their own local or regional wind datasets. With Mark’s software documentation, they can also adapt the software if they need to, to answer any further questions that they may have. For example, a Masters student at the University of Bonn has been using Mark’s software for her graduation project, and she also contributed back to Mark’s software with her experience.
The software can be open or publicly available, but it also needs to be findable and interoperable.
As he is close to finishing his PhD, Mark still has a lot that he wants to learn and try. “The software can be open or publicly available, but it also needs to be findable and interoperable.” He plans to integrate his multiple code repositories into one fully open codebase, and to develop an interface that other researchers and industrial partners in his field can easily use to analyse their own datasets or can incorporate into their analysis pipeline. He is looking out for other steps that he can take to make his work more open and inviting to collaborators.