tl;dr: Leo might add only incremental improvements inspired by Trilium Notes. All fundamental aspects of Leo will remain as they are.
Leo's body pane
Yesterday, I proposed that Leo's body might contain either text (p.b) or graphics (the VR pane). I now think that's a dubious idea. Instead, the VR pane could (optionally) be a separate window.
Swapping the contents of the body pane creates more problems than it solves:
- The UI (and its rationale) becomes significantly more complex. There are hidden rules at work.
- The UI prevents users from seeing both p.b and the VR pane simultaneously. Trilium sometimes works around this problem by showing the source and results in the same pane.
- Leo's body pane is anchored and can't expand or move.
Allowing the VR pane to be a separate window solves all these problems.
Trilium's strengths
Trilium emphasizes graphics throughout.
I particularly like the demo of Mermaid Diagrams. Mermaid is a Javascript project. Several vs-code plugins support such diagrams, so LeoInteg and LeoJS already have access to Mermaid Diagrams! The Python world has python-mermaid, so Leo's VR plugins could support Mermaid too.
Trilium's weaknesses
Trilium undervalues the power of text:
- There is no minibuffer and no way to execute commands by name. There are no menus! Instead, small icons must suffice.
- Organizer nodes contain "preview cards" (my term) that show rendering descendant nodes. There is no obvious way to create text summaries of a sub-tree.
- Trilium can not create external files. Unless I am mistaken, one can only export nodes.
Ideas worth emulating
Trilium nodes often show the "attached" css and Javascript. These views seem like the inverse of Leo's @button scripts. Some possibilities for Leo:
-- A new p.css property. This property would contain css that modified the view of p.b or the VR pane. Setting this property might require a new UI element.
-- A new p.ui_script property. This property might contain the rendering script in effect for the node. For security reasons, this property must not be settable.
As discussed in a previous post, the VR plugins could render @rst-tree nodes using all the node's descendants. And Leo's rst3 command might support @graphics and other VR-related nodes.
A plugin-base VR architecture
Leo's existing VR and VR3 plugins are monolithic. Both plugins would benefit from a more modular organization.
Summary
Changing the rendering of Leo's body pane is a dubious idea. Instead:
- As an option, the VR pane could become a floating window.
- The VR pane could use a modular architecture based on plugins. I look forward to discussing this topic with Thomas.
- Leo's rst3 command might support VR-related nodes.
I welcome all comments.
Edward
This Engineering Notebook post contains second thoughts about Trilium Notes.tl;dr: Leo might add only incremental improvements inspired by Trilium Notes. All fundamental aspects of Leo will remain as they are.
Summary
Changing the rendering of Leo's body pane is a dubious idea. Instead:
- As an option, the VR pane could become a floating window.
- The VR pane could use a modular architecture based on plugins. I look forward to discussing this topic with Thomas.
- Leo's rst3 command might support VR-related nodes.
This Engineering Notebook post contains second thoughts about Trilium Notes.
Trilium's weaknesses
Trilium undervalues the power of text:
VR/VR3 basically work in a way that could be more modularized, I would think. Basically, the plugin must:1. Figure out what kind of node it is looking at, usually by page directives like @language;2. Send the contents of the node or subtree to some appropriate code that transforms it into HTML;3. Send the HTML to a rendering engine;
On Fri, Apr 26, 2024 at 8:02 AM Thomas Passin wrote:>> As an option, the VR pane could become a floating window.> This is already possible, at least with VR3. With VR3 enabled, right click on the boundary between two frames to get the splitter menu. Select Window then VR3. VR3 opens in a new floating window.Surely this can be done w/o Terry's Easter Egg.
Trilium emphasizes graphics throughout.
I particularly like the demo of Mermaid Diagrams. Mermaid is a Javascript project. Several vs-code plugins support such diagrams, so LeoInteg and LeoJS already have access to Mermaid Diagrams! The Python world has python-mermaid, so Leo's VR plugins could support Mermaid too.
--
You received this message because you are subscribed to the Google Groups "leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to leo-editor+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/CAMF8tS1WZmuDxfRg8vU-oWsXKRZOoKSqn2ZP0cGX0Duw_5ys4A%40mail.gmail.com.
On Friday, April 26, 2024 at 1:52:49 PM UTC-4 gates...@gmail.com wrote:
The Easter Egg is the only way to expand the VR pane. An optional floating VR window would solve that problem.
The Easter Egg is the only way to expand the VR pane. An optional floating VR window would solve that problem.Here you go:ns = c.free_layout.get_top_splitter()
ns.open_window('_leo_viewrendered3')
And thanks for all the comments. They have all been helpful.
Let me summarize the discussion so far:
- I'm convinced. Replacing the body pane is a preference worth considering.
- That preference should also allow opening the VR pane as a separate window.
- A modular architecture for the VR pane (including VR3) is a separate issue.
I'm interested in both issues, but neither is an urgent priority.
Let's continue this fruitful discussion!
Edward
>Trilium's weaknesses:
>There is no minibuffer and no way to execute commands by name.
True, but not fundamentally blocked. In the Awesome Trilium list is a js plugin for adding a command-palette. I imagine it's modelled after vs-code's Ctrl-Shift-P
type-name-looking-for.
>There are no menus! Instead, small icons must suffice
yeah, I'm not so fond of there being no menu at all. Mitigating that a bit is the F1
popup quick reference for the most used keyboard shortcuts. It is excellent.
Trilium can not create external files. Unless I am mistaken, one can only export nodes.
Yes, a big difference and a lack from my perspective.
Fundamental differences (observed so far):
Leo is plain text first, and achieves rich text and media by rendering. Trilium is rich text and media first, with the primary entry mechanism through the 3rd party CKEditor which saves as html. This is the foundational split behind the whole VR and multiple panes (pains? heheh) vs single pane thinking and attendant mitigation machinery. Trilium doesn't have to think about rendering hardly at all, since it's the embedded browser that does that.
Leo uses the file system for storage and Trilium uses sqlite. This gives Leo its external files extended abilities very nearly for free. For Trilium to adopt such features would be an exercise of some effort. Otoh, being able to run sql queries across all nodes can't be anything but powerful. (In Trilium access the SQL Console via Alt-0
or the flower logo at top left; yeah, speaks to lack of menu).
It's this db backend which enables syncing one's entire KB across all devices in a pretty much set-and-forget manner. It's almost as good as Fossil SCM in this regard. This is very, very attractive.
Another Trilium limit: there's only a single knowledge database. ALL your Trilium work is one place. There is discussion on a future with multiple db but nothing substantive that I've seen. I'm new to the space and might be missing the action though.)
-matt
--
You received this message because you are subscribed to the Google Groups "leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to leo-editor+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/CAMF8tS2UMXdzzfz2jvCRzQj8x6NRRF4yoK_OjEedFfkJ5dG0UA%40mail.gmail.com.
It is possible to try out having VR/VR3 display in the same frame as the body editor. You can get them both into the Log frame.
A screen shot illustrating this layout is attached.
Hi,
I think that Edward does not appreciate how often users want to use Leo as an Notebook as opposed to a writing tool. For a notebook, one wants to include all kinds of material, text and graphics, and then look at and read it many times. For writing, developing code, and so on one mostly wants to edit and read text. Trillium by default, it seems to me, shows you a rendered view of its nodes and makes it harder to edit and work with the content. Leo makes it easy to edit and work with text, but harder to insert and look at rendered graphics, etc.
Think about how Jupyter notebooks are usually used. It's great to be able to develop your code in one, complete with graphics and notes. But once developed, they are generally shared as a set of HTML files, and only looked at not edited. VR3 can display those files using an @jupyter node type. Any text display would only show the raw html, which is essentially useless and distracting to look at.
Regarding taking inspiration from other tools that try to develop
code in another way, bridging the gap between code, graphics,
prose and other representations, Lepiter, brings several views of
the same or of specialized information, as you can see in the
tour[1]. And regarding the notebooks publishing format, that can
be used to be viewed *and* edited, in contrast with HTML or ipynb
that favor one or the other, respectively, our MiniDocs tool[2],
brings some of the lessons learned while developing
Grafoscopio[2a] since 2015/2016 to Lepiter (released on 2021). In
[2b] you can find some advantages of the format combination we are
using (Markdeep + STON) over more popular formats, like Jupiter's.
In such format you can create pretty complete data stories like
the ones in [3] and [3a].
BTW, Edward said some time ago and with a lot of justification
something in the lines of how impressive it was that a tool like
Pharo didn't have an advanced note taking system inside the tool.
Now with Lepiter[1] this is being solved. And for the curious
reader, the front page video presentation about the Glamorous
Toolkit has been actualized in [4].
Cheers,
Offray
=== Links
[1]
https://lepiter.io/feenk/introducing-lepiter--knowledge-management--e2p6apqsz5npq7m4xte0kkywn/
[2] https://code.sustrato.red/Offray/MiniDocs
[2a] https://mutabit.com/grafoscopio/index.en.html
[2b]
https://mutabit.com/repos.fossil/mutabit/doc/tip/wiki/en/markdeep-extended--3t85t.md.html#appendix
[3]
https://mutabit.com/repos.fossil/gig/doc/trunk/wiki/en/gig-portable-wiki--1apbv.md.html
[3a]
https://mutabit.com/repos.fossil/mutabit/doc/trunk/wiki/en/petitparser-building-modular-parsers--ac8zq.md.html
[4] https://gtoolkit.com/
Hi,
Leo is plain text first, and achieves rich text and media by rendering. Trilium is rich text and media first, with the primary entry mechanism through the 3rd party CKEditor which saves as html. This is the foundational split behind the whole VR and multiple panes (pains? heheh) vs single pane thinking and attendant mitigation machinery. Trilium doesn't have to think about rendering hardly at all, since it's the embedded browser that does that.
Leo uses the file system for storage and Trilium uses sqlite. This gives Leo its external files extended abilities very nearly for free. For Trilium to adopt such features would be an exercise of some effort. Otoh, being able to run sql queries across all nodes can't be anything but powerful. (In Trilium access the SQL Console via
Alt-0
or the flower logo at top left; yeah, speaks to lack of menu).It's this db backend which enables syncing one's entire KB across all devices in a pretty much set-and-forget manner. It's almost as good as Fossil SCM in this regard. This is very, very attractive.
Another Trilium limit: there's only a single knowledge database. ALL your Trilium work is one place. There is discussion on a future with multiple db but nothing substantive that I've seen. I'm new to the space and might be missing the action though.)
-matt
In Grafoscopio's case (Grafoscopio is becoming a distribution of several extensions and customizations over Pharo/GToolkit) we are kind of in the middle, maybe because we were inspired by Leo and Pharo/Smalltalk. For example:
1. our default UX/UI uses GToolkit's Lepiter to combine several representations (prose, code, data, graphics),
2. our storage format kind of inverts what we had previously with
the early Grafoscopio version: instead of Markdown inside a
STON[1], which give us a pretty light and readable textual format
(see the source code of Grafoscopio manual[1a], now we have STON
metadata inside Markdeep, which keeps the readability, while
providing a format that can be rendered in almost any web browser.
3. For storage, sharing, versioning and publishing of our
notebooks we use Fossil.
Cheers,
Offray
[1]
https://book.huihoo.com/smalltalk/pharo/enterprise-pharo/book-result/STON/STON.html
[1a]
https://mutabit.com/repos.fossil/grafoscopio/file?name=Docs/En/Books/Manual/manual.ston&ci=tip