Hello. I discovered Anytype a couple days ago, and I wanted to talk through some of my experience so far and get others’ thoughts and perspectives. For context, I’ve spent a fair amount of time working with object-oriented programming, but almost no time working with note-taking apps or systems. When I feel the need to write a note, I just open a new txt file in VS Code and start typing. So that’s where I’m coming from. I’ve got a bit to learn when it comes to creating good notes and organizing/connecting my thoughts effectively.
What caught my attention and prompted me to try Anytype is the idea that everything is an object, every object has a type, and every type can have properties. This is essentially a “class” in programming, so I was excited to see how it works in Anytype. There are a few things that are kind of tripping me up, though. Or things I just don’t find very intuitive just yet.
What I expected or hoped to find was something like a hierarchy of object types. For example, a base “Object” type containing properties that are common to all objects (creation date, last modified date, etc.), which all other types would inherit from. And the ability to create new types that inherit from existing types. So in other words, I could create a hierarchy like this: Object → Human → Friend.
This makes sense to me for several reasons. For one thing, it provides a clean tree-like data structure for me to visualize my space and design it as broad or as deep as desired. In terms of queries, if I want to see everything in my space, it’s just a set of type Object. If I want to see all humans, then it’s a set of type Human. And if I want to see all friends, then it’s just a set of type Friend. A Friend inherits all the properties of Human, and can also define properties specific to friends. In addition, child types allow properties to be defined more explicitly; rather than saying that a particular property references an object of type Human, you could more specifically say that it references an object of type Friend, thereby creating a more well-defined relationship.
From what I can tell so far, there isn’t really any concept of inheritance in Anytype. There is just one hierarchical level that all types exist on, which I thought was a little unfortunate. But then I also discovered from Charlotte’s deep dive video that Templates can be used to create something like pseudo child types. So under Human she created templates for Friend, Colleague, and Investor, and gave each of them their own specific properties. But they aren’t actually their own types (hence the need to create a “friend” tag to filter on when creating a set of friends).
So if I use the Friend template, I’m still creating an object of type Human. This creates some mental roadblocks in my OOP brain, because now it seems like I can’t be sure what properties a particular Human object will have. A Friend might have a “Met Via” property, and an Investor might have a “Fund Name” property, but a Human object itself doesn’t. Except that I guess somehow it actually does here, since these Friend and Investor templates do indeed create Human objects.
So how exactly do I conceptualize this? Do the properties on the templates just fall back to the Human type itself, meaning every Human object now has a Fund Name property even though that property might only apply to a small subset of Humans in my space? And if that’s the case, wouldn’t it make more sense to be able to just create an Investor type that inherits from Human, and keep the Fund Name property local to Investor where it’s intended to be used?
But this brings up another concept I’m trying to get my head around, which is that it seems properties (or Relations, as they’re called) aren’t even specific to the object types where they’re created. And you can even create properties outside of types all together, from the Library screen. So in that sense, the Fund Name property isn’t even tied to Investors or Humans at all; the entire space has equal access to use it. What if you have a property like Style, which means something in the context of one object type (paintings), but means something completely different in the context of another object type (vehicles)? Maybe on a particular painting object I want Style to link to a page about Impressionism, while on a particular vehicle object I want Style to just be a listbox where I can select SUV. I could be more explicit and name them Art Style and Body Style to differentiate them. But again, those properties which are kind of specific to Paintings and Vehicles are exposed to the rest of my space (Trips, Workouts, Recipes) where they aren’t even relevant, which feels very strange to me. It’s like this unpleasant sensation that everything is just floating around freely in space rather than being neat and structured and where it belongs.
The last thing I’ll mention is just that “Relations” doesn’t seem like the clearest term for what is essentially just properties, and it threw me off a little at first. Even in the documentation and guide videos, you’re told to think about them as properties, attributes, characteristics. So if they’re properties, then it makes the most sense in my mind to just call them that. I don’t think of things like Description, Status, Rating, Priority, etc. as relationships. I don’t even think of Author as a relationship, but rather as a property (of Book) which takes an object of type Human as its value. A relationship is implicitly formed as a result (Book.Author → Human), but Author itself is still just a property of Book.
I could probably write more on these topics, but I feel like I should just stop here and listen to some of the insights from other folks who have been using the app for a while and have a better grasp on how best to approach it. I think to a certain extent I might be having some trouble orienting my brain to think about things like a note-taker rather than a programmer. It’s possible the concepts I’m wrestling with aren’t even issues at all, and it’s just a matter of seeing them from the correct perspective. Is it silly for me to be thinking about things like inheritance hierarchies and data structures and type-specific properties in the context of a note-taking app? I don’t know. Maybe I should stop sweating the details and just start making some notes and see what kind of organization naturally develops over time.
Anyway, that’s where I’m at so far. I’m going to keep going over the docs and guide videos, and probably dig more into these forum threads as well, as it seems like there’s a lot of good information and ideas here. I’ll wrap this up by saying I really do like the app, even in the midst of this initial learning curve. It’s clean, fast, and I absolutely love the principles it stands on. Things like privacy, encryption, open source, user sovereignty and so forth. I feel like these ideas are essential for us to pursue as the world becomes progressively reliant on digital platforms and communications. So I definitely want to stick with Anytype if possible and support it however I can. Keep up the awesome work!