I volunteered to mentor with two organizations this year, OBF and NESCent. Last month I posted a couple of ideas with each org:
- Jump-start MIAPA protocol annotation with a user-accessible demo
- Biopython and PyCogent interoperability
- PDB-Tidy: command-line tools for manipulating PDB files
- Biopython integration with a third-party structural biology application
The applications that have come in have been pretty good; the only thing I can complain about is that nobody has followed through with my MIAPA project -- we got a nibble from one student, but nothing after that.
Since we're doing the last round of application reviews now before the deadline, here's some general guidance on what mentors are looking for in a student application.
First, a couple of outside references:
The Zen of GSoCGoogle Summer of Code is a program to recruit and foster new long-term open-source contributors.
Broadly, the mentoring organizations are asking three questions:
- Are you motivated enough about this work to continue contributing after the summer?
- Can you write useful code on your own?
- Do you interact well with the community, so that we can work with you to merge your work cleanly into the trunk and rely on you to maintain the codebase?
Here are some specific tips for demonstrating that you have some committer in you.
Put your previous work onlineIt's remarkable how many ostensible programmers just can't write decent code. They'll have a list of successful past projects they worked on, maybe a legitimate degree in computer science, but their code itself was clearly never fully understood by anyone, original programmer included. (Remember, programming languages exist for humans to understand -- the computer itself runs on machine code.) The only way we can be sure you can write code we can use is if we can look at something you've written previously.
Biopython uses GitHub for development, so putting a project of your own on GitHub demonstrates two useful things: you can write functioning code, and you're already up to speed with the build tools that Biopython uses.
If the most relevant code you've written is tied up in some way -- say, it's part of a research project still being prepared for publication -- see if you can use at least a few snippets of it. So far, it seems most professors have been willing to allow that.
Subscribe to your mentoring organization's mailing listI know, e-mail mailing lists seem at least a decade behind the times. But open-source projects like to have a permanent public record of the discussions that happen, and everyone has an e-mail account. We also have IRC channels and Twitter tags (#phylosoc and #obfsoc), but project proposals are generally more than 140 characters so it's best to use e-mail at some point.
Plus, you'll be able to read all the advice the other students are getting -- mentors get fatigued as the application season wears on, and once we've written the same thing a few times we start skipping details.
Write a weekly project scheduleThe GSoC application has fields for pointing to external info. Create a Google document or spreadsheet (or README.md on GitHub if you're fancy) detailing your project plan week-by-week.
- Date, or week number for referencing later
- GSoC events and guidelines (see the official timeline)
- Deliverables for the week — what's produced, e.g. documentation sections, unit tests, classes, modules
- Approach for each of these tasks, in a few words
- Potential problems that could occur, specific to the tasks — perhaps a dependency turns out to be inadequate, or an integration step is required
- Proposed mitigation for each of the foreseen issues
(If you want to estimate the number of hours or days each task will take, that's cool too.)
Here are the examples from previous GSoC projects that we've been sharing on the mailing lists:
- phyloXML in Biopython (mine)
- phyloXML in BioRuby
- Phylogenetic XML (the origin of NeXML)
- NeXML for Mesquite
Respect the deadlinesSubmit a draft of your application to Google at least a day before the deadline, April 9. There are thousands of applicants each year, and Google has no reason to let the deadline slide — an important function of the application process itself is to screen out students who won't deliver by the stated deadlines. In effect, if your application isn't submitted to Google by noon PST on April 9, then you didn't apply.
BUT: If you submit something even partially complete, we can contact you later during the review stage and get the remaining information from you. And if you included a link to your weekly plan (as a separate online document), you can edit that after the deadline too.
Best of luck!