Welcome to Once a Maintainer, where each week we interview an open source maintainer and tell their story.
This week we’re talking to Felienne Hermans, professor of computer science at the Vrije Universiteit Amsterdam and creator of Hedy, a progressive programming language designed for kids 10 and up and for teachers to use in the classroom.
Once a Maintainer is written by the team at Infield, an app that helps engineering teams manage complex open source dependency upgrades. We spoke with Felienne from her home in the Netherlands.
How did you become a programmer?
Probably when I was about six, we had a computer in the house. Immediately I enjoyed playing with the computer, making the alphabet and stuff. Then after a while, probably when I was about eight or nine, I started programming in BASIC. There was no Internet, so I just had booklets from the library, copying and pasting basic codes around. I also had friends that liked programming, so we hung out together rotating houses. I loved building electronics as well. They had these kits from Velleman, which sounds very Dutch. You would get a little package and it would be like make your own dice and then it would have two buttons and six LED lights and then you press the button and then you randomly throw two dice with LED lights. I would save all my pocket money and to buy these kits. And I would also open my computer and add extra memory, stuff like that. I would say the regular things, but I realize now for many people this is not regular.
Do you remember your first computer?
Yes, it was a Commodore 64.
Did you learn programming in high school?
We did have a computing course, but it was very basic and boring and taught by a German teacher that didn't know programming. But my school also had a computer club, and the club wasn't run by the boring German teacher, it was run by the math teachers. So every Thursday during lunch break you could go to the math teacher’s office and all the kids that liked computers would be there, and we would exchange illegal games on CD-ROMs and things like that.
Then I went to do a major in computer science at a university engineering school, and then I did a PhD in software engineering, and then I became a university professor afterwards. So I would say in all but gender, I tick all the boxes.
What led you to decide to go down the academic path instead of the more corporate path?
I don't really know. It sort of happens I think. I mean, I was interested in doing a PhD, but I wasn't actively job hunting or anything. I was actually looking for a non-academic job, but when I was finishing up my undergrad degree I participated in this programming competition, and one of the judges would later become my PhD supervisor. I was chatting with him after the competition. We didn't win, we came in second, but he was like, “I'm really impressed with what you've been doing. Do you have a job?” I'm like, “Oh, I'm writing my thesis” and he said “Well, if you're interested, we have this job which is about building programming languages”, which I was really interested in. So then I applied and I got that position.
What was your first exposure to open source?
So even in university as an undergrad already there was quite some exposure to open source. Many of my professors were these traditional old gray white dudes and open source was very important to them. They would always bitch about how Microsoft is bad, and Windows is bad, and if you'd send them a Word document they would get really angry at you. This is ridiculous, proprietary software. Their world is very angry. And then I couldn't happen but notice that the stuff I liked using, like Windows and Mac OS, they were commercial, so they were bad, but I liked their software because it works really well, right? Then there’s Linux. I took a course on Linux. I had to use Linux. Nothing would ever work. And this is the early days of the Internet. So you want to download a movie and it took forever.
So to me, open source means being an old dude that's always angry at the inevitable state of things. Like, yes, Internet Explorer is bad, but everyone's using it right? So they didn't seem to me to be grounded in reality. And also their software was bad, it didn't work. So I really started believing that open source just didn’t work, you can’t build in open source. I didn't see myself in that world because my research has always been about making software that works for people. This is why I'm in computer science.
You also see that the leaders of open source back then were also like this. When I was a student, we had Richard Stallman lecture in the university. We go to the lecture and a student asks a question and he answers “That is not a question.” And then he just continues. So yeah, it never really got better after that.
So how did you decide to focus on programming education?
So when I finished my PhD, I was very much like, I don't know what I want. I don't know if I want to be in academia because it's far from having an actual impact in the world. I was sort of struggling. I started to teach in a high school one day a week. I thought I would do something valuable for my community because they really need teachers, and I can do programming. So I’m just gonna teach 12 year olds. And I thought, you know, how hard can it be? They're 12 year olds. I literally wrote a book on programming. And then it was quite hard. Actually, very hard. I was failing spectacularly.
These were all smart kids. They were in a good high school. So I cannot say it’s the kids. It's definitely me. I'm not teaching well. First I thought, you know, maybe I can explain it like this or I can explain it like that. But ultimately, I thought, a 12 year old and a professional language like Python, that's just not going to work. It's too hard. You have stuff like Scratch which is a visual language, a bit like Mindstorms with the blocks. But the 12 year olds, they think they're like adults. And you give them Scratch and they say it’s like a toy. This is for my 8 year old brother. I want to do an actual grown up language. But then you give them Python and it’s just not reasonable at that age, with their attention span and the level of logical thinking that they can do. So there was a gap there.
And that’s where I thought well, a 12 year old doesn't need everything of Python. They don't need methods, they don't need objects, they don't need functions, they don't need parameters or arguments. You can just print “Hello”. That's enough at the beginning. So I made this baby Python. That meets them where they are. And then we gradually amp up the complexity until it’s a subset of real Python. So secretly, we bring them up to Python.
Do you still use Scratch for a kid who has no exposure at all?
No, because mainly because I have one class and some of them have already done Scratch in elementary school. For the kids that have never done it, if you first give them Scratch while you give the other ones a grown up language, this is not neutral, right? These are the girls. These are the kids from lower socioeconomic families where there's not a computer, or they don't have parents bringing them to a computer club. So if you give some kids Scratch and some Hedy, my programming language, you are reinforcing that they don’t have the talent. So we think it’s better to start everyone at the same time.
How do you think your high school teaching has informed your university-level teaching? Has it?
That's a great question. We get more and more people that teach in universities that want to use Hedy, even though I built it for 12 year olds. Doing stuff in small steps and making sure your learners are not overwhelmed, it really works well with any age. I don't teach programming in the university now. I actually teach didactics, because I teach computer science teachers. But if I taught a programming course, I would definitely use this approach for a few weeks in university. I mean, MIT also uses Scratch initially and then they go to C, right? There's nothing wrong with using a tool that's also for younger learners if it's a context that makes sense.
What’s the general consensus around writing your own language and your own platform versus working within the curriculum as it was? How do people react to you personally when you say I dealt with this problem by writing my own language?
It depends who you ask, right? Teachers are generally very positive. It solves our problem. For other people, there is always criticism on the exact thing that we're doing. They want to know why don’t we do level two or three, and why do you support this or that. So on that level, people have opinions, but the idea to make a language that is specifically for this group that is too old for Scratch and too young for Python, I think there was a missing link and the idea of doing a new language isn’t so weird.
The end of Hedy is Python. Level 18 of Hedy is a subset of Python. So it’s not like I’m teaching them this fake thing that will never help them. It’s more like we want to go to the same place, you and me. I’m just helping you get there. And I think that’s powerful.
Why did you choose Python?
Well, one reason is that we already teach Python, so I could reuse the rest of my lesson plan. Python is used in most elementary introductory programming across levels. So it's a good place to go because there's a lot of resources there. I like Python. It’s also just the most common language used for teaching at this moment in time.
How do you encourage your university students to get involved in open source?
So I do still supervise undergrads in computer science, and for their final project many of them want to do something with Hedy. So they come to me for that. And it’s always this interesting exploration. Some of them want to do user research. They want to understand where students are struggling. Many of them also want to build something. And everything we have open on Github, we look at it and I say, “This could be your undergrad project.” Of course some are too big for an undergrad, or some too small. But we look at it together. I’ve had maybe a dozen undergrad university CS students contribute to Hedy, and that’s very nice.
Open source can be a good experience because it's very motivating. They build something that has actual users and they know that some of their peers that graduate with other professors, they build a prototype, but they just hand it into the professor. and that’s it. I had this one student, she built a new feature into the language and then we deployed it, and after five minutes already hundreds of programs had been created with her work. She's looking at the statistics, 100 projects and this is just five minutes, right? And ultimately, she did data analysis on 900,000 programs that used her new feature. That’s really, really cool.
How do we get more women into open source?
I don’t know, man. As I said, I had never contributed. I didn’t plan to build a big open source project. I just put it on Github because that’s sort of the right thing to do. I built this as a prototype for me and my students. And the real reason I put it on Github was it integrated really nicely with Heroku, so I could easily deploy. That was the actual reason. I didn’t plan it.
One thing that we do that I think is very good for any novice, we have a weekly Zoom meeting with contributors. So we say if you want to contribute, come to a meeting, just so that you see our faces. These are the people that will interact with you in a pull request and you see that we are people. We also see that you are a person. Sometimes people say, you know, I'm really new and then we know to treat them in a different way. I think that is something that works really well and I haven’t seen many open source projects do this. It takes a lot of my time. I think it’s worth it because this is how we attract people. It’s also how we keep people, because they come and say “I’m working on this, I tried something really hard and I’m stuck.” On Github you can’t do that, make half a request and then say you’re stuck.
We also have really strong guidelines on how you can contribute. I don’t want to say a code of conduct because people have very strong opinions about that, but it says if you see code that's written in a way that maybe you don't like, probably there's a reason. Like, assume this person had a reason. We just had a new contributor who says they’re super excited about helping. And then the first thing they do is start a discussion with 12 points - we should do this, we should do that. So I reached out to him on our Discord and said I’m sorry, that’s just not the way we speak to each other here. We shouldn’t do anything, and for most of your points there are very good reasons. I’m happy to tell you those reasons. I'm sure there are also other projects on the Internet where your style of communication is welcome and maybe even preferred. But that's not my project and I do think that has something to do with my gender.
It's just such an interesting question in open source. It is your project. It definitely started as your project. At what point does it kind of become the community’s project?
The nicest thing is when we’re in this meeting and someone else says “That is not the Hedy way.” If you enforce these norms, also if you radiate the norms, you can have the norms. And also live by the norms yourself, especially as a core contributor. You have to document them, but you also have to do them yourself.
Initially, I was really trying my best to keep different people in the projects happy, including my own husband. He was also submitting pull requests to my repository. I'm like, I love you, but I don't want this. He saw an error and wanted to fix it. But for me, even though I told you about this bug over dinner, I didn't ask you to fix it and it's just gonna make stuff more complicated. You can come to the meetings like a normal person.
What are some other projects you think are interesting? Or people doing interesting work?
We do use a lot of components. We use a tool called Weblate. Weblate is a tool that allows you to translate website content or other content, doesn't even have to be website content. It's also open source. You can log in with your GitHub, you can connect it, you go on a web interface and you just get a string that's in English and an empty box and you type your language there. People hit save and it creates a pull request and it will show up in their Github repository. We used to have our own hacks where people would upload translations and e-mail it to me and then I would have to put it in the system, it had all sorts of problems.
The other nice thing about Weblate is that some people are just really excited about translating. “Oh, I will make it my mission to translate everything into Vietnamese.” I think it's not always like perfect quality, but it's something to get you going - now we have a Vietnamese version, then people start using it in Vietnam, and then someone with a little bit more content knowledge, they updated it. Without this tool maybe we would have maybe ten languages, definitely not the 47 we have now. And it’s not a lot of effort to set up. There's no reason that whatever you're doing isn't translated into multiple languages. It supports JSON and YAML and Markdown. If your website isn't properly localized, it's because you didn't do five minutes of work with that. It's a very cool project. I love that.