The-Commit-Company / raven

Simple, open source team messaging platform
https://www.ravenchat.ai/
GNU Affero General Public License v3.0
300 stars 125 forks source link

FR: Communities on Raven #679

Open NagariaHussain opened 7 months ago

NagariaHussain commented 7 months ago

Add one more layer on top of channels: "Community" (similar to a Discord Server). The super admin or system manager should be able to create new communities, mark them public (e.g. "Frappe Builder Public") or private (e.g. "Frappe School"). Any user can join a public community, but private communities either require an invite or an approval to join.

Thought: maybe the user who joins a community should be added to all public channels of that community?

Related: https://github.com/The-Commit-Company/Raven/issues/680

linear[bot] commented 7 months ago

RAV-74 FR: Communities on Raven

nikkothari22 commented 7 months ago
  1. Organisations can be private or public.
  2. To access any channel within an organisation the user must join the organisation (whether via invite or if it's public just by searching)
  3. All perm checks for private channels will be the same (user must be a member). In public and open channels, we need to check the org membership
  4. Users can also leave (or be kicked out) of orgs. In such a case, the channel membership needs to be deleted (Raven Channel Member).
  5. Users on a site can still DM each other - irrespective of whether they have a server in common (similar to Discord). The org structure is only for channel management.
  6. Each org can have multiple members, and some members can have enhanced rights for that particular org (ability to create a channel etc)

Potential impact:

  1. APIs with permission checks
  2. New doctypes for Org, Org membership.
  3. New role for "Raven Admin"
  4. Invite system based on unique codes
  5. Perm checks on search operations - only for open and public channels. We will now have to check for org membership. Best solution is to simply limit searches in one organisation.
  6. Unread counts for channels might get complicated especially if the number of channels increase.

No impact:

  1. Chat stream, reactions, replies, other actions
  2. Integrations
  3. File search within a channel
ankush commented 6 months ago

@NagariaHussain I don't believe this is really required. We can work with single large community server with multiple channels for communities. The same way we run discuss.frappe.io.

NagariaHussain commented 6 months ago

How do we model TG groups with channels? IMO this will help us organise well.

rmehta commented 6 months ago

@ankush the idea is to use Raven for both Frappe's internal TG and the community. Agree we don't need orgs for products, the community can be one big group. But we have 3 distinct groups

  1. Community
  2. Frappe
  3. Partners
ankush commented 6 months ago

@rmehta they can just be 3 distinct sites? :sweat_smile:

Site based isolation is also much better for security. No way to mess it up.

rmehta commented 6 months ago

@ankush We also wanted to explore this for providing enterprise support for customers (each customer in a separate org). But this is not the primary case. We can use multi-site for now 👍