SummerOfCodeProposal csaunders
Contents
Introduction
Hello, I am Christopher Saunders and I would be interested in working on the Statistics server for Wesnoth. I hope the information I have provided below is sufficient, if it is not please contact me either through email or on the IRC and I can try my best to answer any questions.
Preferred Email
c.saunders322 _at_ gmail _dot_ com
Nicknames
- IRC - csaunders
- Wesnoth Forums - csaunders
Why I want to participate
I've been trying to get involved in Open Source for quite a while. This is my second year trying to get involved. Last year I was a full-time student in the summer and it was in my best interest not to get involved. I am also interested in getting involved because I feel that the mentorship helps make getting involved less imposing to students and those new to the community.
Studies
I am currently a 4th year Computer Science student at the University of Ottawa in Ottawa, Ontario, Canada
Patches
None to date
Experience
Programs / Software
The following is a list of programs and software that I have worked with on previous projects either through school or while on work term
- Java
- Lucene - Indexing software
- LIRE - Tool for Indexing Images
- Apache Tomcat
- Apache Xerces
- C/C++
- OpenGL API
- ImageMagick / Magick++ for texture texture loading
- Basic work with pipes and pthreads
- I've begun dabbling with the Ogre3D API
- Ruby
- Ruby on Rails - I'm just beginning with it though
- Ferret - Indexing Software
- REXML
Team Environment Experience
While on work term I worked in an Agile software development environment in a relatively small company (approx 16 developers). I was working in a 3 man team for data interpretation from 3rd parties. The data I was working with was in CSV and XML format and I was required to turn it into a standardized form for our application to use. Through that term I was required to use tools like cut quite extensively.
Also in school I have worked in teams from 2 to 4 people for various projects in various roles. These ranged from documentation and requirement analysis to software development.
Previous Summer of Code Experience
As stated earlier I did try to get involved previously. The project in question was Apache Derby, and due to school I was not chosen as a GSoC participant.
Open Source
Involvement
Although I am not involved in development of any open source projects, I have been quite active in making Open Source a viable option to students on my campus. This has included informing our first year students (101ers) of the alternatives to such things as Internet Explorer and MS Office.
Along with my student association we have informed students in both Computer Science (and related fields) as well as other students of how Open Source is possible.
Gaming Experience
I am a gamer and have been playing video games since I was rather young. Most of my gaming has been done on consoles, and I only recently got into online gaming (around 2005).
What type of Gamer
I wouldn't say that I am a hardcore gamer. I appreciate games, and can get quite involved in them but I prefer short sittings (1 - 1.5hrs).
Game Types
Most of my interest is in turn-based strategy games such as Final Fantasy Tactics, Civilization, Valkyria Chronicles, etc. I also consider myself a somewhat retro gamer, considering my appreciation for most games on the Super Nintendo.
The fact that Westnoth has that retro-like look is what drew me to it initially.
I also have interests in your typical games types like Shooters and RTSs'
Preferred Opponents
Due to how I am rather new to online gaming, I lack an effective strategy for human players. I prefer to play against AI, though will play multi-player games with friends (usually RTS). While playing with friends, I use this time to help develop a better strategy for gaming.
FPS is an exception, I just need to work on my twitch skills :(
Story or Gameplay?
It would have to be a combination of both. A game with an awesome story but horrible gameplay typically isn't of interest to me because of the poor mechanics, thus ruining the immersion.
On the other hand, a game with amazing gameplay and no story typically leaves one feeling with no sense of direction or goal.
I feel that there is a balance that needs to be met in a game that makes it both immersive and provides quality game mechanics to keep that immersion existent.
Have I played Wesnoth
I have played it from time to time. I have not spent an extensive amount of time playing the game, but while playing it I found it to be quite enjoyable.
Communications
English
I am completely fluent in English.
Player Interaction
I tend to get along with players rather well. I usually don't waste my time with players who are disrespectful to people in a game.
I have yet to deal with gamer feedback on a game I have been working on.
Constructive Advice
I try to do my best to provide the best advice possible to people.
Receive Advice?
I try not to take any criticism personally. I understand that most criticism has to do with what is being done in the code and not at me personally.
Sorting out Criticism
I try my best to weed out useless criticism that may lead to dead ends.
Project
Which Project
The project I chose was implementing a Stats Server. I would like to implement a much more user friendly version that is both easy to use and easy to add more features to.
Why
I am interested in dealing with data, and I have on previous occasions done web app development. Sirp talked to me on the IRC and recommended this task to me. After looking at the current implementation and talking to Sirp, I decided that this is indeed a project I would be interested in working on.
Timeline
- April 15 - May 23
- Become familiar with the data that is stored in the database and what it looks like
- Analyze the Perl script that Sirp sent me as an example of how things could possibly look like
- Set up a basic webapp on my dev machine - most likely to be the Rails framework but open to other ideas - this is primarily to become familiar with the web framework I shall be using for the project.
- Establish a staging server which has either duplicate data from the current implementation or with a large enough subset to be usable for my own purposes
- Set up a basic framework for extracting the data from the database and displaying it on the page
- Begin drawing up plans for how the new system will be implemented. This will probably be done in IRC with Sirp and others to help in determining exact requirements as to what needs to be implemented as well as prioritization.
- Note: I have exams throughout the month of April, so there is no definite way I can get everything done perfectly, but I will try my best given the circumstances.
- May 23 - June 30
- Continued Definition of Features and their Implementation
- I want to spend this time implementing as many features that will be required.
- This is in no way intended to be fully feature complete but should much of the required functionality in place.
- Bugs will most likely still exist by the end of this iteration.
- Continued Definition of Features and their Implementation
- July 1 - Canada Day
- July 2 - July 30
- Re-evaluation of requirements
- Addition of more requirements
- Analysis of current bugs - which need to be fixed now, ones that can wait.
- Implementing new features & fixing major bugs
- Aug 1 - Aug 10
- Finalization of any remaining features
- Formalization of Documentation
- Bug Scrubs & Bug Prioritization
- Major Bug Fixes
Technical Details
- I am going to attempt to implement the new Stats Tracker using Rails with MySQL or Python with MySQL (tbd - I am all for learning either).
- The main priorities are cleanliness of the UI, ease of use, and hopefully a speed increase.
- The system will implement an MVC framework and will contain as much room as possible to allow for modifications and additions to allow for future developers to easily add more functionality.
What I expect to get from this Project
My main goal of this project is to become more familiar with the framework I work with as well as the language. Along with improving my technical skills, I would also like to become familiar with the Open Source community and hopefully be an active developer in it.
Would I stay with Wesnoth after GSoC?
I would try to maintain at least a presence with the Wesnoth community. I am currently trying to see if I could possibly use the Wesnoth project as my Computer Science graduation project if it is eligible. That said, if I have enough time to spare in between school and work I would most definitely continue to work with the Wesnoth community.
Practical considerations
Familiarity with Tools
- Subversion - I have worked with both svn and cvs for school projects or while working on a workterm
- C++ - I have worked with C++ for a few course projects, one of those being a Graphics project
- Python - I've dabbled with python, but nothing too intense.
- Build Environments - I've worked with make quite a bit since I use a Linux computer and often times the repositories do not have the most up to date software. I have also used scons, but only for compiling the trunk code of Wesnoth.
Development Tools
I've typically used an IDE for my software development. Most of my Java work has been done in Eclipse, but I am also relatively familiar with NetBeans.
Recently I've been using XCode for some software development (in school) as well as working with Visual Studio 2005 for my graphics project.
Fluent Programming Languages
Most of my experience has been with Java, and I am starting to get the hang of C/C++ again. Other languages I would say that I am competent in are:
- Ruby
- Perl
Fluent Spoken Languages
I am completely fluent in English. I have an intermediate understanding of French (mainly vocal).
Hours of Availability
I will be working during normal hours (UTC 1400 - 2300) during the week, and should be available from (UTC 0100 - UTC 0500). On weekends I can make myself available from UTC 1400 - UTC 0500.
Phone / Internet Phone Conversations
I have no problem having to talk to a mentor over the phone or using Skype if for some reason the IRC or email were to fail. My preference would be to use Skype (or an equivalent service).