Your application has two important purposes: It should clearly identify the goals of your project, and it should convince us that you are the right person for this task.
In particular, your application is your opportunity to show us that you understand what you'll be doing for the task, and to demonstrate that you've spent some time thinking about it, its difficulties, strategies for overcoming these, and have a good estimate of how much time they will take. Based on that, we will ask you a realistic planning for the 12 weeks of GSoC, including the deliverables expected for each intermediate evaluation period and at the end of the GSoC. In order to be complete, we also expect you to make a pull request, for example for a bug fix. The purpose is to ensure you know how to use Git, and that you had a look at our coding conventions.
We don't expect you to produce a perfect application without any help at all. We strongly encourage you to discuss your plans and your application with us while you're preparing it, to ensure your ideas align well with our own thoughts on the tasks, and that your objectives are achievable. It is also the perfect chance to already get to know your potential mentors and the rest of the team. Don't hesitate to join the IRC channels and ask questions: keep in mind that there are no stupid questions!
Your application should have at least the following information:
- You should at least add your IRC (freenode) nickname here.
- State concisely what you intend your project to be about. 40 characters is usually a good upper limit.
- If you're not sure, come and talk to us.
- Benefits to the ScummVM Community
- A good project will not just be fun to work on, but also generally useful to others. Why do you think it's a good project for us?
- The deliverables will be used to evaluate your progress/success at the intermediate/final evaluations, so it's very important that you list some clear goals here. Some examples:
- "Get scene X in game Y working."
- "Improve feature X in ways Y and Z."
- "Write documentation for the new interfaces."
- "Improve performance in this game scene by 20%."
- Make sure there is a clearly visible set of goals that need to be accomplished for your project to be considered successful. You might also want to list additional "stretch" goals you plan to accomplish in the course of your project if everything goes better than expected!
- Finally, be sure to describe some milestones, your high-level targets for the project. A milestone should be connected to the progress/accomplishment of goals. You should, at the very least, define 2 (two) milestones here. Again, describe the milestones and elaborate on your reasons for defining exactly these milestones. When you plan to accomplish the milestones will be handled in the schedule and not here.
- Your summer work on your project will last for 12 weeks. Create a proposed schedule with a granularity of weeks. This schedule should (among other things) explain how long each of your goals is planned to take, and you should connect the weeks to the Summer of Code schedule, i.e. clearly make the start, intermediate evaluations, etc. visible.
- Obviously we want to see a connection between your goals and your schedule: try to elaborate why you think X takes time Y and what possible issues might arise here. Your schedule will probably change once you've started working on your project, so we want to know what kind of risks and problems you think might cause such changes.
- Last but not least, put a fixed date for each milestone you defined here. We want at least one milestone before the mid-term.
- How many hours per week can you spend working on this? What other obligations do you have this summer? It is fine if you have exams or vacations planned, but explain how you plan to adapt your schedule around this.
- Cellular is preferable, for emergency contacts.
- Which hours of the day will you be available? This is important because we want to match this up to our mentors' schedules where possible.
- The two main questions you should answer here are:
- Who are you?
- What makes you the best person to work on this project?
- Make sure you fill this with some background. We would like to know your university year for example. Also, explain what attracts you to ScummVM in general, and to your project specifically. What experience do you have with C++ or other languages required in your project? Have you taken university courses which you think will be helpful? Have you worked on any projects we can take a look at? Do you think you will learn anything from your proposed project?
- A link to the pull request you submitted as part of our Project Rules