CompInaBox
Ballroom Competition Planning and Execution

Developer's HOWTO

This page compliments the Development Roadmap and the To Do List.

Introduction

Welcome to the CompInaBox (CIB) project. CIB has been a one-man coding project for about 5 years, with significant discussion/suggestion contribution from a core of other interested people. I would be very happy to see the development group expand. Please email me, Eric Nielsen, with any questions and I'll do what I can to help get you involved.

I'm currently playing with porting CIB to Ruby On Rails; this would be a massive change, but so far it seems very promising. If you want to follow my efforts, please see my blog.

CIB requires a few components for operation: the PHP scripting languange, the Apache web server, and the PostGreSQL database system. Most development has been done on either Mac OS X or Debian GNU/Linux based systems. If you need help getting those components operating, please let me know. Afterwords preform a checkout from CVS and following the INSTALL directions in the base level of the checkout. If you have difficulties, please let me know and we'll work to get the directions better.

To get started, if you are not already familar with CIB, you might want to visit the beta server(s) listed on the navigation bar. At any given time there might be upto 2, one tracking the latest stable release and one tracking the tip of development. The former is for testing bug-fixes, the latter for new features. The beta servers' user accounts are not shared with each other or with the production server(s). The Beta server does send all the usual email notifications, so please refain from entering the email address for people other than yourself during testing. However, feel free to create "mythical" teams that you can act as the "Captain" or other role of.

Development Cycle

I'm attempting to follow a somewhat formal release cycle, broken up into "Increments" and "Spirals". Increments contain spirals; updates to the production server typically happens at the level of increments, while the beta servers are normally updated at the conclusion of spirals. The length of both is set by the active developers. Currently summer increments are shorter than semester increments due to the difficulties of updating the production server while competitions are open.

The Developer's Roadmap attempts to show the forseeable future of increments and spirals. With the later portions being extremely nebulous.

As of August 2005, I am forcing myself to do "Test Driven Development" and am migrating to a more "traditional" PoEAA inspired architecture. As a result my planned schedule from June has been completely busted. I'm having to go very slow as I work my way into the new development method, but I think its worth it. I don't expect other developers to follow TDD, but I'll definitly encourage it and help you learn this method if you want.

Picking a first project

Brose the To Do list for projects that look interesting. Items marked with a single or double star are probably great choices for people new to CIB. You can also look at the Developer's Roadmap for items well in the future that look interesting if you wish to "accelerate" their inclusion into CIB. Eric will attempt to keep all RFE's and Bugs from the trackers on SF.net accounted for on the todo/roadmap, but you can also check there for recent additions.

After picking a project, it is suggested to head any of the attached discussion threads or comments on the bug/feature tracker itme. Then write to the compinabox-discuss@lists.sf.net to "claim" that project. Include a rough outline of how you hope to address the issues, in case others can help identify problems in your approach.

When the project is ready for public beta testing you have two options. If your server is publicly accessible you can just post a link to your updated version. Otherwise you can work with Eric to get your patch applied to the shared public beta server(s) as appropriate. The latter approach is generally preferred except for very large/disruptive patches.