|  | #summary Various user roles in Melange | 
|  | #labels Phase-Requirements,Contents-Draft,Importance-Details | 
|  |  | 
|  | The [SoCOverview SoC framework] implements workflows that pass | 
|  | [ProposalModel Proposals], [TaskModel Tasks], and other WorkItems from | 
|  | one [UserModel user] to another.  These users can serve in one or more | 
|  | roles, and these roles define which RoleViews and WorkViews the user | 
|  | is able to see and interact with. | 
|  |  | 
|  | Each role is represented in the [http://code.google.com/appengine/docs/datastore/ Google App Engine Datastore] by an entity model.  RoleModels summarizes the relationships between these models. | 
|  |  | 
|  | == Person == | 
|  |  | 
|  | The Person role is a basic role from which all other user roles derive.  This | 
|  | role is represented in the [http://code.google.com/appengine/docs/datastore/ | 
|  | Datastore] by [PersonModel Person entities]. | 
|  |  | 
|  | == Contributor == | 
|  |  | 
|  | The Contributor role is filled by a [UserRoles#Person Person] who contributes | 
|  | progress on Tasks to a [UserRoles#Reviewer Reviewer].  In Google Summer of | 
|  | Code, for example, an accepted student would be considered a Contributor. | 
|  |  | 
|  | == Reviewer == | 
|  |  | 
|  | The Reviewer role is filled by a [UserRoles#Person Person] who reviews the | 
|  | work performed on Tasks done by a [UserRoles#Contributor Contributor].  Again, | 
|  | in Google Summer of Code, a mentor with an assigned, accepted student would be | 
|  | considered a Reviewer. | 
|  |  | 
|  | == Author == | 
|  |  | 
|  | The Author role is filled by a [UserRoles#Person Person] who creates (or | 
|  | "authors") Tasks for a Program.  In Google Summer of Code, students who create | 
|  | applications to be reviewed for acceptance into the program are Authors. | 
|  | Contrast this with Google Highly Open Participation, where representatives of | 
|  | participating [PersonGroups#Organisation Organizations] author the Tasks to be | 
|  | completed by the students. | 
|  |  | 
|  | == Administrator == | 
|  |  | 
|  | The Administrator role is filled by a [UserRoles#Person Person] who: | 
|  | * submits an [PersonGroups#Organization Organization] for participation in a Program | 
|  | * approves [UserRoles#Reviewer Reviewers] for that [PersonGroups#Organization Organization] | 
|  |  | 
|  | == Host == | 
|  |  | 
|  | The Host role is filled by a [UserRoles#Person Person] who: | 
|  | * manages the overall Program for a [PersonGroups#Sponsor Sponsor] | 
|  | * approves [PersonGroups#Organization Organizations] for participation in a Program | 
|  |  | 
|  | == Developer == | 
|  |  | 
|  | The Developer role is the Melange super-admin, who: | 
|  | * manages the application deployment | 
|  | * must create the [PersonGroups#Sponsor Sponsor] and [UserRoles#Host Host] | 
|  |  | 
|  | This is not currently modeled in the [UserModel User Model] (but may be, as a | 
|  | new Property, in the future), but is instead managed via the | 
|  | [http://code.google.com/appengine/docs/users/adminusers.html Google AppEngine function] | 
|  | `users.is_current_user_admin()`. | 
|  | This solves the "chicken-and-egg" problem about how any "super-user" entities | 
|  | in the Melange application get created if there are no existing such entities. | 
|  |  | 
|  | ---- | 
|  | _Copyright 2008 Google Inc._ | 
|  | _This work is licensed under a_ | 
|  | [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License]. | 
|  | [http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png] |