Robo Home | Changes | Preferences | AllPages

/InfraStructure? /DesignWhiteboard
Please feel free to change or remove anything on this page, in fact, if you add something to this page it is your responsibility to refactor the page so that it is simple, uncluttered and understandable.

User stories:

  1. As a competitor I want to be able to submit my new and updated bots for automatic inclusion in the competition.
  2. As the host I want the majority of the work to be done on other computers so that the load is not too great.
  3. As the host I want the competition to be fully automated so that I may concentrate on other things.
  4. As the host I would like to be able to decide the form of the competition.
  5. As the @home-host I want to be able to do my share of the work off-line.

Suggested system metaphor: A taxi exchange

Customers (battles waiting to be run) notify the taxi exchange (server). A taxi (@home-node) calls in and asks for a reasonable assignment, which is promptly given. The taxi reports back after completed assignment. If a customer gets irritated because the taxi that was assigned does not show up, the taxi exchange assigns that customer another taxi.

Taxis should advertise their capabilities (how many passengers they can carry, how quickly they will get them there, when they are on duty and when they aren't) The taxi dispatcher should keep track of how well taxis perform their assignments compared with what they said they'd do.

CRC analysis: anyone?

Design diagrams: anyone?

Suggested technology: Java, jakarta.apache.org and xml.apache.org probably has everything needed apart from robocode.

Suggested tasks:

  1. /InfraStructure? - Set up a CVS repository - responsible: ?
  2. /DesignWhiteboard - Create some design models - responsible: everyone
  3. /TaskRegistration? - Create a mechanism for registration, authentication of author and uploading bots to the competition - responsible: ?
  4. /TaskCreateMessageFormat? - Create a message format for information on the battle/s to run (actually the roboleague xml grouping is a good base for this) - responsible: ?
  5. /TaskQueueBattles? - Create a queuing mechanism where the @home nodes can fetch scheduled battles and return results. - responsible: ?
  6. /TaskScheduleBattles? - Create a mechanism for scheduling battles. - responsible: ?
  7. /TaskDisplayResults? - Create a mechanism for displaying results. - responsible: ?
  8. /TaskCreateNodes? - Create the @home nodes to run the battles. - responsible: ?

These tasks should probably be broken down even more. I have written "mechanism" on purpose because the "obvious" (web pages, web services) solution might not be the correct one. In fact, there might be a point to having much of it e-mail based, e.g. register an email address, then all updates for a bot must be sent as an attached file in an e-mail from that address and a receipt of update will be sent back. Another really cool idea would be to use JavaSpaces? for the distribution of battles.

CVS repository or suchlike - ?

I suggest Source forge be used for CVS thingys. And I could maybe put up another wiki for this project. That will leave the Robocode-knowledge wiki uncluttered and give us a much wider name space for pages. Feel free to discuss these issue on the /InfraStructure? page. Question for Tobe. I plain love the metphore suggestion and I think it could work. Since I have always failed at finding an out-of-the-problem-domain-metaphore I don't know how to work with them really. So, shouldn't the tasks speak the language of the metaphore? Maybe a /Metaphore? page is called for here. =) Feel free to trash my idea of creating sub pages for the individual tasks. -- PEZ

I am no expert at XP and Metaphors, but what I know is that you should do what feels right, there is no method police. The metaphor is useful for getting a common idea of how the system works, a 10 000 metre view of the architecture, but I don't think we need to overdo it. If a task feels more comfortable phrased in the metaphor, do it, if not, don't. The historic reason here is that I wrote the tasks before I came up with the metaphor. -- tobe Oh, I think the subpages were a great idea.

IMHO, SourceForge? would be perfect. We get the trackers and mailing lists as a bonus. I would create a project space, but I'm going on vacation on Saturday, so maybe someone else can request a project space at SF. This person should state so here so we don't get 3 people doing it at the same time. How about the project name? RoboRumble or RoboRumbleAtHome?? or something else? -- Vic

Feel free to just go ahead and change the name. A wiki is a place where anarchists live and thrive :-) -- tobe

I think Amarok might be interested in participated with this. Maybe we can then inherit the EternalRumble name? Otherwise I think a name like RoboChallenge? would be cool. But RoboRumble is great too. -- PEZ

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited August 21, 2003 19:08 EST by PEZ (diff)