I’ve been spending some time with the Terasology open source project over the last years, and by attending last years Google Summer of Code (GSOC) I got even more involved. While the role of an organization admin covers mostly “paperwork” and other administrative tasks, being a mentor requires direct interaction with students, feedback, and some form of rating performance (pass or fail). Therefore, it is important for both sides to get to know each other and find commons in the way to approach the project over the summer. This post explains my points of view on specific topics around GSOC, mentor student interaction, and open source contributions in general.
The first impression is important. So do people say. Obviously, someone who joins the chat just to point out “how terrible your things” are or claiming that “everyone can do it better” will not get a good spot on the sympathy list. Most of us are open for critics, and we know that there is much room for improvements, but we are convinced by evidence, not loud words.
Introduce yourself, tell us who you are and why you are interested in working with us. The channel of communication may vary for different projects, but that does not matter for these simple rules. Open source projects live by their contributors and someone showing up with a helping hand is warmly welcome (if not, there must be something wrong with the project).
Don’t go like a bull at a gate before you even looked under the surface of a project. Sometimes, the nitty-gritty details are responsible for design decisions, implementation details and the like. Sometimes it’s the old machine the main developer is working on. Sometimes it has legacy reasons. You never know.
Talking to people will help you getting started. Often, we are happy to show our fancy project to “the new guy” - just to be a little proud of ourselves.Try to find out who to talk to regarding specific parts of the project - who is the contact person for your project idea? Are there others that can help you with the project? There is so much you can learn (and you should), which leads us to the next point.
Asking questions is important. We cannot read minds, and sometimes you get stuck with issues we solved a long time ago and nearly forgot about. Or we have not encountered them yet. Be sure to make a minimal effort search before asking: search for the keyword on GitHub, in the forums, the wiki maybe. And don’t get disappointed when people first sent you to the “Setup Guide”, the “FAQs”, or a similar site (let’s hope these pages and articles are filled and maintained, and most questions can be answered by carefully reading them).
However, this usually applies for general questions around setup, structure, and/or best practices. Discussing code contributions, bug fixes, and issue descriptions will likely not be as easy. Nobody will get mad at you for asking questions about the code base or the programming language (as long as you followed the tips from the previous paragraph). Just try to make sure you don’t ask the same question more than once (maybe twice, but that’s enough).
Finally, I want to say that you should be confident. You know about your skills, and we get to know you by how you present yourself. To me it matters that you are motivated and willing to learn, and that you try to integrate with the community. You can show us your CV, but you don’t have to (actually, a few contributions give you better chances than the best resume).
And in the end, we are people that help you to solve issues, remove obstacles, and find the right way. We are mentors, not your boss. Yes, we have to rate your performance in order to let you pass or fail the project, but that is tied to the proposal. And no organization will let you fail because you encountered an huge problem nobody knew about before.
Maybe this helps some of you to get an impression of what Google Summer of Code looks from the other side. We are happy for every new face that
shoes shows up and you can contribute no matter if you get a slot for the summer project or not. Look out for interesting projects, reach out to the community and become part of open source software development!