워크스페이스 그룹

:information_source: Summary Prototype plugin for using one Discourse server as a home for multiple teams (slack- or mattermost-like).
:hammer_and_wrench: Repository Link GitHub - akhmerov/discourse-workspace-groups · GitHub
:open_book: Install Guide How to install plugins in Discourse

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.
discourse_workspace_groups_members_can_create_channels Allows non-admin members of a workspace to create channels.
discourse_workspace_groups_excluded_top_level_category_ids A list of top-level category IDs that should never be treated as workspace candidates.
9개의 좋아요

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.

5개의 좋아요

Thanks!

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.

3개의 좋아요

I have an update here:

  1. 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.
  2. I imported a 2M messages instance mattermost into a discourse sandbox for testing.
  3. Fixed a couple of minor glitches.
  4. Everything works, the testers of the sandbox instance are overall satisfied :tada:
4개의 좋아요

I’m testing out the plugin and I can’t see anywhere to convert a category into a workspace - where do i find that?

Hey! Cool that you want to try it!

About converting: the site admin should see a button on an empty top-level category, next to the new topic button.

1개의 좋아요

I find your plugin very interesting :+1: 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.

I built this a while back.

This creates home spaces for different primary groups.

how is this conceptually different, out of interest?

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 :upside_down_face:

3개의 좋아요

It looks great. I’m considering trying this. Wondering whether there are any significant issues flagged with this plugin by existing users?

Some people were unhappy about the chat experience not being as polished as in team-chat-oriented apps, much of it specific to discourse rather than the plugin. No significant issues, but I would only recommend this to someone that is familiar with discourse administration, and preferably also with agentic coding.

The plugin is likely OK out of the box, but it might miss things that you need.

1개의 좋아요

문제가 하나 있습니다.

워크스페이스에 있을 때, 일반적으로 홈페이지로 돌아가게 해주는 사이트 로고 링크가 현재 있는 페이지로 이동합니다.

현재 URL과 호버 시 표시되는 사이트 로고 링크 URL을 비교한 스크린샷입니다.

수정하여 추가: 또 다른 문제를 발견했습니다

새로운 워크스페이스를 만들었을 때, 사이드바의 팀 섹션에 두 개의 워크스페이스가 모두 목록에 나타났습니다. 처음 만든 워크스페이스로 이동하면 다음과 같은 워크스페이스 뷰가 표시됩니다:

하지만 만든 두 번째 워크스페이스로 이동하면 일반적인 사이드바가 보입니다.

조금 특이하지만, 의도적으로 그렇게 만든 것입니다. 팀 ‘안쪽’에 있는 경험을 재현하고 싶었기 때문에 고정(sticky) 방식으로 설계했습니다. 워크스페이스를 나가기려면 아래에 있는 전환 아이콘(화살표 두 개가 서로 바뀌는 모양)을 사용하세요.

아, 이제 이해했어요. 제 피드백은 Docs Categories 플러그인과 관리자 영역과 일관성이 없다는 점입니다. 해당 영역 사이드바 상단에는 ‘포럼으로 돌아가기’ 링크가 명확히 표시되어 있어서, 어디서 클릭해야 나가야 하는지 직관적으로 파악하기 어려웠거든요.

1개의 좋아요

좋은 지적이네요. 좀 더 생각해 봐야 할 것 같습니다. 전체적으로 이 플러그인의 설계 목표는 디스커스 레이아웃을 확장하는 것이 아니라 수정하는 것입니다. 제 생각에는 사용자들의 99%가 워크스페이스에서 시간을 보낼 테니까요. 예를 들어 다음 반복 개발에서는 로고를 변경하고 패널을 더 개선할 계획입니다.

1개의 좋아요