Introduction & overview
This is the application of the ScummVM project for the Google Summer of Code. Let's start with a quick overview of the facts before turning to the more elaborate parts of this document.
Please address all items in RED ;-)
Application organized according to program FAQ
Describe your organization.
ScummVM is a collection of Virtual Machines for playing classic graphical point-and-click adventure games on modern hardware. Supported games include favorites such as Monkey Island, Simon the Sorcerer, Space Quest, and many more. To this end, the Virtual Machines (called Engines) are complete reimplementations in C++ of the engines used in the original games. The development team works either by reverse engineering game executables (usually with the permission of creators of the game), or by using the original source code of the games provided by the creators. The number of engines is constantly growing thanks to a very agile and diversified development team.
The VM approach followed by ScummVM results in efficient code, which has been ported to numerous Operating Systems. Besides running on all mainstream desktop environments, namely Windows, Mac OS X and most Unix variants (Linux, *BSD, Solaris), ScummVM also runs on popular game consoles (Wii, Nintendo DS, PlayStation 2, PlayStation Portable and more), smart phones and PDAs (WinCE, PalmOS, iPhone or Symbian based), and even on many not-so-mainstream systems (like BeOS, AmigaOS or OS/2).
ScummVM has a highly productive team of about 45 currently active developers (out of an all-time pool of over 65), working together on a codebase almost 800,000 lines of code. In addition ScummVM has many non-developer contributors, and a huge and highly active community. ScummVM is among the top ranking projects hosted on sourceforge.net with well over 100,000 monthly downloads and ~10 million project web hits per month.
Why is your organization applying to participate in GSoC 2009? What do you hope to gain by participating?
Yes! We like GSoC too much! We love it! We wait eagerly each year for GSoC to start!
What we hope to gain is valuable code contributions. In the past, we've had students take up and complete tasks which had been marked as "to-do", but the main developers were at a loss of time to implement them. The students have taken these up as self-contained GSoC projects and realized them. But also, some students have come up with new functionality, proposed and finally implemented it. These have been our favorite.
In addition, we hope to gain new developers in the project. We hope that after their projects, students will stick around and improve them or work on other interesting tasks. We hope that GSoC brings the students in touch with open source and, in our case, bring them in touch with game developing. We hope these students will add their piece of code in this project and will keep on contributing afterwards.
We've been successful in the past two years and we're really looking forward to great results from the program this year too.
Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
We have participated in the GSoC program for two years running, in 2007 and 2008.
In 2008 we had 6 students and 7 mentors. 5 of our students were so successful that their code is included in the mainline of ScummVM. Our latest release contains code from all 5. We consider a great achievement the fact that 4 of the students still continue to contribute to the project.
We had one student severely underachieving last year. Although his mentor helped him to a great extent, even going as far as writing portions of his task's code with him as a method to help him along, he still failed to even come close to completing the task. It is our assessment that the major problem was that he overestimated his free time to work on the project. We will be addressing this kind of issue this year by using several mothods, such as requiring a more detailed task schedule, explicitly asking about prior committments and conducting interviews with the students.
In 2007 we had 7 students and 4 mentors in total. Two of our students have been promoted to active, regular developers in the team after having their respective code contributions integrated in the codebase. One other student's code contributions have also been integrated in the mainline. Two more have their code still in development to improve it and make it production-ready, either through optimization or extension and better integration. Two students failed to keep up with the schedule and/or produced inadequate code.
All in all, we maintain that we are refining our method of student selection these past two years and this refinement leads to better results each year. The discussions, testimonials and proposed actions which the mentor summit has brought up -and which we have participated in both these two years- have helped us a great deal, during this refinement process as well.
If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?
What license(s) does your project use?
GPLv2 with some parts dual-licensed under LGPL as well
What is the URL for your ideas page?
What is the main development mailing list or forum for your organization?
scummvm-devel AT lists.sourceforge.net
What is the main IRC channel for your organization?
#scummvm at freenode.net
Does your organization have an application template you would like to see students use? If so, please provide it now.
First off, we have a list of rules that all interested students should read: http://wiki.scummvm.org/index.php/Summer_of_Code/Project_Rules
The following was adapted from the FreeBSD Proposal Guidelines.
- Project Title
- Possible Mentor (optional)
- Benefits to the ScummVM Community - a good project will not just be fun to work on, but also generally useful to others.
- Deliverables - It is very important to list quantifiable results here e.g.
- "Improve X modules in ways Y and Z."
- "Write 3 new man pages for the new interfaces."
- "Improve test coverage by writing X more unit/regression tests."
- "Improve performance in FOO by X%."
- Project Schedule - How long will the project take? When can you begin work?
- Availability - How many hours per week can you spend working on this? What other obligations do you have this summer?
- Bio - Who are you? What makes you the best person to work on this project?
Who will be your backup organization administrator? Please include Google Account information.
Sven Hesse, Google Account: drmccoy AR users.sourceforge.net link_id: drmccoy
Who will your mentors be? Please include Google Account information.
Max Horn, Google Account: max AT quendi.de link_id: fingolfin
Kostas Nakos, Google Account: knakos AT gmail.com link_id: jubanka
Eugene Sandulenko, Google Account: sev.mail AT gmail.com link_id: sev
Johannes Schickel, Google Account: lordhoto AT gmail.com link_id: lordhoto
Joost Peters, Google Account: joostp AT 7fc1.org link_id: joostp
Sven Hesse, Google Account: drmccoy AR users.sourceforge.net link_id: drmccoy
John Willis, Google Account: John.Willis AT Distant-Earth.com link_id: djwillis
What criteria did you use to select these individuals as mentors? Please be as specific as possible.
We want our mentors to have the following qualities:
- Be able to commit to participating for the entire duration of the program. They first and foremost have to be available to their students and the mentor team.
- Have a considerable track record hacking inside ScummVM. They can help the students more effectively and in an immediate fashion this way.
- Have the patience and skills to explain to their respective students on how to tackle their tasks. Also, to be able to help the students out in sticky situations.
- Have a clear vision on how a task should proceed, both in broad strokes as well as in the technical details level. Allowing of course some freedom of movement to the students, where this is applicable.
For this year, and this holds for our previous participations too, our mentors have volunteered to work with GSoC. This means that they primarily want to be involved in the program and that they are not dragged in to participate. Moreover, they have all been contributors to ScummVM for a long time. They feel comfortable around the ScummVM code and can guide students to perform their tasks. The majority of the mentors have also participated in past ScummVM GSoCs so they know their way around the procedures and have also refined their mentoring style. Some of them are/have been part of the academia, guiding real students. They have seen the student mentalité in-action and have experience helping people along. We are drawing the best available from our pool of developers to mentor GSoC students this year.
What is your plan for dealing with disappearing students?
We know that the students can do that. We learned this the hard way the first time 'round the GSoC ride :-) The measures we set in place last year effectively erradicated this problem.
As for this year, we will firstly enforce certain rules at the program start. That is, we will clearly explain that this work should be considered as full-time, and that in any doubt we will not let the student enter the program.
Second, we are going to introduce a new policy, that is, the students have to provide status to their mentors on a bi-daily basis at most. If a student disappears for more than 3 days without notifying of his/her mentor, the student will fail off the project. The students will be immediately aware of this during their applications. We have positively identified that frequent and meaningful communication goes a long way in keeping the students engaged and interested.
Of course, comprehensive timelines will be required as usual, and we will accept only those of the students which will set realistic goals, thus minimizing the risk of getting intimidated. This factor too frequently leads to the student disappearing.
During the program we will make sure that the students will feel comfortable with their tasks. Our mentors already have experience with that. Moreover, in difficult situations in the past there was not a single person feeling responsible for a particular student, but rather the whole project was trying to help when needed. These reflexes on behalf of the mentor group but also on behalf of the active team members of ScummVM have proven to be a pretty good "tool", especially last year, and we are going to do our best this year too.
What is your plan for dealing with disappearing mentors?
For the mentors, the risk is relatively low; our past experiences verify absolutely this claim. Two of our mentors are project leads and are reachable virtually 24/7 (in case of emergencies). We all have exchanged sufficient contact information (including cell phone numbers etc.) to be able to discover our whereabouts. Should something really bad happen which precludes a mentor from fulfilling his duties (including personal reasons), we will attempt to shift students to new mentors among the existing mentors, or drawn from our backup pool of mentors. This will depend on the number of students we have to mentor. The students will not be left hanging for any reason at all.
What steps will you take to encourage students to interact with your project's community before, during and after the program?
In order to help the students familiarize themselves with the project, we have created several pieces of documentation for them. In particular, we have an exhaustive developer central where we describe the all-important internals of ScummVM. This is valuable as a quick reference as well as during the initial explorations of the codebase.
Also the development team actively uses the forums, IRC, Wiki and the development mailing list during the entire project development. We consider out students to be special, but developers nonetheless. Each developer including our students is encouraged to take part in discussions, whatever the means these discussions occur. As a pragmatic fact, on IRC any student will be able to get support literally 24/7, as our developers are scattered all over the globe.
Also not only the mentors but also the entire development team is encourage to communicate with the students. The students are marked with special flag on our IRC channel, so everyone know who they are. Also we require the students to write introductory letters to our development list, so everyone will have impression about them, their skills and their assigned task of course.
What will you do to ensure that your accepted students stick with the project after GSoC concludes?
We already have a handful of students as our team members from the past two years. Our project brings both fun and challenge and suits folks who like such stuff. This is one of the prime forces which drive Open Source, and we are proud to be one of the biggest OSS projects.
We hope that this will be valued by our students and that if their time permits, they will continue to support the project and continue pushing it forward. We always greet new developers with a warm welcome and strive to ensure nobody feels abandoned :).