SummerOfCodeProposal Ryochan7

From The Battle for Wesnoth Wiki

Personal Information/Introduction

Name: Travis Nickles

Age: 25

Location: Normal, IL

University Enrolled: Illinois State University

Personal website: http://ryochan7.webfactional.com

Forum/IRC: Ryochan7/ryochan7

Questionaire

Basics

1.1) Write a small introduction to yourself.

My name is Travis Nickles and I am 25 years old. I am majoring in Computer Science at Illinois State University in Normal, IL; I also have a minor in East Asian Studies with an emphasis on Japanese language study.

1.2) State your preferred email address.

ryoohki7 AT yahoo.com

1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?

Ryochan7

1.4) Why do you want to participate in summer of code?

I want to participate in summer of code because I have wanted the experience of being a part of an open source project for a while. I would be spending most of my summer coding my own projects anyway so it would be better to use my time during the summer to give back to the open source community that I have greatly benefited from.

1.5) What are you studying, subject, level and school?

Computer Science, end of 3rd year, Illinois State University

1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our S­­V­­N (during the evaluation period or earlier) please state so.

None

Experience

2.1) What programs/software have you worked on before?

I have mostly worked on my own programs that were written in Python as a way to learn the language. My biggest currently supported program is YouTubed-2x; it is a program that downloads videos from various flash sites and transcodes them via ffmpeg into GP2X-compatible video files. Other programs that I have worked on in some capacity are PSP Video Converter (submitted some patches) and the PlayStation Portable port of Doom (maintained the main branch for a few months, added wad selector, button configuration menu, added overclocking support)

YouTubed-2x source: http://ryochan7.webfactional.com/files/projects/youtubed-2x_archive_2009-03-21.tar.gz

2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)

No. I have always developed software on my own. I have always wanted to experience being a part of a group project.

2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?

I have not previously participated in Google Summer of Code.

2.4) Open Source

2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.

No

2.5) Gaming experience - Are you a gamer?

Yes

2.5.1) What type of gamer are you?

I consider myself a casual gamer nowadays because I don't have much time to play games.

2.5.2) What type of games?

I mostly play FPS's and JRPGs.

2.5.3) What type of opponents do you prefer?

I prefer to face a human opponent.

2.5.4) Are you more interested in story or gameplay?

I am generally more interested in story than gameplay. My love for the Xenosaga series is a great example of that. I am more willing to put up with a game that might not have exciting gameplay if it has a great story that keeps me interested in the game world. If a game has only great gameplay and no story, I am likely to get bored because the game will seem too repetetive and I won't think that my actions actually matter.

2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.

I used to play the game a lot for over two months about a couple of years ago. I have continued to follow the project and recommend the game to friends but I have not played Wesnoth in a long time.

Communication skills

3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.

I am a native speaker.

3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.

I am not particularly good at interacting with other players.

3.3) Do you give constructive advice?

Yes

3.4) Do you receive advice well?

Yes. I am always willing to take advice from other people.

3.5) Are you good at sorting useful criticisms from useless ones?

Yes.

Project

4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?

I would like to concentrate on developing the addon server idea.

4.2) If you have invented your own project, please describe the project and the scope.

NA

4.3) Why did you choose this project?

I chose this project because I feel that I have a better general understanding of this project and what can be done; programming AI is over my head and I am not that great at web development.

4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".

April 21 - May 5: Get familiar with Wesnoth code and the Wesnoth community

May 6 - May 22: Study the problem in detail and gather the requirements of the project

May 23 - June 6: Flesh out use cases and start coding a prototype server, decide how network communication will be utilized and how updates will be handled, improve standalone GUI client

June 7 - June 21: Use cases finished. Work on in-game browser and test communication with prototype server. Continue work on server program

June 22 - July 2: Work on both client programs. General design should be completely finished by this point

July 3 - July 5: Take time off for the July 4th weekend. Will spend time with my family

July 6 - August 1: Improve both client programs and server program. Test more with full set of UMC data. Start thinking about what unit tests should be made. Start spending significant time fixing any bugs

August 2 - August 9: Write tests for both the client and server. Clean up code based on tests results

August 10 - August 16: Spend more time cleaning up client and server code and fixing bugs. Write more tests

August 17: Finish cleaning up code. Prepare final submission


4.5) Include as much technical detail about your implementation as you can

If a server rewrite is required, the code will be written in Python. The server has to integrate with other Python code, the server should be easier to write and maintain by using Python, and the usage of Python is encourage in the original proposal idea. The server will be responsible for communicating with client-side programs that will request for information on addons. To do this, the server will listen on an open port for requests and send information based on the request. The server will give the download location of the campaign along with the information listed in the translation files. The server should send the WML data associated with an add-on so the client can read the information and place the information in the appropriate portions of the UI. The server will also be responsible for integrating with Wescamp to grab translations and to run programs to update UMC regarding WML code and when new content is uploaded


The client-side programs will make requests to the server program to fetch information about the various user-made campaigns and show the information to the user in an organized fashion. The client-side programs should have a way to detect the locale setting of the computer and give that information to the server so the appropriate translation can be given to the client. For each campaign in the campaign list, the UI should display at least the name of the campaign name, version, campaign type, file size, and a description of what the campaign is about. When a download is requested, some form of progress window should appear with the ability to cancel the download in progress.

4.6) What do you expect to gain from this project?

I expect to gain some experience in working with a team and get the experience of working in a community. I also expect to get mad dough from Google. :D

4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?

As long as I do a good job on my project then I will stay in the Wesnoth community after the conclusion of SOC.

Practical considerations

5.1) Are you familiar with any of the following tools or languages?

   * Sub­­version (used for all commits)
   * C++ (language used for all the normal source code)
   * Python (optional, mainly used for tools)
   * build environments (eg cmake/autotools/scons)

I am familiar with C++, Python, cmake, and autotools.

5.2) Which tools do you normally use for development? Why do you use them?

I usually use Python for development. I use Python because it is a lot easier to write something fairly quickly as opposed to using C++.

5.3) What programming languages are you fluent in?

I am fluent in C++ and Python. I studied C++ in school for 3 years and I studied Python on my own for about 1.5 years. I am also fairly proficient at Java.

5.4) What spoken languages are you fluent in?

English

5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)

I am awake between 2 PM till 5 AM UTC. I can be in IRC between 2 AM - 4 AM UTC.

5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.

I do not mind getting calls from a mentor.

This page was last edited on 21 March 2013, at 02:54.