#summary Life of a GHOP Task
#labels Importance-Details,Phase-Design,Contents-Draft


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


  # 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.
  # 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 ...

  # Student Anna marks the task as *'requested'* and starts work on it (even though it hasn't been confirmed that it is claimed)
  # Student Zing *tries to claim* the task too, but he got there too late.  :-(
  # Mentor Michael marks 'Awesome Task' as *claimed* by Anna.
  # Anna posts some *work in progress*.
  # Michael gives some *feedback* by e-mail - the task is harder than Anna had thought.
  # 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.
  # 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.
  # Michael marks the task as *claimed* by Zing and sends him some e-mail with some more advice about how to tackle it.
  # 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.  
  # 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*.
  # 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'.
  # With 12 minutes to spare Zing *submits* his completed work on "Awesome Task" to Melange. 
  # 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=

