I have been pondering this since yesterday, because you have all given me a lot of interesting things to think about. I don't many answers yet, but I do have some obervations.
Several of the comments make it clear that we have not stated what our goals are here. How usable do we hope to make the roles system? This is certainly a vital question.
Thinking about setting goals reminded me of about the bit about usability requirements in Mastering the Requirements Process
(which I studied as part of OU course M883 Software requirements for business systems
- good course if you have the time and money - or good book in its own right - sorry end commercial break). The two relevant bits are:
1. Rather than just talking about 'Usability' it is more helpful to distinguish 'easy to learn' and 'easy to use', or in other words learnability and efficiency. These are not mutually exclusive, they are just different aspects of usability with different implications, so it is helpful to consider them separately.
An example of a system where learnability is key is and ATM, where you go to get money out of your bank automatically. You just walk up to it in the street, and you aren't going to read a manual before using it. What to do should be entirely self-evident. And it says on the screen: 'Insert card'. So you do, and it guides you through the process making it very clear what you have to do at each stage. Actually, 'Insert card' is the convention I am used to from the UK. In a lot of Australian ATMs you have to 'Swipe your card through the slot', but I don't have any trouble using them becuase it tells you that on screen.
An example of a system that needs to be easy to use is my Eclipse IDE. I use it all day, every day, and what I care about is how efficiently it lets me get the job done once I have mastered it. I am happy to invest some bits of time reading parts of the manual, learning keyboard shortcuts, and adjusting the preferences because the time I spend learning and understanding the system saves me time in the long run. The same sort of consideration applied to other complicated applications like Photoshop, which a graphic designer might use all day, every day; or a fighter jet, where you would not expect to fly one without extensive training, but then you need to have split second control over it. (That is a really extreme example.)
Of course a learnable system should not be inefficient. Having to go through lots of unnecessary steps on an ATM would be a pain, that is why there is normally a button to withdraw $100 in a single action after you have typed your PIN. And an efficient system with a big learning curve should still provide you plenty of clues so you can work out how to scale that learning curve on your own with minimal effort - what people refer to as discoverability, progressive disclosure and so on.
2. The other concept is that you cannot specify your usability requirements without some idea who your users are. For our discussion, the key attributes would probably be:
- how computer/web literate are they in general?
- how much time are they prepare to invest in learning about roles in Moodle?
- how do they think about the concepts here? That is, the questions of who can get into which course, and what can they do when they get there. In particular, if you have users who have not used Moodle much before, what words do they use to describe these concepts and what is their mental model?
I do have some thoughts about the answers to this, but I am not ready to write down my ideas yet. What do other people think?