| 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://creativecommons.org/licenses/by/2.5/) |