Difference between revisions of "SummerOfCodeProposal corn"

From The Battle for Wesnoth Wiki
(Patches)
(Timeline)
Line 106: Line 106:
  
 
==== Timeline ====
 
==== Timeline ====
* '''March 27 - March 31'''
+
* '''April 4th - April 10th'''
** Replicate the existing functionality of stats.pl with a homemade solution written in python + rrdtool. This will form the basis for future work.
+
** Replicate the existing functionality of stats.pl with a homemade solution written in python + a graphing library. The library I have in mind is RRDTool but the google graphing API and matplotlib are both possible choices. This will form the basis for future work.
 
** Talk to my (potential) mentor about the improvements possible to the project. I plan on creating something akin to a report generator, where you can specify fields to compare and graph and it will generate a page for you.  
 
** Talk to my (potential) mentor about the improvements possible to the project. I plan on creating something akin to a report generator, where you can specify fields to compare and graph and it will generate a page for you.  
** Get end user suggestions for improvements and feature requests.
+
* April 10th - April 30th
* April 1st - ?
+
** Create the fully functional stats website, where users will select campaigns and have filters (operating system, difficulty level) to generate graphs. Performance of the website won't be considered yet, so all the graphs will be generated on demand from the huge statistics data set.
** TBD
+
** Implement multiplayer statistics reporting. Change the upload source code (currently upload_logs.cpp) so that statistics on multiplayer games such as play time, average game size, and most played race are reported.
 +
* May 1st - May 15th
 +
** Add support for the newly reported multiplayer stats to the website.
 +
** Optimize the stats webpage. This may mean generating graphs in a cronjob nightly and then displaying them statically during the day, or it may mean that the most accessed stats are put into a smaller SQL table for faster parsing.
 +
* May 15th - June 5th
 +
** Make the website spiffy. The website should be themed in the same style as the rest of the Wesnoth website. Add CSS to the site and make it look like it wasn't made in 1997.
 +
** Allow developers to login in to the site and 'subscribe' to various kinds of reports. This will let campaign developers follow the stats of their campaign and do regression testing as they role out new changes and see how it affects gameplay. They will get nightly or weekly emails that will contain links to the reports they subscribed to.
 +
* June 5th - June 30th
  
 
==== Technical Details ====
 
==== Technical Details ====

Revision as of 09:37, 3 April 2009

Introduction

Hi, I am Greg Shikhman and I'd like to work on and improving stats.wesnoth.org.

Preferred Email

cornmander@cornmander.com


Nicknames

  • IRC - corn
  • Wesnoth Forums - cornmander

Why I want to participate

Working on Wesnoth for GSoC would be my first experience working on an large and public open source project. GSoC is a structured way (similar to an internship at a company) for me to get into the development of this project.

Studies

I am a high school senior who will be attending an accredited university this fall. This section will be more definite when I decide where I want to go :)

Patches

https://gna.org/patch/?1153 https://gna.org/patch/?1149

1 or 2 more patches to come related to bug #13094.

Experience

Last summer I had a full time summer internship at Morgan Stanley, the financial company. My primary accomplishment was the creation and maintenance of a statistics interface for their networking hardware. I created a system of scripts that handled statistics acquisition, and I wrote a java servlet that showed these statistics, with nice looking graphs via RRDTool. The tool was put into production shortly after my intership ended.

A smaller task that I also handled was the creation of a real-time packet rewrite/editing script on the network hardware, to support and upgrade legacy software.

Reference is available on request.

As part of a class, I have also created a real time rasterizer, with model loading, animation, and texture mapping. A scripting language for inputting animation sequences was also developed as part of the project. Source code, along with instructions for compiling are available at http://cornmander.com/dragonballx.tar.gz .

I also run my own server at http://cornmander.com . It is a colocated Gentoo Linux box. I have working sysadmin experience.

Programs / Software

  • python
  • LaTeX
  • GNU make
  • gdb
  • vi(m)
  • linux
  • subversion
  • gcc
  • grep, sed, awk, other standard shell hacker tools :)
  • bison, flex
  • libraries: opengl, sdl, opencv
  • languages: c, python, php, java, latex, html, tcl

Team Environment Experience

My rasterizer was created as part of a team project. I managed and handed out tasks to my teammates, and tried to keep them updating their TODOs.

My internship at Morgan Stanley was done under the supervision of my manager. Although I was working on my project alone, I took suggestions and feature requests from the end users.


Open Source

Involvement

I've reported bugs to the Gentoo Linux project, and I am credited for reporting a minor security bug: http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2007-08/msg00364.html .

I follow the development of ioquake and mplayer, but I haven't had a chance to contribute to either project. I may try to enter the ffmpeg (an integral part of mplayer) GSoC process next year.

Gaming Experience

I have been a PC gamer since late elementary school. I am a hardcore gamer primarily interested in FPS games - this is what sparked my interest in working on cutting edge graphics tech like rasterization. My current addiction is TF2. I also appreciate RPG games. I played Wesnoth for a few weeks with my friends after the Wesnoth 1.5 release, and I will start playing again now.

