#summary Template for User Stories
#labels Phase-Requirements,Contents-Draft

To contribute a [http://code.google.com/p/soc/issues/list?can=2&q=type:Story User Story] to the Melange effort, please send an email to the `melange-soc`
[http://groups.google.com/group/melange-soc discussion mailing list].

== Summary ==

In the email subject line, please include:

*Subject:* _User Story: some brief description of the user story_

This subject (minus the _User Story:_ prefix, of course) will become the User Story issue summary in the [http://code.google.com/p/soc/issues/list Melange issue tracker] when the User Story is accepted.  Discussions of a new User Story on the mailing list are quite welcome and are encouraged.  Once the User Story makes it to the issue tracker, the comment system can be used for further discussion.

== Description ==

A user story should be a description of a single activity in the web application from the point of view of the user.  The most important characteristic of a User Story is that is *short and to the point*.  The second most important characteristic is that it represents a *single task* that can be implemented.

During the discussion of a new User Story on the mailing list, the discussion could lead to the creation of new, separate User Stories, in order to keep the scope of the User Story from getting out of hand.

== An example ==

The [http://code.google.com/p/soc/issues/detail?id=1 very first issue] in the [http://code.google.com/p/soc/issues/list Melange issue tracker] is a very nice example of a User Story:

{{{
Summary: Claiming a Task

A student may claim a task as long as the following apply:

1. The task has a status of "Open"

2. The student does not have any other claimed tasks currently in progress or pending review.

3. The task was not suggested by the student.

4. The student meets the eligibility requirements of the program.
}}}
