blob: 5e8b65101c8af3d6a0b2d5bf49c0a0ec25e605ca [file] [log] [blame] [view]
The [SoC framework](SoCOverview.md) implements workflows that pass
[Proposals](ProposalModel.md), [Tasks](TaskModel.md), and other WorkItems from
one [user](UserModel.md) 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 [Google App Engine Datastore](http://code.google.com/appengine/docs/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 [Person entities](PersonModel.md).
## Contributor
The Contributor role is filled by a [Person](UserRoles#Person.md) who contributes
progress on Tasks to a [Reviewer](UserRoles#Reviewer.md). In Google Summer of
Code, for example, an accepted student would be considered a Contributor.
## Reviewer
The Reviewer role is filled by a [Person](UserRoles#Person.md) who reviews the
work performed on Tasks done by a [Contributor](UserRoles#Contributor.md). 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 [Person](UserRoles#Person.md) 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 [Organizations](PersonGroups#Organisation.md) author the Tasks to be
completed by the students.
## Administrator
The Administrator role is filled by a [Person](UserRoles#Person.md) who:
* submits an [Organization](PersonGroups#Organization.md) for participation in a Program
* approves [Reviewers](UserRoles#Reviewer.md) for that [Organization](PersonGroups#Organization.md)
## Host
The Host role is filled by a [Person](UserRoles#Person.md) who:
* manages the overall Program for a [Sponsor](PersonGroups#Sponsor.md)
* approves [Organizations](PersonGroups#Organization.md) for participation in a Program
## Developer
The Developer role is the Melange super-admin, who:
* manages the application deployment
* must create the [Sponsor](PersonGroups#Sponsor.md) and [Host](UserRoles#Host.md)
This is not currently modeled in the [User Model](UserModel.md) (but may be, as a
new Property, in the future), but is instead managed via the
[Google AppEngine function](http://code.google.com/appengine/docs/users/adminusers.html)
`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_
[Creative Commons Attribution 2.5 License](http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html).
[![](http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png)](http://creativecommons.org/licenses/by/2.5/)