nextcloud / nextcloud/server

Circles, contact groups and user groups

Open
#13,478 28 comments 27 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop enhancement feature: contacts feature: teams feature: users and groups standardization
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

Problem

We have so many grouping mechanisms and they are confusing for people that don't know the technical background of them. We should unify the way those are handled into a single way of grouping users.

  • circles
  • contact groups
  • (system) user groups
  • federated groups
  • ...

Idea

Idea is to have some grouping entity that is the only way of organizing a group of users and contacts.

Additionally a layer is added to the server to share to some grouping entity only and not to groups, users or federated users anymore, because those are 3 concepts that basically do the same: share something to 1...n users.

  • each user is at least in one of those groupings (the grouping with only the user itself) <- that is used to replace user shares
Attributes
  • this grouping entity has a name (random one by default)
  • this grouping entity has a type (single user, group of users)? - can be build with permissions (no adding/removing permission for anybody for the single user type)
  • this grouping entity has a permission who can manage it (joining, adding, removing users, change name)
  • this grouping entity has a visibility

Steps

  • discuss the idea (right here in the ticket)
  • define the scope and specs
  • implement this grouping mechanism (which exists in parallel to the existing ones and undisclosed to any UI)
  • implement sharing part
  • migrate user shares, groups, circles, contact groups
  • remove existing shares, rooms, circles, ...

Note: the last two steps need to be done in one release. The other ones can be done in separate major releases to be able to move this forward and not have one huge changeset that nobody can review properly.

Problems

  • the UI needs to make it easy what this grouping entity is about (admins, permissions, visibility)
  • the UI needs to make it obvious where this grouping entity comes from to avoid phishing attacks by creating a similar looking entity via federated groups for example
  • for migration: what about existing collisions? if there is a circle, a group and 3 contact groups named the same? - during migration, we can add something at the end of the name
  • how are the groups managed? User mgmt and Contacts? And additionally inherent grouping using "Linking Collaboration Things"? (Ideally the name "Circles" does not show up – it’s just "users" and "groups")

Other approaches

Linking collaboration things™ - #11015

  • links a random entity (room, file, board, ...) to another one and each user that has access to any of them then they also have access to the linked ones
  • it's still different, because the goal is not to group users but to group data objects

Design forward: How we handle Users / Groups / Circles - #4493

  • this one is another approach to not evolve but rethink the whole concept to not be limited by the existing structures

cc @skjnldsv @juliushaertl @rullzer @jancborchardt @ChristophWurst @danielkesselberg @blizzz @schiessle @nickvergessen @daita for feedback on this topic.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the proposed grouping model, its listed migration steps, and the linked approaches in #11015 and #4493. The issue first requires discussion, scope, and specifications before implementation; completion would require the grouping and sharing mechanisms, migrations, and removals described here, with the UI concerns resolved.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design, full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.