[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