Summer of Code/Application/2009

From ScummVM :: Wiki
Jump to navigation Jump to search

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.

Project: ScummVM
Participation in prior SoCs: Yes
Applications for prior SoCs: Summer_of_Code/Application/2008, Summer_of_Code/Application/2007
Organization administrator: Eugene Sandulenko (sev.mail AT link_id: sev
Backup administrator: DrMcCoy (gmail addr)? link_id: ???
Project License: GPL
Ideas page: OpenTasks
IRC channel: #scummvm on
Development mailing list:
  • Max Horn, Google Account: max AT link_id: ???
  • Kostas Nakos, Google Account: knakos AT link_id: ???
  • Eugene Sandulenko, Google Account: sev.mail AT link_id: sev
  • Johannes Schickel, Google Account: lordhoto AT link_id: ???
  • Joost Peters, Google Account: joostp AT link_id: joostp
  • Sven Hesse, Google Account: ??? AT link_id: ???
  • John Willis, Google Account: John.Willis AR Distant-Earth.Com link_id: ???

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 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 really looking forward to great outcome 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 two previous years, in 2007 and 2008.

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.

Ultimately, aside the valuable contributions the majority of our students achieved, two students failed. In their case, our mentors agree that there wasn't anything more we could do. Their involvement was minimal from the start and that's what we must identify early on, at the application stage.

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 of 5. What was even more great is that 4 of the students still continue to contribute to the project.

As in 2007, one of the students was a complete failure. Although his mentor helped him so much, up to writing code with him, he still vanished off the earth and never finished his work.

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

What is the main IRC channel for your organization?

#scummvm at

Does your organization have an application template you would like to see students use? If so, please provide it now.

The following was adapted from the FreeBSD Proposal Guidelines.

  • Name
  • Email
  • 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: ??? AT link_id: ???

Who will your mentors be? Please include Google Account information.

Max Horn, Google Account: max AT link_id: ???

Kostas Nakos, Google Account: knakos AT link_id: ???

Eugene Sandulenko, Google Account: sev.mail AT link_id: sev

Johannes Schickel, Google Account: lordhoto AT link_id: ???

Joost Peters, Google Account: joostp AT link_id: joostp

Sven Hesse, Google Account: ??? AT link_id: ???

John Willis, Google Account: John.Willis AR Distant-Earth.Com link_id: ???

What criteria did you use to select these individuals as mentors? Please be as specific as possible.

The mentors have volunteered to work with GSoC. 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. They already did it for us in the past. And last year we improved it much more.

First, we will 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 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.

Of course, comprehensive timelines will be required as usual, and we will accept only those students who will set realistic goals, thus minimizing risk of getting scared and thus, disappear.

During the program we will make sure that the students will feel themselves like home. Our mentors already have experience with that and in the past not only single person felt responsible for particular student, but whole project was trying to help when needed. This proved pretty good 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; two 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 etc. Should something really bad happen (like somebody ending up in hospital and hence unable to work, a natural disaster, etc.), 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.

What steps will you take to encourage students to interact with your project's community before, during and after the program?

Our community uses forums, IRC, a Wiki and our mailing list for a vivid exchange of thoughts all the time. We will urge the students to participate in all of them; especially on IRC can they directly talk to many nice and helpful team and community members. The mentors will introduce the students to the rest of the team (making sure everybody knows who the students are). There are people active in the IRC channel virtually 24/7, thanks to the international nature of the project.

We also expect the students to talk to non-mentor team members on a regular basis about parts of ScummVM for which these team members are experts (if these parts happen to be relevant for the student's project). To achieve that, the mentors will specifically introduce them to each other, and will try to encourage them to work together.

What will you do to ensure that your accepted students stick with the project after GSoC concludes?

Our experiences last year show that guys who are genuinely interested in the project will stick around. And that's really the drive for open source: to be interested in the project one is participating. We will try to select students who best match this criterion. Other than that, we run a cool team with loose coding deadlines and a cheerful IRC channel and mailing list, so prospective team members should feel at home soon. We always welcome new contributions with pleasure. Spending some time before someone gets promoted to normal team membership is how we've always done it; GSoC gives us the chance to implement this again, with added benefits too :-)