Last updated April 6, 2008.
During Summer of Code 2005 and 2006, we reviewed hundreds of applications, from which 25 students were selected to participate. This year we are likely to receive even more. Competition will be fierce, so what can you do to help make sure your application gets serious consideration? Here are some tips, straight from last year's mentors themselves.
Sell your idea. Describe your idea in detail. What is its ultimate goal? What components will it have? What benefits does it have for Drupal itself and its community? How do you plan to achieve completion of your project? If a specification already exists, what will you do that will go above and beyond expectations?
Sell yourself. Get across your enthusiasm for the project. Tell us what makes you stand out from the rest of the crowd. Talk about your past experiences, what makes you tick. Why are you interested in open source software, and Drupal in particular? What interests do you have, and how do these interests relate to the project for which you're applying? There is a basic assumption that people applying for Summer of Code will have at least some programming skills already. So rather than spend a lot of time elaborating on these (though by all means, do tell us what you know), spend time talking about you.
Show enthusiasm. Summer of Code is a very exciting opportunity, and Drupal is an extremely exciting project to work on. We're not just looking for people who want a summer job to pass the time, we're looking for devoted people who have an intrinsic passion for open source, and are (or will become) Drupal zealots in particular. ;)
Tailor your application to the project. It was painfully obvious last year that certain people copied/pasted parts (or even the entirety) of their applications to multiple projects. This can be seen from a mile away, and it is a sure-fire way for your application to not be taken seriously. Each application you send should be targeted and tailored for the specific mentoring organization and project to which you are applying.
Get feedback on your idea from the community. Discussing your idea with some established Drupal folks is vital. If your idea duplicates existing efforts or code (and does not provide a very convincing reason for doing so), it will be rejected. Try to have your application reviewed by someone before you submit it, whether that be the mentor for a particular project itself (in the case of already generated ideas on the following pages), or a person with expertise in a certain area (such as the file system, or AJAX). Don't be afraid to ask the community for help; we want you to succeed just as much as you do. :)
Don't be afraid to go out on a limb. Have a brilliant idea that's not covered by the proposals on the following pages? Great! Don't be scared to try and think "outside the box" and come up with a fantastic idea of your own.
Browse accepted applications from last year. There are some previously accepted applications from last year available from the SoC Alumni Wiki. Feel free to browse these to get a feel for things your application should cover.
Konstantin Kaefer's application was the best written application from 2006. Read this application carefully for an example of a successful writing style.