We’ve already heard from a number of prospective GSoC students. Some of them are existing Parrot community members, others are fresh new faces who are looking to get involved for the first time. Many of these students have at least a basic project idea in mind, which is the first step in moving from “prospective student” to “accepted student”.

Get Started

So, what are the rest of the steps? If you are a student interested in working with Parrot for GSoC, this is a checklist of sorts for what to do next, and how to increase your chances of having your proposal accepted.

Get Involved.

First things first, how does GSoC work? Google is going to have a fixed number of slots available for students, and will divvy those out to mentoring organizations according to some algorithm. I don’t know the details, but I am lead to believe that the number of slots available will be based on past performance of the organization, and the number of quality applications received from students.

Google is going to give us a number of slots to fill, and it’s going to be the job of the Parrot Foundation to fill them. We are going to take all the proposals, review them, score them, and select enough of them to fill our available slots.

One important factor we have to take into account is the capability of the student: Does the student have the ability (knowledge, talent, experience) to actually complete the project? With competition as high as it is, we can’t be accepting proposals which don’t have a high probability of success.

Now here’s the big question: How do we determine whether or not a particular student has the ability to deliver on their proposal? We need to see the student in action first.

If you want to have any chance of getting accepted, we need to know who you are. We need to talk to you. You need to get involved.

Come chat on IRC. Subscribe to the mailing list. Attend our weekly planning meetings. Look through our queue of bugs, and submit patches. Submit patches to fix bugs, to cleanup code, to improve documentation, etc. Add new tests. Submit bug reports when you find bugs. Submit test reports when you run tests. Do things to prove that you are reading our code and becoming familiar with our system. You should learn about Parrot before the summer coding period starts, so that when the start date comes you can get off to an immediate start.

Get involved. This is the best and only way for us to get to know you, for us to see the quality of your work, and for us to determine your familiarity with our system. If you aren’t familiar with Parrot, we can’t expect you to successfully complete a large-sized project over the summer.

Prepare a Proposal

We’ve put a template for GSoC proposals up on the wiki, with some explanations. Copy that template and start filling in your details.

I suggest you create an account on Github, and create a Gist there for your proposal. As you work on the proposal we can read it and give you feedback. You make changes, we give more feedback. This continues until the submission deadline when you submit the actual proposal to Google.

This system has a few great benefits:

  1. The more we review your proposal and talk to you about it, the better we know you. This was from my first point. You want us to know you.
  2. The more feedback you get, the better your proposal will be. If we say we want something specific, and you include that, we will like your proposal more. Students who get started with the proposal early, and get lots of feedback are more likely to have their proposals accepted.
  3. By having your proposal someplace public like github, more people will be able to see it and more people will be alerted when you make changes. Also, Github is where Parrot’s source code is, so we would like to see you be familiar with that website and its services so you can be productive over the summer.

If you have another idea for where to put public proposals, that’s fine too. For people who don’t know where to put it, Github is a great idea.

The Proposal

What goes in a successful proposal? There are a few items which are particularly important:

  1. Project definition: Tell us what the project is. Also included in this, tell us how you know when you are done (what are the specific goals), and tell us how this project should benefit Parrot. If you can’t explain what your project is, it will be hard for us to understand what you want to do and determine if you are able to do it. Be as specific as you can be.
  2. Timeline: This doesn’t have to be super-detailed, but we do want to see a general timeline for your project broken up by weeks. Tell us what you are going to be doing with your time. This timeline will be used during your project to assess performance, and will be used during the proposal to see if you are realistic and if you have done enough planning. Include in your timeline specific milestones (“Feature X complete by this time”), including milestones related to testing and documentation. Do Not save all your testing and documenting until the end. We don’t like that. Do testing and documenting as you go, and include specific amounts in your timeline (“X tests completed”, and “X pages of documentation written”). Unit tests and Documentation are as important as the code is, so make sure you include those in your plan.
  3. Backup plans: What will you do if your project is delayed? What will you do if your project goes unexpectedly fast? Include information in your proposal to talk about these possibilities. In the first case, give us a list of items which could be slashed from your proposal in the worst-case scenario, or talk about how you will work around specific problem areas. In the later case, give a list of possible extension features which you could work on if you have extra time. We don’t want anybody to sit around on their hands and waste time. Make sure you include plans for what to do if everything goes well.

Fill out the proposal template, and make sure to including plenty of detail in these areas. Send a link to your proposal to the parrot-dev mailing list so all developers can read it and give feedback. The more you get, the better your proposal will be.

Do Your Best

Here’s a very important thing to remember: Parrot will probably get more proposals than we have slots. There will be competition. Some proposals will not be accepted. If you don’t do your best, and don’t follow the advise in this post, yours could be one of the ones that isn’t accepted.

Do your best, Good luck!