This is a prototype plugin, mostly AI-generated, use it at your own risk. Any feedback welcome!
Features
I built this because I want to host a single Discourse instance for several research groups, while making each top-level category feel more like a team space. The plugin turns top-level categories into workspaces and subcategories into channels. Each channel keeps its normal Discourse topics and also gets a paired chat channel.
The plugin also adds a team overview page, team-focused sidebar navigation, public and private channels, join and leave flows, guest access to individual channels, and archive or unarchive support for channels that should become read-only.
Here is how it looks:
Configuration
Install the plugin, rebuild Discourse, and enable discourse_workspace_groups_enabled in the admin settings. If you want the paired chat behavior, also enable Discourse Chat and configure it so category chat channels can be created and used.
To use the plugin, create a top-level category for a research group and convert it into a workspace. Its subcategories then become channels. The team overview page is the main place to create and manage channels.
If you want ordinary team members to create channels, enable discourse_workspace_groups_members_can_create_channels. If some top-level categories should never become workspaces, add their IDs to discourse_workspace_groups_excluded_top_level_category_ids.
Settings
Name
Description
discourse_workspace_groups_enabled
Enables the plugin and its workspace or channel behavior.
I really like what you’re doing here. I can certainly see something like this being appropriate for a larger org that wants to provide groups their own space to organize their communication amongst themselves.
Are you using this in the wild yet?
(I do see your caveat about it being a prototype)
Curious to hear what your real world experience is with it.
It’s fresh out of the oven, so I’m posting it also as an RFC. I’ll still need to develop a migration of a few gigabytes/a decade worth of Mattermost database into it before I can use this in production.
I made a migration plugin from mattermost (it’s a plugin because it uses a bunch of instance APIs). This is designed to work with the workspace plugin.
I imported a 2M messages instance mattermost into a discourse sandbox for testing.
Fixed a couple of minor glitches.
Everything works, the testers of the sandbox instance are overall satisfied
I find your plugin very interesting I haven’t installed it yet, but the ability to easily switch between a forum and a discussion in each category is ingenious. I think we can use it for other situations too.
My plugin is an extremely (maybe overly so) ambitious AI-implemented attempt to see if discourse can be made to approximate Slack/Mattermost/Zulip interaction and permissions models. By now it has a lot. For example, it manages group memberships, gives users capacity to create and manage categories and chat channels for a more dynamic workspace.
Some of its parts are related to existing features, but I haven’t seen anything coming close. I’m kinda impressed that it worked out—we’re using it for about a month