Types & Config
Biggest change in Circles 22 is the replacement of ‘Types’.
In older version of the App, you could set a Circle as Personal, Public, Closed or Secret at the creation process.
This have be replaced by a ‘Config’ flag that can be stack on top of each other, and changed at any time.
Some flag are only available to Circles create by users, others can be managed by the Circles App or by an external App.
-
VISIBLE: Circle is visible to everyone. If not set, only members
will be able to view the Circles in the list. -
OPEN: Users can join, or request to join the Circle
-
INVITE: Adding a member send an invitation that needs to be accepted by the recipient
-
REQUEST: Users needs to send a request to be member, request needs to be accepted by a Moderator
-
FRIEND: Members can invite users to the Circle (By default, only Moderator are able to do that)
-
ROOT: Circles cannot be a member of another Circle (Nested Circles)
-
FEDERATED: Circles is Federated (ALPHA)
Those config flags are not available to users, but only to apps that
want to create/manage System Circles:
- NO_OWNER: Circles have no owner.
- HIDDEN: Hidden from the listing, even to members, but available as a
share entity - BACKEND: Fully Hidden, only used for backend purpose
- LOCAL: Local, even in GlobalScale setup
Behind the Circles
Better API
If you need information related to Circles from the front-end, you can use the ocs api. This is the API used by the Contacts app to manage circles and members.
The back-end also comes with a new API. It is not yet fully integrated to core, but you can load the Manager using:
$circlesManager = \OC::$server->get(\OCA\Circles\CirclesManager::class);
The CirclesManager comes with a minimum of functionality, and more will comes in future version. If you have any questions, do not hesitate to ask in here.
Complete documentation is on its way.
SingleId
Circles are identified by a unique ID. But not just Circles, any entity that interact with the app got its own unique ID, that we will call ‘SingleId’
You can force the generation of SingleId by running occ circles:sync
or just wait for the App to generate one when needed.
As an example:
As you can see, Nextcloud Groups have been duplicated as a SYSTEM/NO_OWNER/HIDDEN Circles and, like Nextcloud Users, have their own singleId.
One of the idea behind this identification of Entities is to standardize the
sharing system in the future.
Nested Circles
You can invite another Circles within a Circles and there is no limit to your imagination.
This way, a file shared to the Top Circles will be available to the members of any downstream Circle.
To avoid exponential use of resources when facing huge cascades of Circles within Circles, direct memberships and inherited memberships are cached in a specific table.
Federation
While already available, this is an ALPHA feature that will be available in NC23.
The idea behind is that you can set a Circle as FEDERATED. Meaning
that its content will be shared to an other instance of Nextcloud.
Quick overview: you can identify a remote instance of Nextcloud as friendly and assign a level of Trust.
In a GlobalScale setup, the trust is maximum and all Circles are shared between each instance of the GlobalScale.
If the remote instance is not considered as GlobalScale, only Circles set as FEDERATED are shared. The lowest level of Trust will hide the members that does not belongs to the remote instance.
I consider this as the main feature of Circles as the end-game is a fully decentralized network of instance of Nextcloud, not just for files, but for any app that wish to use Circles’ API.
More about this in the incoming documentation.
FAQ
During the presentation earlier today, I saw some questions about the App, here are the awaited answers.
Disabling the App
As of today, with NC22.0.0, you can still disable Circles.
But this should not be possible in future version of Nextcloud.
The idea is that some apps might needs some features from the App.
However, it will be possible to block your users to create Circles.
Quotas
No. The Circles app will allow in a future version to add a config flag to generate a default folder available to all members of a Circles. However this folder will not be included in the quota.
However, we will work on a way to add Circles to the group folders app.
Migration from NC21
Yes, your old Circles will still be available in NC22. The type (public, closed, secret) will be removed and translated to the new ‘config’ system.
Please note that Circles cannot be password protected yet.
This will be implemented as soon as possible. Hopefully for NC22.0.1