Stealing some headwind from today’s meeting to start the “3rd party apps asking questions about what actions individual users are allowed to take” conversation.
IIRC @pfrazee.com boiled it down to “as a third-party service, should I show this button to this user or should I not?“. And indeed, it’d be a poor experience if the only way users had to find out whether they could do something like “Add a group event”, “Join this group” or even “Ban this member” was to try clicking this button and see if it works. It also definitely would be a pain, as a downstream App, to have to repeatedly intuit visibility from Lexicons whose semantic may evolve at any time.
Personally, I think this is also a great way to abstract roles and moderation. Sure, you do need further layers of “shared semantics” there, but a prominent way roles and moderation impact downstream applications is: what is this specific member allowed to do or see? Can they join the group? Can they participate in specific group’s activities? Can they decide who can join the group and participate in specific group’s activities?
If we figure out how to answer this question in a generic way—maybe even beyond groups!—then it’ll give us a lot more flexibility at the moderation and role-definition layer, and it will make writing downstream applications (like atmosphere.community) infinitely easier.