Continuing the discussion from Here’s my Categories as Sub-Reddit / Sub-Discourse Idea:
At Fatal(Syntax)™ we aim to facilitate the exchange of ideas. – Specifically we’re looking to use Discourse as a way to collaborate on designing several RPG campaigns.
Right now we’re testing this idea among a small group of close friends. As we start adding more projects and more users, we’re going to hit a wall in the not-so-distant-future.
As it is: we can’t segment off multiple projects without category explosion happening.
My goal is to implement the “sub-discourse” idea as a plugin, however I’m going to bolt on some interesting changes to the way permissions [trust] is applied across sub-discourse’s.
This includes: abilities to read and write to a sub-discourse, ability to password protect a sub-discourse, and the ability to scope moderation to one or more sub-discourses.
The status quo
Discourse offers categories as the only means to effectively separate discussions.
Many moderation features are site-wide, and they cannot be “scoped in” to a
particular area of discussion.
You cannot “wall off” areas of the site.
Public/Private is a site-wide choice
All categories have the potential to be ranked and displayed on the front page.
A proposed solution:
Discourse Arena’s are a proposed sub-category/sub-discourse system that aims to fix the problems above:
An arena has simple, orthogonal dual-mode “read &write” permissions.
You can require a minimum trust level for viewing the arena.
You can require a minimum trust level for posting/replying to a topic in the arena.
You can also simply mimic the default settings of the
All other features [such as image limits, etc.] remain the same as the main arena.
An arena can be password protected and optionally marked as invisible.
An arena can optionally be excluded from the main arena’s topic listing.
Rather than an “all or nothing” approach, arena’s provide a safe way to segment discussion and provide a configurable level of independence from the main arena. The plugin will require you to have one arena, the main arena. This arena will be non-optional, and non-removable.
The main arena will be displayed as the site’s name [wherever arena’s are displayed] and it will be an overview of the discussion for your entire site. If you installed this [non-existent] plugin today, by default, all your posts and categories would be in the main arena.
All arenas will be shown on a separate menu, whose position will be based on available screen-real estate.
By default it will showup to the right of the topic listing.
If the width of the viewport is too narrow to support this, we will put an expandable menu up in the “user tray” as a fourth button to the right of the categories menu.
If an arena is configured to display its topics in the main arena, the ranking of those topics will compete with the topics of all other arenas. (In other words: one big popularity contest.)
Arena’s can [optionally] have a weight attached to them, to float or sink their post(s) as a whole. (For e.g: perhaps you’d want the Politics and Religion arena to be sunk to the bottom so it doesn’t garner too much attention from the front-page traffic / incoming search traffic.)
Apart from this, there is no way to influence the ranking of an arena’s post(s) in the main arena’s topic list.
If an arena is set to display in the main arena, but requires some minimum trust level, it will effectively render all posts as though the “invisible” flag were set to true. Writing permissions would disable the
new topic functionality (along with their corresponding UI features) if a user does not meet the minimum trust level.
Moderation of arena’s
This would be the most fundamental change to
Discourse which is why I have left it for the end.
For my use case: it makes sense, in the context of multiple projects, that moderator(s) should have limited control over other forums.
Moderator-trolling is the worst trolling. – In the context of multiple [potentially competing] projects, I don’t think moderator’s should necessarily be trusted w/ the arenas of other projects. – At least, not initially.
At a minimum: there should be an intermediate trust step between sub-arena moderators and main-arena moderators.
As it is today: moderators can only be assigned from the
/admin/users panel of Discourse. Working with the UI as it is, I think the functionality would work as follows:
Next to the “Grant Moderation” button there will be a drop-down which selects from the available arenas.
By default this will select the main-arena (e.g: apply site-wide).
Alternatively there will be
main-arena-ONLY (where the moderator would not have access to moderate sub-arenas) – as well as a full listing of sub-arenas.
Upon clicking the “Grant Moderation” button, the [sub-]arena will be (A) removed from the drop-down menu, and (B) added to a listing of arenas they can moderate.
Next to their bullet in the listing, there will be a button to remove that
arena from their listing.
main-arena is in their list of moderated arenas, then no further arenas
are applied to their permissions context.
Further arenas will still be available for selection, even if the user has been assigned to the
main-arena. This way, if the
main-arena context is removed, the user simply goes back to moderating their previous set of arenas.
The major point of contention [that I can see] is the changes to the moderation system.
As such: I hope to develop three features, in parallel, as separate plugins.
The latter two will, of course, depend on
Aside from that: I aim for there to be no dependencies between the three plugins.
arena will provide you with the ability to add/remove arenas.
This will act as a convenient “sub-discourse” option for people who desire it.
However all moderation/trust will remain AS-IS.
This WILL include the ability to password protect an entire arena.
This WILL NOT include the trust-based read&write permissions.
arena-ranking will give you some basic abilities to adjust
the ranking of sub-arenas in the main-arena topic listing.
arena-permissions will include all permissions and moderation
modifications which will further segment sub-arenas from the main-arena.
Thanks for reading this far, I welcome questions, comments, and criticisms.
I hope to put up a public fork on github in the near future. – I’ll be starting w/ the base
arena plugin, as I think it’s applicable and useful for a large number of Discourse installations.