I must say, since I started using Anytype, the biggest frustration and surprise to me was the lack of a sidebar and traditional “tree” navigation. There seems to be the concept of page parentage, i.e. sub-pages, so the structure is there. But it is handled much more like mobile home screen nav, which is extremely limited as number of pages grow, and makes it needlessly difficult to navigate, create and maintain good hierarchies, etc. This kind of navigation paradigm was really created for mobile because of limited screen space, but here on desktop a proper page tree would really be ideal, I think.
Other apps like Notion and Fibery are certainly able to harmonize things like backlinks, aliases to pages, etc. with a tree structure. So that should not be a blocker.
Make a sidebar with tabs that have the name of the page it renderes.
The user can create new tabs and selects which page should be rendered.
Each tab renderes only the page-tree starting at the page it renderes. All page-objects except for “Link to page” are ignored (mentions too).
The state of this sidebar should be able to be synced to other devices.
Make a sidebar for the left and the right side.
I suspect that this makes it fairly easy to implement because you “only” have to implement the new way of rendering a page-tree, the syncing of a custom setup and the additional sidebar(s) for the GUI. The only difficulty I see is how folding of the tree-structure is maybe saved and synced to other devices.
@HaosGames I’m not sure I really understand your idea. It seems to me that tree-based navigation is a solved problem. Notion exemplifies it well and it works great IMO. Is there a reason to do otherwise, some advantage?
@Oshyan I know it might be a solved problem. I think that reusing a bunch of implementation that was already done on syncing pages and so on may be the key here. Because you are only rendering pages and not creating a new way of saving and syncing a tree structure. I wanted to kind of highlight the aspect of reusing code and making things more generic and flexible. I am no Anytype developer but I sort of understand how IPFS and Textile work and assume that things might be more tricky when it comes to syncing and saving. Because of that I tried to explain my way of implementing it to give the developers another suggestion;).
@HaosGames A tree is just a way to represent the organization of the underlying data structure visually to the user. It doesn’t even necessarily have to have much to do with how it’s “actually” stored in e.g. IPFS. So I hope there are not development-related blockers to implementing such a view. But I’m no a developer, so I have no idea.
Just to also weigh in on this - that sidebar is sorely missed - see Evernote, Notion, Joplin, etc. - I always structure my notes in some kind of hierarchy, the rationale behind that is to have clear “entry points” and drill-downs into my notes.
I understand that the upcoming object linking (?) will be basically be a graph and not a tree, so I’m curious how that structure will appear in the sidebar.
How about a page that has all the links inside with a tree structure (and that’s entirely possible rn) and that you can “pin” on the right (or left or top or bottom) and use it to navigate since it’s pinned?
And being a page you can also replace it with another (or navigate inside a subtree?)
@Pandry I don’t understand why this is easier. It still requires creating a new feature: this “pinning” you mention. Dedicated tree navigation is common and well understood by most users. I’d like to see both tree nav and a sidebar/pin page feature.
@Oshyan I don’t know the AnyType codebase, but if it is the way I think it is, adding a pinned page is a matter of “just” showing it in the GUI (and hooking the pages click), as opposed to integrating the whole new feature (and thus the data model behind).
I believe creating a tree as a new object kind “per se” might be a bit more complicated task, as it involves thinking about a new data model for the tree, when (Imho) we already have the pages, that could satisfate the requirement
@Pandry Interesting. I don’t know the code base either, but my intuition doesn’t necessarily agree with yours. If they don’t have the concept/code for “pinning” a page at all, i.e. a sidebar, then they at least have to create that. The data model for page linking already exists. Visualizing that may or may not be fairly trivial.
In your concept would the tree have to be created and maintained manually by the user? If not, aren’t you describing basically the same thing, just using some existing components/capabilities (links and blocks and pages)? If it uses existing capability but is auto-generated, would it also be user editable? If yes, what would happen to the auto-generation process if a user edits it?