Kenneth makes FOSS and takes our Twitter mic from November 18 to 25. Thank you, Kenneth!
I’m Kenneth Hoste, a computer scientist and FOSS enthusiast from Belgium, with a PhD in Computer Science from Ghent University (2010). My research topic was using machine learning techniques (before it was cool…) to analyze, estimate and optimize the performance of computers.
Since October 2010 I’m a member of the High-Performance Computing (HPC) team at Ghent University (UGent), where I mainly focus on user support & training.
This often involves installing scientific software for the researchers using the HPC-UGent infrastructure. For this, we use and develop EasyBuild, a software build and installation framework for (scientific) software on HPC systems. EasyBuild started as an in-house project in 2009, but quickly grew out to be used and developed by a worldwide community after it was open sourced in 2012 under the GPLv2 license.
In my free time I like to spend time with my wife and 2 kids, tinker with Python, open source software and Raspberry Pis, volunteer as a CoderDojo coach introducing young kids into the wonderful world of computer programming (they will never be bored again!), enjoy a nice beer, listen to (loud) music, and frequently attend shows and festivals. Also, I have a weak spot for dad jokes and stickers.
On an (almost) daily basis I spend quite a bit of my time developing and maintaining EasyBuild, and helping out with processing incoming contributions.
More recently I also got involved with a new project, the European Environment for Scientific Software Installations (EESSI, pronounced as “easy”), where EasyBuild is one of the key components.
The goal of the EESSI project is to go well beyond just making the installation of scientific software easier, like we do with EasyBuild, but to provide a well performing scientific software stack that is ready-to-go on a broad range of systems, including personal workstations & laptops, HPC clusters, and cloud instances, regardless of the operating system (Linux, macOS, Windows) and CPU architecture (x86_64, Arm64, POWER, …).
EESSI is fun to work on because it pulls together various open source projects (CernVM-FS, Gentoo Prefix, EasyBuild, Lmod, archspec, ReFrame) and combine them to try and achieve a very ambitious goal. In addition, this too is quickly growing into a community project, with project partners throughout Europe (and beyond) working together on it.
I got in touch with FOSS occasionally while working on my PhD in 2005-2010, but I really got into it shortly after I started working in the HPC-UGent team, partially because Free and Open Source Software is used extensively in the HPC community.
One of the main things that sparked my interest in FOSS was attending FOSDEM, a large yearly open source meetup held during the weekend in Brussels, for the first time in 2013.
I was blown away by the sheer size of the event, the interesting and passionate people I met there, and the general atmosphere (the beer bars that are present on every corner helped too). So much so that I ended up organizing a full-day session on HPC at FOSDEM in 2014, co-organized an HPC-themed FOSDEM session every year since 2016, and have attended the event every year faithfully since that first time in 2013…
At the end of my PhD I decided to make sure that the software I developed during my research was available as FOSS, so others could easily pick up where I left of.
In addition, I did a couple of drive-by contributions to various projects, mainly to share fixes to bugs that were annoying me and hence probably others as well.
Things really took off after we open sourced EasyBuild back in 2012. We were hoping to get feedback from other HPC sites, and discover how they were getting scientific software installed. Maybe we were reinventing the wheel, while others were using a well established tool that weren’t aware of?
What happened instead though was that people all around the world started using EasyBuild, and quickly after also started contributing to it. Before we knew it, a community grew around the project and we were organizing hackathons and user meetings.
Apparently we started a project that others thought impossible: a tool to facilitate the often complex installation process of scientific software…
We quickly learned that making a tool that others find useful can be very time consuming, since suddenly you need to answer incoming questions, make sure the project is properly documented, respond in to incoming bug reports and feature requests, process incoming contributions, organize meetups, etc. Next to getting bug fixes and enhancements implemented by others, a modestly popular open source project also helps to expand your network, grow your expertise (since you’re learning from others), and even make new friends.
Getting involved with FOSS can be a very rewarding experience.
No matter how small the contribution is you’re making, even if it’s just fixing a typo in the documentation or reporting an obscure bug, you become a part of something bigger, and that feels very rewarding.
You will get to know interesting (and usually very friendly) people you would’ve never gotten in touch with otherwise, and you will learn new things on a daily basis.
Contributing to open source software can also be a great way to expand your network and technical expertise, which can help to find a (better) job.
Find a project you care about, like a tool you use often yourself, and come up with a way to improve it (extend the documentation, fix a bug, implement a new feature, etc.). Learning the basics of Git and platforms like GitHub/GitLab/Bitbucket is probably helpful.
Try to get in touch with the developers or the community around the project, and let them know what you’re working on. They may have some useful pointers for you that could help you get started.
See how others are contributing to the project and FOSS in general: read blog posts, inspect recent pull requests and issues of the project(s) you’re interested in, watch people on Twitch working on open source, etc.
Finally, don’t be afraid to ask for help, but be patient and don’t take it personally when you get (what seems to be) an unfriendly reply (or no reply at all). Always keep in mind that people may be (very) busy, or going through a difficult time for whatever reason. We’re all human.
However, don’t ignore personal insults or any form of harassment. Speak up, inform others involved in the project about what happened, or just move on and find another project worth your time.
One important challenge is the unfair expectations some people may have about the “free” aspect of FOSS. Open source software is usually available to others free of cost, but someone paid for it somehow, either by funding the project or by spending (a lot of) their time on it, it didn’t just appear out of thin air…
FOSS maintainer burnout is a real problem, and something that deserves a lot more attention.
Another challenge is diversity: FOSS is (still) way too much a world of white men. In my experience this is slowly starting to change, but perhaps this is just my personal bias w.r.t. people and projects I pay attention to. One thing I have been trying to do myself is to make the group of people I follow on Twitter more diverse. You quickly notice different topics popping up in your timeline when doing so, which shows you were too much “in your own bubble” before…
I’m not going to pretend to have a solution ready for these problems though… I do think that being able to put yourself in the shoes of others (a maintainer, a contributor, a user) is major part of it. It’s easy to project your own personal situation onto others, and assume they have it equally easy (or hard) as yourself, or that they have the same (lack of) technical and personal skills as you do. Realizing that this is most likely not the case, and trying to look at things from their point of view is probably a step in the right direction…
Git is (still) a major hurdle for many people I think, despite it being a well established tool now in FOSS development…
I still remember how difficult it was for our team to start using it, and how often we “got stuck” in some deep dark corner looking for a way out. We were lucky enough to have somebody in our team who was experienced with Git to help us out when needed, but not everybody is able to get hands-on help like that when needed…
We have seen this first hand in the EasyBuild community, where a significant amount of people do not have extensive experience with software development and may not be very familiar with Git.
This is exactly why we have implemented several features in EasyBuild that facilitate making contributions, without requiring even basic experience of Git or GitHub.
Not only did this result in more (and better structured) contributions, but it also made it significantly easier even for experienced contributors to open pull requests.
I gave a talk about this at FOSDEM'18.
Software is eating the world, and the people who know enough about software development will have a significant edge over others.
Keep this in mind, educate yourself and others, and never lose a good opportunity to learn something new …