Summer of Code/Application/2008

From ScummVM :: Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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/2007
Organization administrator: fingolfin (max AT quendi.de)
Backup administrator: sev (sev.mail AT gmail.com)
Project License: GPL
Ideas page: OpenTasks
IRC channel: #scummvm on irc.freenode.net
Development mailing list: https://lists.sourceforge.net/lists/listinfo/scummvm-devel
Mentors:

Application organized according to program FAQ

Describe your organization.

ScummVM is a collection of Virtual Machines which allow a variety of commercially available graphical point-and-click adventure games to run on modern hardware, often with improved features. 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 reimplementation of each supported game engine in a structured fashion using the C++ language. The development team works by either 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 works on popular game consoles (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 35 currently active developers (out of an all-time pool of over 60), who work together on a codebase almost 650,000 lines of code. In addition we have 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 2008? What do you hope to gain by participating?

Drawing from our pleasant experience during our participation in GSoC '07 we feel compelled to apply again this year. Our goals for the gains to be attained through GSoC remain almost the same.

Firstly, we hope to gain some new active developers. While we already have several very active contributors, these people are already mostly busy in specific subprojects and tasks. New people mean new ideas, new energy, and new ways of thinking. Therefore, a longer lasting engagement of our student contributors would be our highest hope.

Furthermore, we have a list of self-contained tasks on specific aspects of ScummVM which have not been tackled yet. These tasks will improve the functionality of ScummVM, making them valuable to the ScummVM community. GSoC is a very good opportunity to have these implemented through the incentives the program offers. These tasks also present a good point of entry for new developers to ease themselves in the extensive ScummVM codebase.

Also, Leslie owes Kostas a few smokes from last year; we hope to have a chance to evem this out too. delete this after having your laugh :-)

Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.

<Comment: This is a make or break question: --Jubanka 21:48, 4 March 2008 (CET)>

We have participated in the GSoC program last year, in 2007. We had an exciting time during the prep period, had some very good students and some very bad students during the main stretch, and we got some significant results in the end.

We had 7 students and 3 mentors in total. One of our students has become an active, regular developer in the team (Buddha) after having his code integrated in the codebase. Two students' code contributions have also been integrated in the mainline (FSapi & toolsgui). Two more (mixer & decompiler) 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.

For us, every slot we are assigned is valuable. It is easy enough to flunk students if their result are not good enough but this hinders the impact we want GSoC to have on ScummVM. Hence, a common belief shared by the participating mentors last year is that we should engage the students early on, during the application period, to determine their commitment and eagerness to follow through their proposals.

++ implement stricter reporting routines

Kill all stuff from parentheses, only in for our reference

If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?

N/A

Who will your organization administrator be? Please include Google Account information.

<FIXME>


What license(s) does your project use?

<FIXME>


What is the URL for your ideas page?

<FIXME>


What is the main development mailing list or forum for your organization?

<FIXME>


What is the main IRC channel for your organization?

<FIXME>


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.

<FIXME>


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

Eugene, Johannes, Kostas, Max?

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

Our mentors were selected as volunteers from the development team who are already intimately familiar with the internals of ScummVM, our coding conventions etc.. All three are familiar with guiding people (in particular, students) through project work effectively (in fact, two of them happen to be lead developers of ScummVM). As such, we are convinced that we are able to guide interested students through the Summer of Code to the net benefit of all involved parties.


What is your plan for dealing with disappearing students?

We hope that nobody will disappear, but we plan to take a proactive approach, i.e., we will try to minimize the risk of a loss of communication, but if it happens, we are prepared to deal with it, too. As for the students, for starters we plan to exchange as much communication data as possible (cell phone numbers, postal addresses etc.). Through a friendly atmosphere we hope to minimize the risk of any student being "afraid" to report problems they might have etc.. On the other hand, we will make it clear that we expect dedicated work of the students and that unannounced/unjustified disappearances will draw consequences, like negative reports or even the failure of the whole project. Still, establishing a positive and friendly connection between student and mentor will be the cornerstone of our efforts in this regard. If the student trusts the mentor and tells him about his fear, uncertainties and problems early on, they can try to find a solution together, possibly with the help of the rest of the team. Also, integrating the students into our community should reduce the likelihood of disappearances further (see also the next section).

A common cause (we believe, based on our own experiences as students *g*) is a lack of structure in the assigned work, resp. an inability of the student to make real progress. To avoid this, we will request that students come up with a (realistic) project plan / schedule. The mentors will watch the progress with the students and discuss it with them regularly (at least weekly). We hope to detect potential problems early on this way, thus being able to help the students get around them, to the benefit of all.

If all fails, though, and a student really vanishes completely, we will have to deal with the consequences, just like with regular projects in a company. Projects *can* fail, after all, no matter how hard you try to avoid it.


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?

<FIXME>