Community maintainership sucks, it's all-or-nothing. You can't (for instance) add someone just to let them style the comm without them being able to demaintainer you and totally hijack the community.
So, we break down 'maintainership' into multiple maintainership edges. The community 'owner' (the current 'maintainer') is the only person who can add/remove other maintainer edges at first; over time they can add others. (Adding another person with a "can control ownership" edge requires lots of confirmation, because that's the one that will let other people demaintainer you.)
We instead do it like Bugzilla does it -- you have membership in access control groups, and each group can do different tasks. You also can specify whether people have the ability to grant others membership in that control group.
This also has the benefit of removing the maintainer/moderator distinction (which is incredibly confusing, since in the wild people use 'moderator' to mean what the code calls maintainership). We make 'can control the mod queue' an edge.
Sample maintainership edges:
- Can add and delete comm tags
- Can edit tags on a comm entry
- Can control comm style
- Can control comm memories
- Can change comm settings at /manage/settings/?authas=comm
- Can change the settings at /manage/profile/
- Can screen or delete comments
- Can ban or unban users from the community
- Can report spammers
- Can add or remove posting access to the community
- Can remove community membership
- Can manage the moderation queue
- Can edit, delete, or flag posts made to the community
- Can upload userpics for the community
- Can wear the mod hat
- Can invite people
- Can approve requests to join the comm
- Can access community's recent_comments.bml page
- Can add other owners
- Can remove other owners
- Can add people into each of these groups
- Can remove people from each of these groups
Only a community 'owner' can add or remove other owners.