GSoC 2019, here we go
I first heard about Google Summer of Code (GSoC) a couple of years ago, and since then I’ve consistently missed the application deadline every year (because, well, stuff). This year, however, I was lucky enough to (i) randomly find out I could still submit a proposal, (ii) find a proposal that was extremely well-aligned with my current research, and (iii) get accepted into the GSoC 2019 program. This post is the first of a series describing the evolution of this project.
In the beginning, there was only Darkness
It was already late at night - I’m usually a night owl, but I was just emerging from a whole day of systematic literature review. I was pretty tired and decided to call it a day. There’s a shutdown ritual, of course, so I was catching up with Twitter when I saw a post about GSoC. The deadline for applications was in the next day. OK, it went by - again. Just out of curiosity, I decided to check the projects for this year. I started checking the participating organizations, opening a few of them on side tabs, when I saw “The Terasology Foundation” listed.
Terasology is an open-source voxel world inspired by Minecraft. I remembered seeing a gameplay video a while back, and then another thing just connected: I’ve had this idea for some time that I needed to test part of my research in real-world applications. Since I’ve been working with cognitive agents for some time now, I was already kind of set on using a game platform as a research testbed or creating a simple game. So, instead of ctrl+clicking it, I decided to go straight to their projects list.
The projects list was on Trello, and there were a lot of ideas there. This caught my attention - I had seen (three or four) GSoC project lists in the past, and all of them were pre-determined projects (or so it seemed at the time). So I started browsing the cards and suddenly there it was - light. A project idea that was completely aligned with my research.
Fear is the mind-killer
I’ve been studying collective agent behavior for goal-oriented agents, and I really like it (I’ll probably post about my research in the future). The idea I had just found was about “extending the behavior mechanisms of non-playable characters (NPCs) to support collective behavior”. It was love at first sight. There was, however, a small problem: GSoC proposals usually involve a 2-week period of community bonding, so you can reach the organizations, exchange ideas about the project, etc. before finally submitting a proposal. I had about 20h before the submission deadline. If it were any other theme, I would probably just let it go. But not this time. I had to try.
I started by reading everything that was linked to the idea. The way the idea was organized - external references, linked repos/wikis - was crucial for that. I started reading about it as fast as I could, all to be sure that I would be able to submit a proposal as I imagined it. OK, it was sound. The next step was to engage the community, and that went pretty much like this:
Just in case it seems out of context: it was a really nice reply, same as the ones I got before/later (this one just summarizes the situation). I was really late in the process, so I had started pinging community members on Discord. Their answers were consistently like:
- You’re terribly late, and it’s important that you know it.
- This is how the process works, and this is what you need to do.
- Could you tell me more about what you want to do?
- Do it! Here’s what everybody is doing.
- You can reach me anytime, ask anything about Terasology, what you want to do, what has been done before.
This was just great, and I couldn’t ask for better support. I knew I was behind, everybody knew it, and yet what I was getting from the community was:
- Expectation management
At this point, I had already decided to pull an all-nighter, so I started by setting up the development environment, running the code, pinging developers and asking a lot. In the morning, I had my first proposal fully drafted and posted for review. I was really tired and really happy.
We see in order to move; we move in order to see
After a lot of feedback, I submitted my final project proposal. One month left before the final decision. During this time, I tried to engage the community as much as I could. I didn’t have much time in my hands, so I did what I could: small pull requests for minor documentation changes and some code. Far less than what I wanted to do, but that’s what I could do at that time - so I did it. And one month later I got the good news.
Engaging in a GSoC project requires a few things: weekly meetings, continuous interaction with the community, meticulous planning, and weekly reporting. Since all projects are open-source, everything else follows. Which is why we’re here, actually: I’ve never been particularly interested in keeping a blog, but we are encouraged to publish our progress in a GitHub page, blog, or similar. At the same time, I’ve recently felt the need to create a public space for academic purposes, and I was thinking that perhaps I could also use it to write a bit about my recent experience on changing careers. Which is also why I decided to write this first GSoC post with a motivational perspective.
Here are a few takeaways from this post:
It was an idea at first, but I decided writing more about my career change. It was not easy, but I’m really happy - and I think I can share some of what I’ve experienced with people in a similar situation, or thinking about getting into it.
I will share more about what I’ve been studying. I really like it, and perhaps other people can benefit from it somehow.
If you came just for the GSoC updates, don’t worry: the next related posts will be more technical. I just thought of this post as a good opportunity to talk about my personal experience as well.
There’s a link to my accepted GSoC proposal below. My DMs on Twitter are open - feel free to ask me about it. :)