[Scummvm-devel] Google summer of code, a possible application

Christiaan Baaij christiaan.baaij at gmail.com
Wed Mar 21 00:50:13 CET 2007


Hi everyone of the ScummVM team,

My name is Christiaan Baaij and I am currently a bachelor computer 
science student at the University of Twente, The Netherlands. I'm 
writing this email to introduce myself to the ScummVM community because 
I want to apply for the Google Summer of Code 2007. I already chatted 
with a few of you on IRC (my IRC nick is Darchon). Also I want to 
present my idea(s) for the "ScummEX Revival" task I hope to work on. I 
want apologize in advance for it's length, but I thought it might be 
helpful to be a bit verbose to give you a chance to get an impression of 
me (if that's possible through email, IRC might be better). I've split 
the email over several sections for your convenience (hopefully).

1) Current stage of my education
Currently I'm in the final stages of getting my bachelors degree in 
Computer Science. I have to finish one course during the next few weeks 
of which I will have an exam in 3 weeks. This year I have also already 
started following some courses for my masters degree Embedded Systems.

2) How I got interested in Google SoC
I learned about Google Summer of Code from an housemate who's currently 
developing for the Inkscape project. He tried to recruit me to write an 
application to work on Inkscape (surprise, surprise), but I decided to 
check out google's website first. There I saw many more interesting 
open-source projects were participating. I was fascinated by the 
concept, but I was unsure about applying as I saw the mid-term 
evaluations of the project were already 1 week after my final exam week 
of this academic year (I have two exams during a 2-week period starting 
at June 17th and ending June 29th). So I was quite unsure if I would be 
the right individual for such a project.

However, the idea did stay in the back of my mind, and because I got 
more and more excited about the project's concept, I checked the 
scheduled deadlines, thought it over, and decided I really do want to 
work on a project this summer. I believe that I have actually do have a 
very good, and realistic, chance to successfully work on it.

I do however think, that I should of course, start working on working 
out designs, and probably start coding before the 'official' project 
start at the 28th of May. But I'm so excited about it, I wouldn't even 
know - other obligations permitting - if I could wait that long to work 
on it.

3) Why ScummVM?
Having decided to wholeheartedly about getting involved, I again browsed 
the list of mentoring organizations and was delightedly surprised that 
ScummVM was among them. Last summer, when the weather was less than 
pretty, and I made my first experiences with ScummVM. I wanted to play 
Day of the Tentacle again, something which I didn't play for 10 years or 
so. I discovered that WinXP wasn't really working with me (especially 
running it windowed), so whilst browsing for a DOSBox type solution I 
stumbled apon ScummVM. Playing DOT in windowed mode worked straight out 
of the box and me me very happy :)

Now that I saw Scumm on the list, thinking back about those rainy days 
during my summer holiday, i really thought about making a contribution 
to the project. The project idea to revive ScummEX truly appeals to me. 
Writing a complete application during the summer holiday is something I 
will really enjoy. And in the framework of GSoC it allows me to spend my 
summer holiday in a more productive and enjoyable fashion than working 
at the local supermarket again.

4) My experience in programming and open source development
To be honest, most programming project I have worked on were small and 
large course projects, but never have i done a 'big' programming project 
in my own time. That's why reviving ScummEX, as a complete 'product' 
appeals to me so much. A chance to finally work on programming project 
outside of course projects.

I figure a noteworthy project I have worked on is 'Commercial break' 
detection in TV-recording, done with VideoLan Client (VLC). [1]
Also, during a course project, I participated in developing a compiler 
for a small BASIC like language that compiled to JVM-bytecode. [2] 
(Unfortunately the documentation is in dutch)

Currently I'm working on a web-based application that keeps track of the 
investments and subscriptions of my house mates. Sadly, it hasn't shown 
much progress these past few weeks as I'm also in the board that runs 
the University Basketball (and that my girlfriend claims most of my 
weekend).

As far as my general programming knowledge is concerned, I am proficient 
in C, C++, Java, Ruby, PHP and even such things as Promela (for those of 
you who have ever done algorithm verification in spin). I have a good 
grasp on OO-design, when it's handy, and when it's not ;). I do not have 
experience working in an open-source development group, but thanks to 
many many course projects, used to working in groups ranging from 2 - 10 
people.

5) Ideas for the "ScummEX Revival" GSoC project
The biggest problem I'm facing right now is that there's little time 
until the application submission deadline and I haven't had the time to 
develop really great ideas yet. I'm currently working through the 
original ScummEX code to get a good feel as to how the program does 
things currently. Of course, i did see the requested feature list and 
read the TODO on SVN.

Currently I'm thinking of rewriting the entire application using a 
Model-View-Controller approach (which has been preached to me many times 
over at university, but seems really applicable for ScummEX).

Basically, the model(s) would encapsulate the different recourses. Using 
that to represent directory structures as trees for example. I feel that 
encapsulating  the recourses this way, using a base model class, would 
allow adding support for new recources 'quite' easily by just building 
apon that base class.

Another great thing about the Model-View-Controller concept is the 
seperation of views from recourse internals. The view just 
draws/plays/etc. it gets from the model and shouldn't need to worry if 
an image is scaled or not.

Then there's the controller, this confines the user interaction to one 
place and keeps both the view and model simple. If a model is scalable, 
it just provides an interface to the controller and the controller than 
handles all the quirks from the user.

I feel this basic design allows for enough modularity to at first 
incrementally add support for the different Scumm engine versions and 
later on hopefully also the other engines that ScummVM supports.

I figure it's all rather vague right now, but the model-view-controller 
concept is tested and proven and my gut tells me it would work for ScummEX.

6) Open issues
Currently I'm a bit occupied with course work and my duties on the Uni 
Basketball board, but I will try my best to further work out my ideas.
I am also wondering what the potential mentor has to say about me having 
exams during the start of the project and therefor being less active 
during that project. If it would pose much problems or that it is even 
recommended not to apply at all. As mentioned before, if accepted, I do 
intend to start before the official 'coding start' at the 28th of May. 
Also, if there are any proposals or questions regarding the maybe rather 
vague approach written above, please do not hesitate to contact me. I am 
very much looking forward to hearing your comments, thoughts and opinions.

Thank you very much for struggling through this extremely (hopefully not 
too extreme ;)) long email!

Kind regards,

Christiaan






More information about the Scummvm-devel mailing list