This wiki was in read-only mode for many years, but can now be edited again. A lot of information will need to be updated.

User:KingofCamelot

From BZFlagWiki
Jump to navigation Jump to search

Google Summer of Code Application

This is my proposal for continuing to enhance the BZFlag server listing.

Reflections On GSoC 2008

Since this application would be a continuation of my work from last year, I thought I should mention my thoughts on the original project from last year.


First off, because of time constraints due to school, I have not been able to continue to participate in BZFlag, or keep up with any developments. I did set up the code to compile on my desktop a few months ago, now using the VC9 project files. I am glad to see that my work is being used in BZFlag, but after looking at it again, I feel it could still use some work.


One major point I underestimated in Google Summer of Code 2008 was time management. I did not lay down a very concrete time schedule for myself, partially because I was not sure what to expect, and partially because I wasn't positive of strong milestones, due to the refactoring nature of my project. I think this, along with underestimating the time to learn the current code, which gets a bit tricky with navigation focus, nested controls, etc, caused me to fall short of my own expectations for my project. My school quarter did not end until a bit into the start of coding for GSoC, I moved in July, and then fires knocked out power and caused problems for a week or two, so some other issues played a factor in time management. As such, in this application I will try to lay out a more concrete time schedule which I can abide by to keep myself in check.


I think I did a decent job last year, and because I received a passing evaluation I assume it was mostly satisfactory. However, I fell a bit short, and due to focusing on functionality near the end rather than form, it is not the prettiest at the moment. I also fell far short of my goal of commenting the code, since I was quite busy with functionality. These are all reasons why I would like to continue working on the server listing. I have also learned more about computer programming and design over the last few months, and am currently taking a course in C/C++, and I feel these factors will help me improve my work.


Speaking on a slightly unrelated note to this section, but on time management, it is worth noting that this application is being submitted quite close to the deadline. This is mainly due to school-related issues, and should not affect GSoC 2009. Last quarter was quite stressful school wise, and especially around finals, when GSoC 2009 was starting to crank up. After that, I've been trying to find some place to live next year, which has been taking up a large amount of my time (trying to coordinate a place for 5 people), and the last week I have been trying to nail down my schedule for this school quarter. So due to unfortunate timing all of these events have left me with little time to work on my application.

Abstract

Improvements to the BZFlag server listing during Google Summer of Code 2008 added quite a bit of new functionality. However, not all proposed functionality was added, and not nearly enough input from developers and community was solicited. As such, this proposal seeks to build off of the work done in GSoC 2008, while adding any new functionality that is suggested by the community/developers. Another major goal of this proposal will be to improve the usability of the server listing as it stands now. While it has quite a bit of functionality now, it is a bit awkward to use, and has a few glitches. As work in GSoC 2008 showed, adding functionality can quickly overwhelm the usability of a menu when keyboard accessibility is a constraint. As such it is important to add any new functionality which the community wants, and improve current functionality, while keeping keyboard accessibility in mind. Functionality may have to be limited due to the fact that we can't list a thousand commands at the bottom of the screen. Developer and community input on how best to deal with the ratio of functionality to keyboard accessibility will be sought out, and used to keep things balanced.


The overall end result of this proposal is a complete and robust server listing for BZFlag. Since BZFlag is preparing for a major release, it is important that the final product of this project will be a fully functioning, and easy to use server listing. As such, addition of new functionality will be weighed to ensure it does not produce too much work which will limit the completeness of the server listing. GSoC 2008 saw a lot of new functionality implemented, especially in UI controls to accommodate new features such as nested controls, and this new functionality came at the cost of a polished and ready to ship server listing. Now that a lot of the needed functionality is in place, more of the focus can be on the actual server listing, and producing a complete and polished server listing. With all of this in mind, the proposed timeline for the project has been laid out into three iterations, which should deliver a workable server listing at each step. The iterations' scope narrows as time goes on so that major new functionality will not be added near the end of the project, and instead the focus will be on finishing up and making it all come together.

Detailed Proposal

This detailed proposal will go over the main goals of the proposal, and how they will be achieved. Much of the main goals of the proposal are based on the proposed timeline at the end of this section. The use of a concrete timeline is of importance to this project, especially since BZFlag is working towards a release. While the results of GSoC 2008's efforts on the server listing produced a working version (although some functionality was inadvertently broken soon after completion, see patch), I would not call it release worthy. Most all of the functionality that was proposed was added, but much of this remained largely completed in code itself, and not necessarily in usability. One proposed improvement which was not completed as of GSoC 2008 which is worth noting is the players on server list. That improvement requires some major code writing to implement, and as such should be carefully reviewed before inclusion in the continuing work on the server listing. As such, this proposal seeks to implement this functionality in a user friendly way, while adding any new functionality that the community wants. The scope of any new functionality will be closely watched to prevent the project from drastically expanding.


