Cjhopman SOC questionnaire

From The Battle for Wesnoth Wiki
Revision as of 04:47, 27 March 2008 by Cjhopman (talk | contribs) (Project)

Basics

Write a small introduction to yourself.
My name is Chris Hopman. I spend much of my free time coding, playing various computer games, and sailing/teaching sailing.

State your preferred email address.
cjhopman|ATTT|gmail.com

If you have chosen a nick for IRC and Wesnoth forums, what is it?
My nick is cjhopman pretty much everywhere.

Why do you want to participate in summer of code?
I want to participate in summer of code because it is basically a once in a lifetime opportunity. That is, it is a chance to become a much better programmer, a chance to gain experience working on a real project, a chance to be mentored by an experienced programmer, a chance to become a member of the development team of a great game, a chance to join the community of that great game, a chance to make something that improves that community and that game, a chance to spend a summer doing something I love, and on and on... I mean, it's just an amazing opportunity.

What are you studying, subject, level and school?
I am studying Computer Science and Mathematics at the University of Wisconsin - Madison . I’m currently in my third year of my undergraduate program, planning to graduate spring ’09.


Experience

What programs/software have you worked on before?
Most of my experience of programming comes from work of done in class and some small projects that I have done on my own.

Have you developed software in a team environment before? (As opposed to hacking on something on your own)
Most of my work has been on my own, I have done some projects with another person but not much more than that.

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 participated in the Google Summer of Code before.

What development model would you use (e.g. keywords: V-model, XP programming, agile programming, iterative; with the help of prototyping, formal specifications, tests, etc).
I plan to use what basically amounts to agile development. I have expected milestones, but for this project to be successful it will require significant communication with other developers and, especially, scenario designers – and the project should adapt to meet the needs of the community. It is most important that the project is useful to the Wesnoth community. Also, with the limited timespan of Summer of Code, it just seems to be most sensible to have short development iterations so that time is managed well, the most common mistake that it seems students make is to not manage there time well.


Open Source

Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
Sadly, I am not currently involved with any open source development projects. However, I have, for a while now, been interested in becoming involved, and my experience with the Wesnoth community in the past few weeks has lit that spark that I needed and I will continue to be involved in open source development, regardless of my involvement in Summer of Code.

Gaming experience
Well… I remember playing the first Mario Bros. on the NES when I was 5. At that same time I started playing computer games, oh were those ever fun. Ever since, I’ve been hooked.

Are you a gamer? If so...
Yes, absolutely.

What type of gamer are you?
That’s tough. I’d say I’m many types, but I think primarily I’m a thinking gamer… that is I enjoy games that stimulate me mentally, either through good storytelling or through just mental challenges.

What type of games?
I’ve actually enjoyed all types of games, but primarily strategy games and role-playing games. Even when I first started gaming these were my favorite types of games, on the NES there was Chrysalis, Destiny of an Emperor, and Romance of the Three Kingdoms as my favorite games.

What type of opponents do you prefer?
Smart ones, I love the challenge of outsmarting my opponent. In online gaming, mature ones.

Are you more interested in story or gameplay?
This is tough, and it depends on the game. For example, the Civilization series all have basically no story, but I love the games. However, almost all RPGs that I enjoy are because of the story, not the gameplay.

Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.
I have played Wesnoth, though not for long. I have played only single player, as so far that has kept me entertained more than enough.


Communication skills

Describe your fluency level in written English.
I am very fluent in English, at least I would hope so after 24 years.

Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.
I definitely consider myself good at interacting with other people, even rough ones. Throughout high school and some of college I worked as a waiter, and let me tell you, you learn to interact with people or you don’t make money. On a more serious note, I also have taught sailing for several years now to people aged 7 – 72, and that requires very strong communication skills.

Do you give constructive advice?
I do. Again, this goes with teaching sailing, if you can’t give constructive advice, students don’t learn. And doing this you also learn that you really do have to communicate, and give advice, differently with different people.

Do you receive advice well?
I do. I know that there is a lot that I don’t know, and I understand that advice is primarily going to help me improve in many areas.

