Expanding the functionality of objects/relations

Ok so I was thinking a lot about how Anytype can rise above other similar products and distinguish itself from the pack because I think we all love anytype and if we want it to be successful when it officially launches, it have to attract users from other products in order to be sustainable. Right now we have some bug players such as Notion, Coda, Obsidian and some new comers such as Capacities, Workflowy and even Craft. So far in my opinion the Object/relation of the Anytype is by far is the best and has the biggest potential. But I think for other users to be attracted into our community, Anytype would have to take another steps and more unique features which others don’t have and can’t implement in the short time. I was thinking about where to put this thread, but for now I think it can be considered as a general feedback/discussion type and if it was needed, we can create separate feature requests for it. but enough talking. let’s get to work.

What I have in mind

I have a couple of different workflows inside of anytype and during those, I came across a couple of ideas which I try my best to explain them. ok so now we can create any objects we want and then we are going to relate these objects together via the relation feature but this is just one-fold. Allow me to explain what I meant by one-fold.

let’s take a look at how we dealt with documents pre-Notion/Coda/Obsidian era. We would create separate documents and try to categorize them via placing them in folders and that was the extent of our efforts to collect our information together. Then with apps like Notion we basically abandoned the folder structure altogether and nested pages and documents in each other and with the additions of links and backlinks we connected our information. We can kind of consider the next step that happened to be the ability to add properties to these docs/pages/objects such as due date, assignee and etc.

Now hear me out. what if we were to apply this exact approach for our property/object/relation too. Allow me to explain with an example. I imagine creating a personal database such as movie/book database would be one of the more popular use cases for Anytype. Now I would create a type of object called “movie” and create a couple of relations for it such as “stars”, “director”, “awards” and so on. I would set all of these relations type as “object”. Now if I want to take it a step forward I would encounter a couple of problems; for instance imagine that a movie like “The Dark Knight” won the best supporting actor in the academy awards in 2008. If I want to add this kind of information to my object I would have a difficult time because sure I can create an object called “Academy Awards” and then add it under the “awards” relation but I can’t specify its year in this particular relation. I can either create another relation which is not clean and convenient or abandon the idea all together and settle for just the award not the year.

How can we go about widening the mentioned feature?

I’m not sure about the anytype team; maybe the future “relations as objects” feature will cover this too or they’re the same but if not I have a couple of idea on how to implement this.

Maybe it would be possible to add another level of functionality to objects and name it “property”. This way we can specify a “date” property for object and then we would be specify the year when we’re choosing “academy awards” under “awards” for our movie all in one “object” type relation. This movie example was just a simple use case for this idea. If we add another dimension to our objects/relations then it would way closer to our actual brain and maybe it can be Anytype’s unique feature over other similar products. you know this exact idea is like nested pages and folders.

How can it be implemented in graph view?

I think there are a couple of ways that we can go about this. One of them is the object being here the “movie” and “academy awards” are related and connected to each other via the “awards” relation. Since the object “academy awards” here is two-folded or multi-dimensional if you may, by Command+Clicking on it, all these dimensions such as year pop out and we can filter our the year and its value being “2008” so all the awards for that year and their connections are being shown and the normal clicking function on it shows its immediate connection such as its relation to “the dark knight” via “awards” relation and maybe over the line and next to the awards word we can show the year in a parentheses.

How it’s going to work with Sets?

I think that would be no problem since we have a set consist of movies, right? then one of the columns would be “awards” and its value for that particular movie can be the object, here being the “academy awards” and then next to it again in parentheses the year or any other property/dimension that we choose to show.

Or maybe the second way we choose to show this is adding the ability to the column to be not only the object " awards" but also its additional property/dimension such as year. This way the column will only show the “Academy Awards + year” value for that particular “movie”.

Final words

I apologize in advance if this discussion/feature proposal got a little bit lengthy and also maybe I could convey my intention clearly. Nevertheless I haven’t seen this functionality anywhere else even in Markdown world so I think it would great if Anytype would adopt it sometime in the future.

Initially I wanted to include a couple of my other suggestions like backup option, import compactly with other services such as notion, implementing further functionality in the graph view, how task/future calendar view could be a hit with the user base and many more but honestly, since these are not exactly feature request, I didn’t know how I could propose them.

I love this idea and immediately thought of this topic:

At first it might seem unrelated (because it is about Object Types), but it comes down to extending the flexibility of working with multiple Relations. I think your suggestion could be solved if “Relations as Objects” is implemented in the “right” way. Like we have Templates for Object Types, I can imagine that you can have Templates for Relations where you define a Relation called something like “Awards Won” which is a combination of Relation “Awards” (like “Academy Award”) and “Year” (2008). The only thing the template would do is create a predefined combination of one or more Relations that can be applied like any other Relation.

I hope that this makes sense :stuck_out_tongue: .

PS: The General category is definitely the right place for these kind of longreads, and I’m happy you took the time to write this topic!

you mentioned an interesting approach to expand the objects/relations and I guess yeah if the “relations as objects” implemented in a right way we can achieve that but I believe what I had in mind is a bit different than what you suggested, maybe I didn’t fully understand what you’re saying but let me explain.

Sure in this example we can create another relation/object which is a combination of two existing relations/objects but in this way we have to create new relation/objects every time we want to combine two of out objects/relations whereas I was thinking if we somehow added another layer/dimension to the existing relation/objects, then we could have endless possible combination and we wouldn’t have to create new ones every time. Also, this would open the opportunity to add different layers/dimensions to the existing objects without the need to create new ones. This way I believe would help the decluttering and the organization of our second brains. Let me give you an example for this kind of implementation:

consider that award thing again. The “award” was both a relation for the object “movie” and also an stand alone types of objects. Oscars and Golden Globe could be two of the objects of this type. Now if add another layer/dimension to this objects such “year” and different classes of Oscars such as “best picture” and “best actor” then in theory without any more effort we can create a new set filled with the oscars of a specific year. or another set filled with the oscars for “best actor” from all the years.

As you can see, this way eliminates duplicates and goes along way of making the process of adding objects and creating relations between them just as how our brain works way simpler and effortless.

that’s good then :sweat_smile: I will try to write these here in the general section to talk to testers and maybe the team before moving it to the feature requests. This way maybe I can further refine my ideas with the community.

Hmm, I think you are right about my suggestion for setting up templates. It is actually a similar discussion as the linked topic: composition vs inheritance/subtypes, meaning you will need to pre-define the combinations you need instead of allowing multiple Object Types (or Relations in this topic) to be combined.

Strike my suggestion for templates, your suggestion for adding properties to Relations makes way more sense! :smiley:

@ignatovv you might be interested in this topic :slight_smile:

yeah exactly.

:sweat_smile::raised_hand_with_fingers_splayed: thanks :blush: