_This may be way off the mark, it's just a starting point._


  1. Mentor **writes 'Awesome Task'**.  In the 2008 GHOP organizations wrote their tasks on a wiki first, because once in the tracker the task could not be edited.  We'll be writing tasks in Melange.
  1. Admin Adam notices that there are more than 102 tasks, and **deletes** some.  However 'Awesome Task' survives.

... wait some time ... GHOP announced ... site goes live ...

  1. Student Anna marks the task as **'requested'** and starts work on it (even though it hasn't been confirmed that it is claimed)
  1. Student Zing **tries to claim** the task too, but he got there too late.  :-(
  1. Mentor Michael marks 'Awesome Task' as **claimed** by Anna.
  1. Anna posts some **work in progress**.
  1. Michael gives some **feedback** by e-mail - the task is harder than Anna had thought.
  1. Anna notices that a task involving translating the Awesome Code manual into Inuit has just come free, and decides she'd really rather work on that.  She marks the task as **open** again.
  1. 3 minutes later Zing **requests** the task and starts working on it.  He looks at what Anna has done previously and Micheals comments.  He's off to a good start.
  1. Michael marks the task as **claimed** by Zing and sends him some e-mail with some more advice about how to tackle it.
  1. Admin Adam **notices** that "Awesome Task" was abandoned, and has a gTalk chat with Michael about it.  Sounds like the students are doing fine.  No problem.
  1. Michael sends an e-mail reminder to Zing, there's only 12hrs to go for this task and Michael's had no contact from him.  Is everything OK?  He also gives Zing the e-mail of a mentor who is in Zing's **time zone**.
  1. Zing says he had some trouble compiling the WOMBAT driver, but has that part done now, and asks for a 24 hour **extension** to complete the task.  Michael says 'fine, no problem'.
  1. With 12 minutes to spare Zing **submits** his completed work on "Awesome Task" to Melange.
  1. Michael has a gTalk discussion about Zing's work with Adam.  Awesome Task was a lot harder task than intended, and Zing has only just about done it.  They decide to count it as **done**.

# Notes

  * Zing cannot claim a new task until the task he has 'completed' is reviewed.

# Questions

Add questions about the life of "Awesome Task" here.

**Q:** Are there tasks such as 'Do a presentation on Drupal at Your School' for which it makes sense to allow multiple people to do them?

**A:**

# Other Discussions