What type of Gamer

I used to play video games for a few hours per week, but school has cut it down to 2-4 per week. Nevertheless, I'd categorise myself as a hardcore gamer.

Preferred Opponents

I like playing versus friends, or at the very least versus people. AI isn't good enough to adapt and get better as you play, and there is always the joy of rubbing in your victory to their face.

Story or Gameplay?

Gameplay is king. I am used to playing multiplayer games, and the game mechanics are much more important than plot are backstory. Nevertheless, I do enjoy reading a good story or being a part of it in a single player campaign. Co-op support is an interesting idea.

Have I played Wesnoth

I played 1.5 multiplayer for a few weeks, and played through the Heir to the Throne campaign.

Communications

English

I am a native english speaker, and I am extremely fluent in Russian as well, although I can't read or write it.

Player Interaction

I ignore trolls, and I haven't been involved in player communities for a while. I lurk on forums, but I talk on IRC.

Constructive Advice

I take criticism well, but sometimes I am impatient when I don't see the point to a suggestion/requirement.

Receive Advice?

My priority is getting the job done. I don't take criticism personally.

Sorting out Criticism

The people I work with are typically more experienced and smarter than I am. Although I have the urge to question a suggestion, I'll never dismiss a suggestion without giving it some consideration.

Project

Which Project

I want to improve the stats server.

Why

I have existing experience with displaying stats, and the freedom of tools and programming languages should make it easy for me to hit the ground running.

Timeline

  • April 4th - April 10th
    • Replicate the existing functionality of stats.pl with a homemade solution written in python + a graphing library. The library I have in mind is RRDTool but the google graphing API and matplotlib are both possible choices. This will form the basis for future work.
    • Talk to my (potential) mentor about the improvements possible to the project. I plan on creating something akin to a report generator, where you can specify fields to compare and graph and it will generate a page for you.
  • April 10th - April 30th
    • Create the fully functional stats website, where users will select campaigns and have filters (operating system, difficulty level) to generate graphs. Performance of the website won't be considered yet, so all the graphs will be generated on demand from the huge statistics data set.
    • Implement multiplayer statistics reporting. Change the upload source code (currently upload_logs.cpp) so that statistics on multiplayer games such as play time, average game size, and most played race are reported.
  • May 1st - May 15th
    • Add support for the newly reported multiplayer stats to the website.
    • Optimize the stats webpage. This may mean generating graphs in a cronjob nightly and then displaying them statically during the day, or it may mean that the most accessed stats are put into a smaller SQL table for faster parsing.
  • May 15th - June 5th
    • Make the website spiffy. The website should be themed in the same style as the rest of the Wesnoth website. Add CSS to the site and make it look like it wasn't made in 1997.
    • Allow developers to login in to the site and 'subscribe' to various kinds of reports. This will let campaign developers follow the stats of their campaign and do regression testing as they role out new changes and see how it affects gameplay. They will get nightly or weekly emails that will contain links to the reports they subscribed to.
  • June 5th - June 30th

Technical Details

  • The project will be split up into two seperate chunks: data acquisition and data presentation. Acquisition will be the parsing/representation of the upload logs into a useful format for my program. Presentation is the combination of report generation and the html interface (implemented via a template language).

The internal representation of data will probably be a MySQL database. This will get more specific once detailed project outlines are created and performance considerations are done.

What I expect to get from this Project

I want to have done a substantial open source contribution. This project will be my first coordinated team effort and hopefully help me get started on other OSS projects. It will also expose me to the process of maintaining a large, polished product.

Would I stay with Wesnoth after GSoC?

I would maintain my code for Wesnoth. I think that I will continue to contribute code in unrelated areas to the project after I am done the project as well.

Practical considerations

Familiarity with Tools

  • Subversion - I know how to use svn, and I run it on my own server as well.
  • C++ - I know C and Java very well, but I don't know C++. I think I can learn it over the course of a week or two, however.
  • Python - I know python very well.
  • Build Environments - My development environment is linux. However, I have used MSVS before.

Development Tools

I use vi, xterm, svn, and GDB. I dislike working in IDEs because of the overhead and effort of getting your project set up properly in them.

Fluent Programming Languages

  • Java
  • C
  • Python
  • PHP

I also know LaTeX and HTML, markup languages.

Fluent Spoken Languages

I am a native english speaker. I also am fluent in Russian, but can't read or write it.

Hours of Availability

Until the end of June, I am available from 6 PM EST to 3 AM EST. During the summer, depending on whether or not I get a job, I will either be available during the entire day or still only from 6 PM EST to 3 AM EST. I expect to put in full work days on this project.

Phone / Internet Phone Conversations

I would prefer written electronic communication like IRC or email, but I am OK with talking over the phone. It's a bit frustrating to explain your code over the phone, however.