As the OU slogs its way towards our first use of Moodle in May (we're doing the usual behind the scenes integration stuff as well as a few goodies), we've done a lot of thinking about roles and permissions. While we have a particular need for a more flexible model, I think we've got a few ideas which would benefit everyone.
We started with the Nov, 2004 proposal for roles and permissions and tried to map it to what we hope to do with Moodle. The issue we ran into was the granularity of role assignment in the current proposal. Currently, roles are assigned on a course basis. We want to be able to assign permissions on every level down to a single instance of a module. For example, we tried the following use cases:
1) Regular student in a course: A student signs up for acourse with a simple interaction model. They have the same priviledges as everyother regular student in every course. The priviledges are set sitewide.
2) Tutor / Teaching Assistant: An tutor on a course has moderator priviledges on their group's forums. They canalso create sub-groups and assign roles to students within the group (groupforum moderator, group wiki editor). Anypriviledge changes within the group context do not apply at the course level.
3) A staff tutor: A staff tutor is assigned to monitorserveral tutors on several courses. They are allowed to read all of the activitiestheir tutors are involed in, but cannot make edits to content or changeconfigurations.
4) Participitory quiz: A course team decides to change thepermissions on a quiz to allow studentsto write their own questions. For a period of two weeks, anyone with a studentrole in the course can add questions to the quiz pool. At the end of the time,the quiz is made available for students to take and they can no longer addquestions. Students cannot add questions to any other quiz in the course exceptthis one during this timeframe.
5) Glossary editor: After scoring well on a vocabulary quiz,a student is granted editor privileges on a glossary in the course. Only thisstudent can add new definitions and make comments on exisiting definitions. Thestudent only has these priviledges on this glossary, not on any other glossaryin the course.
The use cases illustrate the need forcontext sensitivity in the role definitions. Maximum flexibility and power canbe gained by creating the ability to determine roles at all levels of thesystem, from system wide roles to roleswithin a single instance of a module. A combination of role and context ofinteraction will determine the capabilities of a given user at a moment intime.
This level of flexibility will greatly improve the abilityof Moodle to full implement the learning design specification. Scripting interactionwill require different students to have different privileges at differenttimes.
It also brings up an issue of roles vs module configuration: Many of the capabilitiesinherent in roles are also currently configuration options within a module. Forexample, the ability to upload attachments in a forum is currently set for theentire module instance. There is no mechanism for a course designer to restrictthe ability to upload attachments to a designated group leader (e.g. a teachingassistant or leader of a group project).
To maintain the simplicity of the Moodle interface, we suggest atwo-tier model. The existing module configuration interface will remain thesame, except for hiding those capabilities the author does not have. Forexample, if there is a site-wide restriction on file uploads, a course authorwill not see the option to allow attachments in a forum. Otherwise, allconfiguration options will still be available. The configuration options setfor a module instance will override priviledges set at a higher level.
Advanced users will be able to configure modules based on agiven role. A course author may create a glossary editor role which will havemore capabilities than a regular student. This role could then be assigned to agroup of students for a given glossary.
If there is a specific role defined for a module instance,that role overrides the configuration options.
We've begun to look at how to implement this technically. Right now, we think we can look at adding context to the ideas presented in the November 2004 proposal. The base architecture would be the same, but be sensitive at a more granular level.I'd welcome feedback, thoughts, expressions of emotion.
I'd also like to hash this through a bit more in the developer call on Friday if possible.
Thanks!
Jason