The SoC framework implements workflows that pass Proposals, Tasks, and other WorkItems from one 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 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 Person entities.

Contributor

The Contributor role is filled by a Person who contributes progress on Tasks to a Reviewer. In Google Summer of Code, for example, an accepted student would be considered a Contributor.

Reviewer

The Reviewer role is filled by a Person who reviews the work performed on Tasks done by a 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 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 Organizations author the Tasks to be completed by the students.

Administrator

The Administrator role is filled by a Person who:

Host

The Host role is filled by a Person who:

Developer

The Developer role is the Melange super-admin, who:

  • manages the application deployment
  • must create the Sponsor and Host

This is not currently modeled in the User Model (but may be, as a new Property, in the future), but is instead managed via the 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 Creative Commons Attribution 2.5 License.