How could shared spaces and collaboration work?

I keep wondering how shared spaces and collaboration could work in Anytype (and perhaps hear from the Anytype team how they are thinking about it). I’m really curious about it because Anytype is both more powerful and more complex than alternatives, and it will get even more powerful but also more complex as we move toward multiplayer.

There are two levels of sharing that I believe we will see implemented no matter what:

  • Space-level permissions: this is a traditional shared workspace where users have view, comment, edit, or admin access to all of the objects in the space.
  • Object-level permissions: this is about giving view, comment, edit, or admin access to specific objects. Like space-level permissions, it is pretty standard and would be the equivalent of giving access to a page on Notion.

So those two are, I believe, a given. But it would be interesting to see whether/how Anytype can go further than this.

Here is a scenario: let’s say that in addition to my personal Space, I am a member of two shared Spaces: my work space (shared with colleagues) and my family space (shared with my partner and with my teenage child). I want to be able to share some objects from my personal space with my colleagues and family, so that those objects show up in their spaces and/or personal dashboards. And conversely, I want to work with, in my personal Space, objects from my work and family spaces. For example, I would like to:

  1. Be able to share some (but not all) “event” objects from my personal Space so that they show up not just on my calendar in my personal Space, but also on the work and family calendars in those respective spaces.
  2. Be able to share some “task” objects between the three Spaces, so that I can see my tasks from the work and family Spaces into my personal Space.

I wonder what the best to achieve this would be:

  • Type-level permissions? This could enable sharing a type with other users or other Spaces (sharing with a Space means that all users who have permissions in that Space have the same level of permission with the type). When a type is shared with a user or a Space, all objects based on this type will be accessible by this user or Space. In example 1 above, I would have “event” type that I use on my calendar (this type is private and only I have access to my full calendar with all the Event objects) but also a second type called “raph-shared-event” that I also use on my calendar but that is shared with my family Space.
  • Relation-based sharing? This could be a special “Shared with” relation (akin to “creation date” and “last modified date”) which would grant permissions to whoever is added as value. But I believe that this would require the addition of another relation like “Owner” so that we can create sets that filter objects by the owners (so I can add, in my personal calendar, all the “events” type that have my partner set as “owner”).
  • Something else?

I like the exploration in this area and I like all the above ideas.

From a different perspective, perhaps I care about isolation or viewing angles. In my mind, everything should be linked somehow but they could be compartmentalised or should be segregated between themselves. (This is regardless of sharing to other people.)

Having a knowledge space, I would like to utilise it everywhere, but I don’t want knowledge space to view the contents of other spaces. Like going to the library, knowledge are in their pure form; you won’t find anything personal there. (Unless you are the sneaky one who wants to date the one who read the same book :crazy_face:). Good for public thinking or FR publishing.

At the same time, I would like other spaces to view the contents of the knowledge spaces (when connected), like bring notebooks to library, but the individual spaces can’t see how other spaces interact with knowledge space.

There is probably a few projects in workspaces. It would be great if they can be separated from each other, so there will be no chance to leak project specific information. Sub-space? If I have to create spaces for each project, there will be a lot of spaces.

I would like to have overview or personal perspective (space based or time based - not sure what’s better for me) where everything is linked and shared for my own evaluation but isolated from the other people/web.

For example, Project A links to Concept A, Project B links to Concept A.
Knowledge space / concepts should not see any projects.
Projects should not see other projects. (e.g. FR local graph)
Personal space should see everything.

Maybe the follow could work?

PS. I hope I am not making it difficult for the team yet again :sweat_smile:
PS2. This is why multiple obsidian vaults didn’t work for me.

@raph @C.c Thank you all very much guys for this topic with nice ideas. We are indeed working on collaboration. We will start with basic functionality and then progress step by step. We aim to address most of your ideas by developing proper external (with other individuals) and internal (within your spaces) relations/links and I believe this will cover most of your use cases. If you have more to share, please do so, It would be greatly appreciated and be a lot of help.

It is absolutely possible for shared spaces and collaboration to be implemented into anytype, while retaining the encryption and security features which make it desirable to use.

An example of a project that has this functionality (but is sadly dying out slowly, after it was bought out by a larger company and basically put into pause mode) is Keybase which I’ve always been a huge fan of. It contains “teams” as well as encrypted private or public git repositories that can be accessed from the individual user, team or public facing levels. A decent amount of stuff from Keybase is open source or at least has been discussed openly enough to give ideas on how to incorporate some of their better ideas into anytype, should such a thing be desired.

I’m using AnyType as my task manager. The Kanban is great, looks beautiful and feels amazing. But I can’t use it for managing bigger projects that involve my team. Still using Notion for that.

Would love to fully replace Notion with AnyType