Hi Anytype team,
I’ve been exploring the new Collections 2.0 design, and I’d like to confirm that my interpretation matches what you’ve built.
From what I see, the old approach was type‑centric: objects were tied to fixed types, and crossing those boundaries (e.g., treating a book and a movie together based on “status”) was difficult. Collections 2.0 seems to flip that to a property‑driven model. Objects are essentially IDs with a set of attributes attached; the storage layer does not enforce any domain hierarchy. Collections are now dynamic queries that group, filter, and sort objects based on shared properties (like “status” or “due date”), regardless of their original type.
This feels like moving away from compile‑time domain modelling towards a more flexible, data‑oriented composition – almost like an ECS (Entity‑Component‑System) approach applied to knowledge management. It allows the same object to appear in multiple collections without forcing it into a single tree branch, and it makes cross‑type queries feel natural.
One nuance I’d like to add: even though the underlying architecture leans towards ECS, the user‑facing mental model still feels backward‑compatible with OOP – you can continue thinking in terms of “types” and “instances” if that’s what you’re used to. Moreover, the new context mechanism appears to add extra flexibility on top of that OOP‑like view, allowing objects to adapt their behaviour or presentation depending on the current context, almost like dynamic roles without the rigidity of inheritance. Is that a fair reading?
Now, a few questions to clarify:
Am I on the right track overall? Are there any hidden constraints – for example, do collections still depend on some underlying schema, or is it purely property‑based at the query level?
Does this architectural change affect how relations and sets are stored internally, or is it mostly a UX/API layer that sits on top of the existing storage?
And I’m particularly curious about the inspiration behind Collections 2.0. Was it influenced by similar products (like Notion, Tana, or others), or did it emerge more from internal refactoring needs and architectural reflection while evolving Anytype’s own codebase? Or perhaps something else entirely? I’d love to hear more about the design journey – it’s fascinating to see such a fundamental shift in a mature project.
Thanks for any insight you can share – I really appreciate the work you’re doing!