Hacker News new | ask | show | jobs
by Rochus 1568 days ago
Org Mode tries to be an outliner. Outliners are the right tool for the job from my experience (> 30 years) since you can create and use context to reduce redundancy and makes it easier to find and to understand things again retrospectively. I had a look at Org Mode many years ago when switching from Windows to a Linux laptop which meant that I needed an alternative for Ecco Pro. But I quickly reached the limits with Org Mode and a few other tools and finally developed my own tool, which has proven itself over more than a decade in daily use in large, complex projects. A few years ago I released it as open source: https://github.com/rochus-keller/crossline
4 comments

I, too, was a fan of Ecco in the 90s, but it was discontinued in 1997.

OrgMode wasn't even born until 2003, so my guess is that you made your choice about Org very, very early on.

I cautiously suggest that maybe Org does more now than you realize. Your tool seems . . . well, very dated-looking to start.

No, I worked with Ecco until about 2010 and then migrated all databases to Crossline; even though the original company didn't continue development of Ecco Pro there were (and still are) free installers on the Web and even people providing patches. My evaluation of Ecco Pro alternatives had it's peak in 2009 as far as I remember. Org-mode was already established. Of course I was biased as a long-time Ecco Pro user and looked for something with similar or even better features; Crossline can do things I missed in Ecco Pro and doesn't do things I rarely or never used in Ecco Pro; and I didn't spend a second in making it fancy looking, but a lot of time in making it as efficient, usable and powerful as possible; and it's definitely not suited for mobile devices, which is no problem for me since I need a laptop with a track-point to be able to work efficiently.
What does your tool do that Org Mode doesn't? I.e. what are those limitations you ran into?
E.g. more typing, or you have to look to the screen when navigating; in Crossline - even more than in Ecco Pro - I can operate with shortcuts, but shortcuts optimized for an outliner, not just an editor with structured formating; Crossline allows me to look at the people I discuss with during the meeting and take structured notes at the same time without taking my hands off the keyboard and without looking to my laptop; of course one could build something like Crossline on top of Emacs (with limitations), but there is a point where you start to fight the fact that Emacs is an editor infrastructure, not a general purpose GUI toolkit; that's why I implemented Crossline in C++ using (modified) Qt.
I'm also a huge Ecco fan and definitely understand your motivation for creating Crossline, but the particular features you mention aren't really ones where org-mode is currently lacking, especially given org-roam.

Where I think org-mode is still somewhat lacking compared to Ecco is in being able to display the same item in multiple places in an outline and be able to edit any one of them (as well as the whole column UI for setting that up easily). But there are solid moves in that direction, e.g., the org-transclusion package is now pretty decent. There's also another more recent one whose name escapes me.

Crossline supports true "transclusion" links, so you can e.g. compose outlines from existing outline items with navigable forward and backward references; this is very useful e.g. for specification authoring.
I found a similar problem with Org mode when it comes to writing elisp code to handle org documents - it's almost all based on text parsing vs nodes. So simple automations I can program in a node based editor like the Leo Editor took a lot of effort in Org mode.

As an example, if you want the body (text) of a node, you have to get the substring from the beginning to the end. There wasn't (probably still isn't) an API to get the body. If you want to do a depth-first/breadth-first traversal of nodes, it's not as straightforward as one would think.

I hope someone comes up with a node based API for Org mode.

I implemented my own NoSql database for Crossline which supports an efficient storage and traversal of outline items (see https://github.com/rochus-keller/Udb). Even if there was a dedicated API in Emacs/Org-mode it's still file based text buffer interpretation and management behind the scenes.
Nah - the only pain would be in loading/saving. The idea would be that all this information would be in memory and updated live. So when you use node based APIs, it doesn't need to do any parsing. It would have a node object, and the body would be an attribute, and subnodes would be links to other nodes, etc. Only when saving/loading would it then need to convert (serialize) to a text representation.

This is how the Leo editor does it - it's in Python and it can handle a fairly large number of nodes before any slowdown is noticeable.

If you're trying to do non-parsing automations in org, take a look at vulpea. It's roughly the same engine that powers the current version of org-roam. A good example application of this is the vino wine database: https://github.com/d12frosted/vino
Org mode does not "try to be an outliner", it does much more than that. It can do that in 2-3 key presses, which fold the content under each heading.

> CrossLine is an outliner with sophisticated cross-link capabilities in the tradition of the well-respected Ecco Pro.

This is the minimal description in the repository you link to. It does not contain anything, that Org mode does not bring to the table. Org more has sophisticated inter-document linking as well as citations and footnotes. All one needs to write a scientific paper in it and export to tex/latex.

What features exactly is org mode missing for you? I know you wrote, that you tested 10 years ago. Perhaps the picture has changed a lot since then.

Also I understand, that ones own tool often is like a second skin, perfectly matching, what one needs.

Your comment is probably true, org-mode vs X features, for any tool X, but org mode (ie all of emacs) is a tool construction kit, not an especially good tool itself.