Requirements
See the install requirements at http://gitorious.org/tunnel/tunnel/blobs/master/README.rst

Workflow
Clone the Official Repo
Do work in the clone
Rebase off Official Repo as needed
Push to Official Repo when feature is done — Don’t push code that doesn’t build :–)

Rough development plan

=== Stage 1 ===
I propose that first we work on getting the actual games in the system. On the server side we need some sort of database (MySQL?) which has a list of games – with information such as name and description on there, we need to have a standardised server side form of the game information so that we can compare stats and have groups and all that (of course!). The games can be added manually for now? On the clientside I think the user should be able to click the add game button, browse to the game binary – the name of which it uses to identify the game on the server and download the information (and when we have user accounts, registers that the user owns the game).

Server Side Tasks

  • DONE Database can be MySQL, SQLite, PostGres or Oracle (all supported by Django)
  • DONE Create initial Game object in the ORM
  • DONE Define REST location for modifying the Game objects
  • DONE Enable basic account system (simple user/pass for now to get up and running) [Using built in Django user/pass]
  • DONE Enable web ui login/logout
  • DONE Enable web ui registration
  • DONE Define form for manual entry of game information from a user
  • Required Items Done Allow API to to create and update

Client Side Tasks

  • DONE Game listing
  • DONE Interface for game addition
  • DONE Login UI and front-end usage

Notes

We've chosen to make API writes YAML-only, due to a bug in Piston.

=== Stage 2 ===
This would probably be a good point to start developing the IM system. We are going to be using an XMPP server – the choice of which, at the moment, is ejabberd. If possible, we should implement this system in such a way that it will be easy to migrate the XMPP service to something else (possibly something in Python). We are going to be using the Tunnel logins to authenticate the XMPP accounts.

SleekXMPP is the candidate of choice for the client-side XMPP interaction. There are several choices such as xmpppy and ‘twisted words,’ but SleekXMPP seems to be the most ahem sleek, of them. Here is some example code: http://github.com/fritzy/SleekXMPP/blob/master/example.py

Server Side Tasks

  • DONE Create authentication script for jabber to auth with
  • Create reaper which cleans up old sessions and sets logged_in to False if the user is not on XMPP
  • ….
  • (If available) Move to Django 1.2 and verify functionality

Client Side Tasks

  • DONE Create UIs for chat (friend list and chat window)
  • DONE Roster retrieval and showing
  • DONE Basic chat function (send and receive messages)
  • Add friends
  • Game that is currently being played shown in the status message
  • Decent amount of error checking for chatting