In an attempt to keep new functionality in check, to work towards a release ready result, and to maximize community involvement, this proposal has laid out an iterative approach. Specifically three iterations are called for, although this can be flexible if other developers have any suggestions, etc. The proposed three iteration plan would go as follows. The first iteration will implement any major new functionality, like the players on server list, to the server listing. It will also focus on fixing bugs that exist in the foundation code, especially the code from GSoC 2008. The second iteration will implement any minor new functionality, while expanding existing functionality and that added in the first iteration. The third and final iteration will focus completeness of added functionality from iterations one and two, as well as focusing on usability and navigation of the server listing. Polishing of the visuals, while not overly important to this project, are part of producing release ready code, and as such this iteration will also see improvements to the visual aspects of the server listing. Each iteration should produce a working version by the end of it's allotted time which can be used and played with by developers and community, in order to provide input to help guide the next iteration. The scope of each iteration narrows in order to ensure that the final weeks focus on completeness and usability.

Documentation and Community Input

The first major aspect of this proposal seeks to correct some of the mistakes with the original GSoC 2008 project, mainly documentation, and community input. Taking into account the experience gained in GSoC 2008, time is an important commodity, and must be managed as one. As such, this proposal sets aside the time before the beginning of coding for documenting, and soliciting community input. Community input is of particular importance during this time, as it can provide a guide moving forward once coding has begun. A forum post seems to be the most efficient way to get community involvement, and as such should be made as soon as possible to begin to get comments and suggestions for the current state of the server listing, as well as any desired functionality. Community input is important, but the final decisions of what to include and focus on will be up to the developers. This forum post will be updated as each iteration nears it's end, allowing major community input at four major intervals: project start, first iteration, second iteration, and third iteration.


In addition to community input, the time before coding begins will also be used efficiently to fulfill another lapse of the GSoC 2008 project: documentation. There is a fair chunk of time before coding begins, and this should be enough time to document code produced in GSoC 2008, and the code which was affected/used during that time. Most of this documentation will done through in-code comments, as can be seen in the patch submission. If these comments become too dense, external documentation can be used. More complex subjects, such as the in-menu navigation system, deserve more complex documentation, and ideally could have a wiki page of some kind to provide a reference on how to use them. Any overly messy code found during this documentation period would be cleaned up, but the focus would be on documentation, as this will provide a good base for finishing the project on time.

Proposed Timeline

April 20 - May 23: Beginnings

  • Document existing code related to the server listing. This includes code I wrote last year. Mostly internal code comments, but maybe a wiki page for more complicated concepts, like the navigation queue. Clean up any code which is glaringly messy during commenting.
  • Create a suggestion thread on the forums, based on the current state of the server listing. State what is realistically possible in the time frame, and take suggestions from the community on functionality and form for the listing.


May 23 - June 27: Iteration 1

  • Fix any known bugs with the current implementation of the server listing, while keeping in mind anything which might change due to changes to the server listing.
  • Implement new functionality agreed upon in the forums, and/or among developers. Attempt to implement the most major changes/functionality here, in order to deal with any problems early on.
  • Continue to flesh out current functionality if need be.
  • Have a functioning copy by the end of this iteration.
  • Near the end of this period, make a new post, or update the existing post on the forums, highlighting the new server listing, and again taking thoughts and suggestions. Provide enough time, perhaps a week, to allow users to comment. Have this week overlap the end of iteration 1 and the start of iteration 2.


June 27 - July 25: Iteration 2

  • Similar approach as Iteration 1.
  • Implement new functionality from forum suggestions, etc.
  • Try not to take on any major new functionality, or if so, keep it to one major function.
  • Again, update the post on the forums with the latest status, take suggestions and ideas. At this point solicitation of any new functionality should cease, and the focus would be on navigation, ease of use, etc.


June 25 - August 10: Iteration 3

  • No new functionality should be implemented in this iteration. The focus will be on improving current functionality.
  • Improve the robustness of the code, and flesh out any functionality that is lacking.
  • Special focus on navigation and ease of use of the server listing.
  • Any visual clean up that is needed. Polish the visuals to go along with the rest of the menus, and to look nice.


August 10 - August 17: Endings

  • Google's suggested 'pencils down' period.
  • Document anything which was missed during the previous iterations.
  • Bang on the server listing and fix any bugs that might come up.
  • Clean up any code that got messy.
  • Continue to make superficial visual tweaks to the server listing, as time allows.

About Me

My name is David Sanders, and I'm a second-year Computer Science major at the University of California at Santa Barbara. My nickname in the BZFlag IRC channel is KingofCamelot. I have experience working in BASIC, Visual Basic, C, C++, Java, Python, and HTML/CSS. I have worked the most extensively with Python and Java, although I am proficient in C/C++, as my patch submission should demonstrate. I have no formal training in either C or C++, so some I'm somewhat rusty in certain areas, but I am constantly expanding my knowledge through online resources when problems arise, and I am definitely a competent programmer in both.

During the next 10 weeks or so I will be taking a class which focuses on C/C++, so I should be able to improve my C/C++ skills and become a better programmer in both.

I participated in GSoC 2008 with BZFlag, so I'm not going to re-hash too much of the about me here. I will provide a link to my application from last year, which has a more detailed information. Last year I worked extensively with DTRemenak, and worked in the IRC channel, so I believe there are some people who remember me.

Appendix

References/Links