blob: d9c5fcafc2158ce3cc8544e7711ce1f0c8878f86 [file] [log] [blame]
#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]