Are you good at sorting useful criticisms from useless ones?
Until recently I would have said that there is some worth in all criticisms, though for some the worth may be harder to find. Generally, I still consider that to be the case – though on the internet I have definitely come across useless criticisms. I do understand that not all criticisms are of a kind, and that, often, you cannot just accept a criticism as justified. In the end it basically comes down to the fact that yeah, I can take criticism, and I won't ever just dismiss it out of hand, but there are cases when the criticism just isn't valid, or isn't really helpful-- to anyone.

Project

Did you select a project from our list? If that is the case, what project did you select?
I did select a project from the list, and that is rewriting the scenario editor.

Why did you choose this project?
There were several projects that I was interested in – the scenario editor, the map editor, and the formulaAI projects. Of course AI would be fun, but I was interested in the editors as a chance to do a more user-centric project, and to design a GUI. And so, I was more interested in doing one of the editors. In the end I decided primarily on what I thought would be best for the Wesnoth community, the scenario editor. I also considered how much work could reasonably be done on each project in a summer, as I know that many students in past Summer of Code seasons have overscoped there projects and ended the summer with little to show. I think that having an intuitive and well done scenario editor will be a huge benefit to the community, especially if it is written so that it can be extended to be a full campaign editor, including map editing and such. This extension is not feasible to do over the course of the summer, but I absolutely do not plan to let that stop me from doing it afterwards. There are so many great games that are great precisely because of the community generated content, and the current high-barrier to entry in developing scenarios for Wesnoth is holding back the development of even more such content. Not only that, but Wesnoth itself is basically user-generated content, and it is only fitting to enable the community to more easily contribute.

Include an estimated timeline for your work on the project

March 26 Submit Application and build wiki page on www.wesnoth.org
March 26 – April 11 Continue minor coding tasks on wesnoth, mostly in areas dealing with WML to get an intimate knowledge of the WML processing.
Also, provide further proposal details as requested.
April 14 Accepted to work on Wesnoth for Summer of Code :)
April 14 – May 26 Three goals for this period:

1. Become very familiar with WML, and the design of scenarios. Use this research to refine and improve the project plan.

2. Do some coding work on the Wesnoth GUI, likely assisting Mordante by implement various features.

3. Become more familiar with Python. This will mostly be done in class, though I will also be studying it outside of class. Also, this is not as important as the other two as it is not directly required for the scenario editor. It will, however, allow me to become more familiar with other parts of the Wesnoth code.

Basically, by the end of this period I should be very well-prepared to begin the project. I will also in this period have started some of the groundwork for the project.

May 26 Google Summer of Code begins.

   Begin coding.

Tentative coding schedule: I’ve put some specific functionality goals here, though these are highly likely to change based on input from developers, scenario designers, and Wesnoth players gathered in the weeks prior. Also, I have tried hard to under-scope each iteration, as again, over-scoping is a common mistake for Summer of Code students. My project proposal, however, is very extensible, and so nothing is lost by this under-scoping as there are many more features that can be added. It is very important that at the end of the summer there is a well-done, completed project. I expect that at each of these dates there will be significantly more done than is on the timeline, and communication will be important as the summer goes on.


June 9 Iteration 1: Editor is fairly simple at this point, but can display map, add units to different sides, and change different attributes of those units.

June 23 Iteration 2:

   Can Add events triggered at particular locations, or by particular units (either 
       that unit does something, or something is done to it… i.e. unit dies).
   Can edit side info
   Can Edit objectives
   Can place villages


July 7 Iteration 3:

   Can save to WML.
   Can load from WML, those features that the editor supports.
   Added a WML editing box for most dialogs (i.e. can write your own WML for events.)
   Maintains WML output that can be edited within editor.
   At this point should be able to fully create basic scenarios.


July 21 Iteration 4:

   Continue to improve functionality
   Make common tasks easy to do, for example, conversations.
   Add more functionality as determined by discussions with users/ designers
   Add story editing

August 4 Iteration 5:

   Add support for more advanced WML
   If ahead of schedule, add advanced unit editing.
   Add more functionality as determined by discussions with users/ designers
   Thorough re-testing of all code has begun.

August 4 Tentative feature lock.

