In each case, the advice I give the students is always basically the same:
- If you aren't a super C coder, or only have limited experience, pick up a copy of K&R. Read it cover-to-cover. "real world" code, like that found in Parrot, can differ significantly from the simplified, mickey-mouse code you experience in most introductory programming classes or the exercises in the back of a "Learn C in 24 hours" book. K&R isn't as in-depth as some tutorial books, but it's complete, concise, and serves as a great reference. Likewise, if your project is centered on Perl code but you aren't a great Perl coder, pick up a copy of the Camel book. Nothing beats having a good reference available as you work. If you don't know all the answers, you should know where to find all the answers.
- Get a copy of the Parrot source code, build it and run the tests. Start reading the code. You'll definitely want to skim over at least most of the src directory, and you will want to pay particular focus to the subsystems involved in your proposed project. If you're doing a GC project, read the code in src/gc. Strings? src/string. As you read code, make changes; especially changes to code formatting, readability, and documentation. Submit these changes as patches and be prepared for feedback. If you see problems but aren't able to fix them yourself, submit bug reports. It's hard to accept a GSoC project if we aren't familiar with the quality (or quantity) of your work.
- Get involved. Join the parrot-dev mailing list. This list isn't super-high traffic, so don't worry about getting your inbox flooded. Send a welcome message to the list to introduce yourself. If you're really interested to see what's going on at a deeper level, join the parrot-tickets list as well This list represents a live feed of events happening in our issue tracker. This will give you an idea of the kinds of problems users have and how we go about fixing them. One of the best things you can do is to join the #parrot chatroom on IRC. Introduce yourself to people there, follow the conversations, and get involved. Ask questions. It's hard to accept a GSoC project if we aren't familiar with you as a person, and if you aren't an active community member.