Recently I wrote a piece of advice for a mailing list regarding applying to Google Summer of Code because I was a little bit annoyed by the freshmen / first years spamming the list wondering whether they were competent enough to apply. It would be nice if I can share it to the world as well, so here it goes. I copied the post here almost verbatim so keep in mind that I was actually talking to freshmen.
It is really encouraging to see how many people are really interested in doing GSoC, but before publishing your skills or lack thereof to the list, please do a reality check: do you really know what it takes to do an open source project?
- There is no spoonfeeding. You are expected to come up with your own ideas, read up necessary code & literature, and whip up an implementation. Your mentor is there to guide your objectives and answer some (hard) questions, NOT to teach you like lecturers or tutors.
- You are working with existing code. Have you ever asked to read a 10,000 LoC program (and are not told exactly where to start or stop), coded by foreign people across the globe? You are going to do that for GSoC. If your experience with programming is limited to gcc a.c -o a.exe, better stop and see the world.
- Most of the projects has an international-level playing field where a lot of programmers already have too much money and time to spare. Unless you already have solid experience working with any meaningfully-sized open source project (you don't have to be a significant contributor), I don't think it is time yet to apply. If you have just known C++ and Java for a year, then definitely it is not the time to apply, because I seriously doubt you'll be able to contribute.
- Projects need varying and diverse set of skills. You should be confident in a specialisation that is needed. Do you think that the programmers that write Linux kernel and Mediawiki (the engine behind wikipedia) are of the same build? How about music players or games or GCC? If you don't have a "specialisation" yet, good luck mastering one before the application ends (I'm not saying it can't be done).
Therefore, unless you (1st years) are the "true hacker" type that like to tinker with other people's code before university and is able to whiz through CS1010 without breaking a sweat, then the chances to get in will be very slim. I know these kind of people and they can be better programmers than (some of) their SoC 3rd-4th year seniors -- proven by personal experience.
I still highly encourage everyone to apply, however -- the process of applying, when properly done, is very enlightening: you get exposed to (hopefully) high-quality code, smart people, and cool tools you never work with before. Just knowing this makes you a better programmer and as said before, if you stick to a project to contribute then I think it is almost 100% guaranteed to get in next year.
Another tip: the process and the proposal is incredibly important. Skill that is not communicated is not a skill.