August 4 – 11

   Test and clean code.
   Improve usability and polish in-game documentation.
   Improve code documentation.
   Improve online documentation.

August 11 – 18 Final Week.

   Finalize code.
   Finish code documentation.
   Finish online documentation.

August 18 - ? Continue working on Wesnoth, both extending the finished project and working on other areas of interest.


Include as much technical detail about your implementation as you can.
So I plan to write an intuitive scenario editor. In playing with campgen, I believe one of its major drawbacks was its difficulty to use. I will be writing this in C++ for various reasons, primarily because it will allow me to reuse existing, functional code. Also, as most of Wesnoth is done in C++ (as I understand it, almost everything) it just makes sense to not require more dependence on a different language.

As for technical details, I do not intend to reinvent the wheel: that is, I would like to reuse much of Wesnoth’s existing code, for map display, for WML loading and saving, for the GUI I believe that I will primarily use code that is currently being worked on. One major benefit of this (besides the fact that it doesn’t really make sense to rewrite existing functionality), is that the scenario editor will be consistent in look and feel with Wesnoth itself. This makes a huge difference in how professional it appears.
Now, as I have planned this project, it has two important parts: the GUI and the underlying WML system/generator. The plan is to have the underlying WML system to be basically independent of the GUI, and the GUI is precisely what it is meant to be, an interface to that system. This will allow for much better extensibility of the project, and the eventual goal is to have it become an all-in-one editor for campaigns.

What do you expect to gain from this project?
Primarily, I expect to become a better programmer. Courses I have taken at my university are great for learning the theory of programming, but I am just as interested in programming well, something that the classes do not teach. For this reason I have done much coding on my own, and often the projects for my classes go well beyond the scope of the assignment – simply because I enjoy programming. However, I am limited by the fact that I don’t know what I don’t know. I can study and read all I want, but the opportunity to work on a project like Wesnoth, with an experienced mentor is priceless.
To think that programming experience is all that I would gain from working on this project is so far from the truth. I will get to become a member of the Wesnoth developer community, to work on a large project with a large team, to spend a summer doing something that I love, to make an important contribution to a great game… I could go on and on.

What would make you stay in the Wesnoth community after the conclusion of SOC?
I think a better question is what would make me not stay. To be honest, from my (albeit, short) experience with the Wesnoth community, I doubt that you guys will be able to get rid of me. Being a member of the Wesnoth community is such a great opportunity, the opportunity to learn to be a better programmer is primarily what brought me here, but there is much more that keeps me here… and even with the little bit of coding that I have done on the program, I already feel a bit of a responsibility to do more, a bit of an ownership and pride in the code.

Practical considerations

Are you familiar with any of the following tools?
Subversion
C++
Python
I am quite familiar with C++, and less familiar with subversion. I have only a little experience with Python, though by the time that summer begins I will significantly more as we are using it in one of my classes, and because it is one of my three goals for the time remaining before summer.

Which tools do you normally use for development? Why do you use them?
I’ll admit it, I primarily do work on windows. Why, you may ask… well, because my graphics course requires it, and my girlfriend doesn’t like using Linux. I do work on Linux, and I have compiled Wesnoth on both… and it is likely that if I were working on Wesnoth full-time that I would do my work on Linux.
I use both Visual Studio 2005 and Dev-Cpp… Visual Studio because it is required by the same course as above, and Dev-Cpp because it was the first IDE I used back when I began learning C++. I do really like some of the features of VS2005, particularly the debugger. For java programming, and programming on Linux in general, I tend to use Eclipse, partly because it is what I learned java on.

What programming languages are you fluent in?
I am fluent in C++ and Java… I have used Scheme, Python, C#... of those I am actually probably most fluent in Scheme. But mostly I’ve used C++ and Java.

What spoken languages are you fluent in?
Only English. Well, I also know a little Latin but that’s not really much of a spoken language anymore, and I'm far from fluent in it.

At what hours are you awake (please specify in UTC)
I am awake usually from ~12:00 – 5:00 UTC, and would be online usually 12:00 – 23:00 and 2:00 – 5:00, if working on Wesnoth for the summer.

Would you mind talking with your mentor on telephone / internet phone?
That would absolutely be fine.