I like your proposal; I can not think of any negative consequence of doing it like that right away.
… and I get even more thoughts the more I put the topic in my brain.
I am wondering again if we can somehow unify the trust system with this again … a few thoughts off the top of my head for now:
- in the proposal, it’s a bit weird that you could be editor, but not approved (you could then approve yourself…)
- partly the reason was that anyone can give trust, but it seemed useful to only let editors bestow this new approved role, but that still seems kinda confusing having this two parallel systems of role/status
- I would if we can simplify it so users progress: newcomers → approved → editor?
- perhaps changing the system so that only approved or editors can give trust? (I think we let anyone give trust to allow an overthrow of the group if some people dominated it, but maybe this is not needed/useful/realistic?)
- … or a compromise approach: allow newcomers to give trust if they did an activity with the person (so prompting when giving feedback)
- it would mean we can put more thought into improving the trust system too (e.g. for some groups the threshold should maybe be higher already)
- I’m keeping in mind the idea to have roles per place too, but would not like to implement that yet
… also reflecting on the original intention that highlighting newcomers was supposed to faciliate introductory pickups:
A follow-up discussion with Janina, Tilmann and Tais revealed a potentially easier way to handle introductory pickups: we allow newcomers to join any pickup, but show them with a special color or badge. Editors should recognize this and add themselves to the pickup as well. If the pickup is not suited for introductions, it can be specified in the pickup comment or discussed in the pickup chat.
I guess it didn’t quite work out this way, but does add more to my thought to try and unify newcomers/approved/editor into a coherent system.
I have read in the meeting notes of today’s weekly call that you have also talked about this topic there, so I link it here for easier reference: Weekly call about Karrot development - Date: 2021-01-18 12:00 (UTC+1)
- maybe have 3 trust carrots to get approval, and 5 to get editor (for example, would vary with group size)
While I think the flow
newcomer -> approved -> editor can work, I think this needs more thought.
First, I think it is important to make these thresholds configurable, or, alternatively, have a way for groups to accept or reject such an automatic upgrade. For instance, in our group, people need to do 3 test pickups - and more if they do not turn up.
Second, I imagine new projects emerging in groups, which would ideally be represented by activities. However, a new member would have to transition through the
approved role into the
editor role to be able to create such an activity. In other words, this flow reduces flexibility in the case of different activities’ needs. For example, in our groups, only pickups require trials, whereas you could directly set up and manage a new Foodsharing Point. One option could be to configure what you can do with both
editor roles, which I am not totally convinced of and just put here as I have not had a better idea yet.
Leading back to:
- in the proposal, it’s a bit weird that you could be editor, but not approved (you could then approve yourself…)
While this may seem a bit odd, I think that the group’s history would easily reveal such a misuse.
Ah, great you saw them!
Yup, thanks for the examples where it doesn’t quite fit. Perhaps there are many cases across the groups where a linear model like this is too simplistic. I think the aim from me behind that idea is not so much to make it linear, but to make it understandable - and perhaps the key thing here is to just display more clearly on the profile the roles that a user has, and how they might get ones that they don’t have.
The other bit I’d really like to feel clearer about is whether we can unify giving trust and manually assigning a user a role (which is also kind of like giving trust… in the case of our proposal above an editor manually approving a user is like an editor being able to give a special kind of trust that has power to immediately give them the new role…). But my head gets a bit fuzzy when I think about it, so I think the concept is not so clear to me yet. Maybe they are worth keeping as seperate concepts, or maybe they can be unified.
I really like the general approach of what we came up with though - being able to limit some activities to requiring a specific role (I actually programmed it in this more general way), and optionally allow people without that role to sign up for a trial (or “introduction”).
The threshold for becoming an editor has long been a question of debate, maybe worth revisiting the topic now that some time has passed: [Discussion] Karrot trust system and user levels
So either we start considering making the thresholds configurable for each group, or finding some magic number that works sufficiently well for the groups. So far it hasn’t been a big deal apparently with the 3 carrots to become an editor. One might wonder if that’s the case by adding another level. 1 carrot to approve and 3 to become an editor? 3 to approve and 5 to become an editor?
Anyhow, what I understood from our discussion at the weekly meeting is that approving (in other words, giving trust to approve someone) would be a manual process and not strictly connected to how many trial pickups the person has done. If the threshold for approval is low (1 or 2 carrots) and the threshold for becoming an editor is the same as now (3) or one more carrot (4), then I believe the following would not be an issue anymore:
The only issue with the case above would then be that the person could possibly join pickups.
Anyhow there might be a trade-off between making things easier to understand for groups and more flexible to different use cases.
This kind of got deadlocked trying to think about how the roles should work (which is the fate that led to group agreements never being usable). It is a tricky topic!
The other part of the backend API work (setting activities to have max trial slots and accepting trial participants) is actually done now.
I had a little ponder about it again, and wondered about a concept of “trust for role” (which has come up in past discussions before - you might trust someone to do one thing, but not anything… in general).
Here’s (literally) a back of an envelope sketch:
(… in this way it’s actually like a basic role voting election system … although no mechanism to remove the role again …)
A few points:
- initially might be best to keep to a set of fixed roles, but keeping a mind open to custom roles
- … we could be starting down the path of creating “admin roles”! … if you can customize what they can do with a given role… need to refer back to our values here to make sure we don’t encode hierarchical practises without thinking
- as this adds complexity to the trust system, and it’s already one of the more confusing features, so I think we really need some good UI/UX to make it clear to people how it works, two parts in particular I think about:
- making it clear on the profile the situation of a given user
- prompting to give trust in more places (e.g. activity feedback)
- there is also some overlap with the concept of working groups (and also the use of places without a location as discussion/working groups), but maybe we don’t need to think about that right now
- potentially also giving trust in the context of a role and a place could make sense, but again would like to leave that concept out if possible
(it might be our new Freiburg team are up for building some nice UI/UX too! )
So, let me see if I get it… We’d start with the 2 following roles with their respective capabilities:
- approved - person can participate in every activity of the group and not just trial activities
- editor - person can edit but not necessarily participate in every activity if the person is not approved?
The roles are not strictly connected in my understanding, meaning that you can become an editor and not be approved and vice-versa?
I like the idea of having approved roles to specific places, I think it would be useful in our group, but I agree this should be left out now.
The idea can be very good if we work very carefully on the UI/UX. That is probably where we should start.
I’m up for a call, but for me at least in two weeks, or maybe March?
Yes! your description matches the concept I described.
And I very much agree on the “very carefully” caveat for the UI/UX part.
Well, I’ll be around for a call when we’re ready. Although, given @danveg gave a to my post, maybe we can proceed with engaging the Freiburgians if they are up for it…
Thanks for the reminder, I just made a proposal for them to take it on, so let’s see!
I think the concept still seems good to me.
At the request of the Freiburg group I created a GitHub issue to describe what is needed to be developed to progress this → Role based trust + activities · Issue #2361 · yunity/karrot-frontend · GitHub
It still seems a bit long! And hopefully still makes sense…
I’ve continued working on the backend part again → Add activities with role requirement by nicksellen · Pull Request #1105 · yunity/karrot-backend · GitHub
The work comes in two parts really:
- limiting certain activities by role + open/trial participants (backend PR nearly ready)
- giving trust for particular roles (backend PR nearly ready)
I also just started on the UI part for 1, and would appreciate a bit of feedback where it makes sense so far. The UI for 2 has not been started.
This would be setting up an activity as it is now (access is “Any group member”):
… and this would be to set it up suitable for trial activities (access is “Group members with approved role” + setting the number of open slots to 2):
Personally, I think the concept of open slots might not be clear enough, and maybe it needs to be somehow combined within the bit where you specify “access”, so perhaps using the “guest” terminology, something like this:
(note: the reason I avoided the “trial” terminology is I think the feature is useful for more than just trials, so would limit the usage of it)
Thanks @nicksellen for your work in the back-end and your UI suggestions!
I have a few comprehension questions:
- Regarding the second slider “Max Open Slots” in your second picture: Would the maximum of this slider be the maximum number of slots defined with the first slider “Max Slots”? Or would there be 4 for group members with approved role and 2 additional ones?
- Regarding your third picture: In case of the “Allow guests” toggle, the “Access” field would not be necessary, or would it? If so, in which scenario?
- making it clear which sliders are for which level of access is important (somehow grouping the access + slots slider together?)
- having an activity preview (showing what it will look like) would be useful
- guest is not a good term, open also isn’t always clear, depending on context… might need to keep the question unresolved for now…
I resumed work on this again now
I’ll see what I can come up with…
Ok, trying again at the UI to address the points from above:
new bits restrict access by role and show preview, but otherwise as normal:
restrict by role, grouped next to the slots:
adding open slots (still unsure of good terminology):
and the preview bit (I put it behind a toggle, so it doesn’t look cluttered by default):
And a video talking you through it (as I can’t deploy it yet for you to try…):
Wow, thanks for the screenshots and the screencast! I find this flow really nice now. I also still don’t have a better term yet, but this is something we can easily change later.