Sunday, July 26, 2015

An Outliner for Linux!

Screenshot of Hiero with two outlines opened
Assuming that I'm not a complete moron when it comes to coding (and the jury is still out on that one -- at least in my own mind), the Penguin tribe may finally have a usable outliner to add to it's ever increasing collection of Linux applications. Although Hiero (pronounced "Hire-oh") can be used to manage all kinds of hierarchical text, (task or "to do" lists being a good example) it's targeted mostly at those needing to draft essays, articles, dissertations, etc. (see screenshots).

For those not familiar with outliners, according to Wikipedia:

An outliner is a computer program that allows text to be organized into discrete sections that are related in a tree structure or hierarchy. Text may be collapsed into a node, or expanded and edited.

Hiero is of a class of outliners commonly referred to as single-pane (also one-pane) outliners, named for the fact that they use but a single pane to display both the outline's overall structure as well as each node's details.

A single-pane outliner is the perfect tool for use in the early stages of authoring content when the overriding concern ought not to be how the content will be displayed but rather, what content will be displayed (and in what order). It's for this very reason that students are often encouraged to create an outline for papers that they have to write in college -- not because college professors are just mean and they like sending their students off on a wild goose chase but because an outline is fundamentally the right tool for collecting ideas and putting them into the proper order.

But why develop a single-pane outliner for Linux? Isn't there something that's already available? Simply put, there aren't many choices of single-pane outliners developed for Linux. Whereas users of both Windows and OS X have had a choice of such applications on their respective platforms for years, to-date its been slim pickings for Linux users. That said, an investigation of Linux outliners quickly conveys that there was once much interest in the development of single-pane outliners for Linux. Indeed, remnants of past open source projects (such as the now defunct Gnome Outliner) can still be found on the web.

Due to this lack of choices, Linux users have had to rely mostly on text editors and word processors for drafting articles, etc. Of course, using a word processor to draft an article doesn't make a lot of sense given that word processors don't generally have the functionality built-in to fully support outlining. The fact is, word processors are much better suited to rendering a final draft than they are to helping you to create a first one. They generally support everything you need to do with regards to editing a document except help you to organize that all important first draft!

It may occur to the reader that mind mapping software accomplishes the same basic tasks as outliners do and in fact, an outliner can be thought of as a sort of specialized mind mapping tool. Mind maps are hierarchical just like outlines and therefore it's mostly just a matter of taste whether you prefer a diagrammatic representation of your text or an outline representation of it. For me, outlines just seem more natural and work better. Your mileage may vary.

So, having concluded that my word processor was conspiring against me and potentially limiting my ability to write, I set out in search of what I considered to be the holy grail of writing that I hoped would remedy my situation. Unfortunately, being a Linux user, it wasn't as easy as my just doing a search for and then installing my chosen outliner. After almost a week of scouring the web, I came up empty handed. Everything I found suffered from one problem or another. Either, it had an extremely limited set of functionality or it wasn't suitable for writing or it wasn't a single-pane outliner to begin with. Long story short, I came to the realization that if I wanted a single-pane, writer's outliner that runs as a native application on Linux, I'd have to develop it myself.

Today, I'm pleased to announce that Hiero is now ready for others to use. The application is available as a PPA on launchpad. The software can currently be installed on the following Ubuntu releases (including derivatives such as Linux Mint):

   15.04 Vivid
   14.04 Trusty
   12.04 Precise


To install, copy each of the following commands (one at a time) into a terminal and run it:

   sudo add-apt-repository ppa:bwb-s/hiero
   sudo apt-get update
   sudo apt-get install hiero


Warning: Hiero is still undergoing initial development and as such it may contain significant bugs that could impact its usability. Please use appropriate caution and be sure to save your work regularly using CTRL-S.

Note: Those who simply want to evaluate the application might want to install it on top of a Linux live CD rather than doing a full install to their system's hard drive. That way, the application's features can be fully evaluated without any changes made to your system. At the present, an excellent choice of live CDs to consider is either Linux Mint's or Ubuntu's MATE editions.

Note: Some features, such as the appearance of color bars and tree lines, is dependent on the particular desktop theme chosen and therefore, you may want to experiment some with different themes.



Please leave feedback below.

26 comments:

  1. I'm away from home for the next few days,but am eager to install when I get back to my Linux box. Thank you! Question: as a writer's tool, does it have word count?

    ReplyDelete
    Replies
    1. No it doesn't, but that shouldn't be a problem to add in the next release.

      Delete
  2. Hiero comments
    First, thanks for creating it. We need a native Linux one pane outliner.
    Many of the functions are there: create, navigate, expand/collapse, move around. And once a node or header is created, I find the commands and behavior logical and predictable.
    But the node creation interface is clunky. For instance, simply to create a new "node" in the outline, one must either:

    - click on the green + symbol on the navigation
    - Use the menu system with the mouse, or
    - type Ctrl-I (create sibling) or Ctrl-K (create child)
    which is OK, but

    to EDIT the node, one must either double click it or press Enter. This opens a text box that sits over the outline, and always defaults to that position.

    The edit text box is always pre-populated with "[new node]". So to create content, you have to either delete the text, or highlight and type over it.

    To SAVE the text, you have to click on OK, or tab over Cancel, then OK. While in the text box, you can't access any of the other program functions.

    Bottom line: this is an interface that's constantly getting in the way. I can't imagine rapidly brainstorming in it.

    I would suggest an alternative:
    - Ctrl-I or Ctrl-K opens a new text box (if you can't edit just in the outline itself, which seems more straightforward). There's no "[new node]" - you're just at the beginning of a blank box. (And incidentally, I can think of Ctrl-K as 'kid,' but what's the mnemonic for I?)

    ANOTHER Ctrl-I or Ctrl-K repeats the process: saves the currently open text box in the appropriate outline location, and opens a new text box to be saved in the specified relationship.

    - When I'm done with a text box, and don't want to add another node, either give me a single key combination (Shift-Enter, Ctrl-Enter) to save it, or if I have to tab, surely OK is the default. Why two tabs? Similarly, pressing Escape should default to Don't save

    Another issue: I did something I tried to undo with Ctrl-Z. I did two of them - and the unsaved file closed! Ouch. Lost the text.

    Again, I appreciate your contribution, and I hope these comments are useful to you. Right now, especially absent word count and spellcheck, this program seems far harder to use than I'd like. It's easier to use Workflowy or Oakoutliner. Or even Tkoutline. Both of them have cleaner user interfaces.

    ReplyDelete
    Replies
    1. Hiero comments
      First, thanks for creating it. We need a native Linux one pane outliner.
      Many of the functions are there: create, navigate, expand/collapse, move around. And once a node or header is created, I find the commands and behavior logical and predictable.
      But the node creation interface is clunky. For instance, simply to create a new "node" in the outline, one must either:

      - click on the green + symbol on the navigation
      - Use the menu system with the mouse, or
      - type Ctrl-I (create sibling) or Ctrl-K (create child)
      which is OK, but

      [The best solution here would probably be to replace CTRL-I, K each with a single keystroke (most likely, a funcion key).]

      to EDIT the node, one must either double click it or press Enter. This opens a text box that sits over the outline, and always defaults to that position.

      [Some changes have already been made here that should help. In the development version, both CTRL-I and CTRL-K now enter the node's edit mode immediately upon creating the node so that you don't have to press ENTER. This behavior can be configured on or off. Regarding the positioning of the editor dialog, part of the problem here is likely with the default size of the dialog being too big. You can decrease its default size in the preferences. I probably ought to default it to a smaller size to begin with. Also, be aware that you can use keyboard shortcuts to move the edit dialog out of your way. These are available via ALT-SPACE...]

      The edit text box is always pre-populated with "[new node]". So to create content, you have to either delete the text, or highlight and type over it.

      [I agree that this is a problem. I'll either not pre-populate the node with text or at least make it configurable.]

      [CONTINUED IN FOLLOWING RESPONSE]

      Delete
    2. [CONTINUED FROM EARLIER RESPONSE]

      To SAVE the text, you have to click on OK, or tab over Cancel, then OK. While in the text box, you can't access any of the other program functions.

      [Actually, ALT-O is meant to be used here, although I'll investigate and see if something a bit more memorable like CTRL-ENTER can be used (it seems there was a reason why I hadn't done that to begin with).]

      Bottom line: this is an interface that's constantly getting in the way. I can't imagine rapidly brainstorming in it.

      I would suggest an alternative:
      - Ctrl-I or Ctrl-K opens a new text box (if you can't edit just in the outline itself, which seems more straightforward). There's no "[new node]" - you're just at the beginning of a blank box. (And incidentally, I can think of Ctrl-K as 'kid,' but what's the mnemonic for I?)

      [Regarding your last point, this is kind of moot as I'll probably replace these commands with function keys so that they're a single-click.]

      ANOTHER Ctrl-I or Ctrl-K repeats the process: saves the currently open text box in the appropriate outline location, and opens a new text box to be saved in the specified relationship.

      [Interesting idea. I'll consider doing this or something similar if possible. Do realize that Hiero has built-in functionality to do this even more effectively than what you're suggesting. If you merely want to enter a long string of nodes as efficiently as possible, then go ahead and type them into a single node (each one separated from the next by one or more newlines) and after you're done, close the node and immediately split it into multiple nodes using CTRL-T. Then "indent" the resulting nodes however you like using the demote command.]

      - When I'm done with a text box, and don't want to add another node, either give me a single key combination (Shift-Enter, Ctrl-Enter) to save it, or if I have to tab, surely OK is the default. Why two tabs? Similarly, pressing Escape should default to Don't save

      [Again, ALT-O is meant to be used here. Tabbing should serve as a last resort. As stated earlier, I'll try to make it so that CTRL-ENTER will work here as well.]

      Another issue: I did something I tried to undo with Ctrl-Z. I did two of them - and the unsaved file closed! Ouch. Lost the text.

      [Hmm. Sounds like my testing missed something. Could you by chance duplicate this? That would be really helpful. If you do manage to duplicate, you shouldn't need to write down the command sequence as it's logged to disk already (in ~/.hiero/log) and you can just email me the appropriate log file itself.]

      Again, I appreciate your contribution, and I hope these comments are useful to you. Right now, especially absent word count and spellcheck, this program seems far harder to use than I'd like. It's easier to use Workflowy or Oakoutliner. Or even Tkoutline. Both of them have cleaner user interfaces.

      [Word count should be implemented in the development version shortly. Your comments have been very helpful. I'll make some adjustments. Thanks!]

      Delete
  3. Any chance for a straight Debian version?

    ReplyDelete
    Replies
    1. Would you be open to the idea of building a Debian package for your own Debian release if I were to provide the written instructions? Being a practitioner of "safe computing", I wouldn't have you creating the package directly on your "installed" system, but rather, from a live CD instance of it... Let me know if you're agreeable to doing this.

      Delete
  4. Let me pose this on the forum for my distribution, to see what kind of support they might provide. I think Hiero would be a great addition.

    ReplyDelete
    Replies
    1. Sounds great. Please let me know what you find out. :)

      Delete
  5. The guys at the Mepis and MX Community Forum [http://forum.mepiscommunity.org/viewtopic.php?f=82&p=366352#p366352] quickly jumped on this and produced a rebuild for our user repositories. I'm looking into how this could figure into a stand-alone Debian version.

    ReplyDelete
    Replies
    1. "Quickly" is right! All I can say is "wow!" Many thanks to you and the other fine folks of the Mepis/MX community both for recognizing the value of single-pane outliner software in general and for your interest in Hiero in particular. You guys definitely rock! :)

      Delete
  6. Okay, 32-bit and 64-bit Debian versions just became available in the MX and antiX community repositories. This is my post for the Hiero community forum thread: "Just installed the 32-bit version on antiX Luddite (I assume it'll be fine for newer systems). Loads fast. Very light and simple, with ample help files for learning the various ways of inputting and manipulating entries. The main strength is the efficiency of text-folding (collapsing and expanding the outline entries in a single pane). If development continues and the app proves stable, this could serve as a valuable writing tool for many kinds of tasks."

    ReplyDelete
    Replies
    1. Thanks for the kind words, malanrich! For the record, release 1.2 should be out before too long (maybe a week or so) and it eliminates all of the nasty bugs that I was aware of (like drag/moving a node onto itself or a descendant node). In addition, it'll finalize the improvements to the adding of nodes (adding of sibling nodes now becomes a matter of just pressing ENTER whereas adding a child just adds a CTRL-RIGHT to that). Plus, code is now in-place to enhance the existing search functionality. If you're in the midst of a search, (essentially the search entry has text in it) any occurrences of the search text will automatically be highlighted (currently bolded) when you open the node editor -- as you might expect. Again, thanks for the feedback! You can bet that I'll be doing some exploring of Mepis/MX myself!

      Delete
  7. Hiero looks very interesting. I'm working on the initial ideas of a short story now and will enjoy trying it. Thank you so much Johnny Astro for creating this software; it looks very useful.

    ReplyDelete
    Replies
    1. You're welcome Stephen! I hope it works out for you. There should be another release (1.3) rolled out shortly (like this week hopefully).

      Delete
  8. I have to say I'm thoroughly enjoying using Hiero to outline a study of some academic essays. (I'm using 1.1. Did I miss 1.2?) I urge new users to get used to the key commands as soon as possible. That speeds up the movement around the outline enormously, freeing one's mind to think about the ideas without the distraction of reaching for the mouse. I'd only comment on one aspect of development: Using function keys to open new sibling or child nodes is great for eliminating a step--except on some laptop keyboards whose function keys have to be enabled by first pressing an Fn key. (It would be nice if those people could remap the "new node" key to another single key.)

    ReplyDelete
  9. I'm glad you're enjoying using Hiero. Version 1.2 should be released in a day or two. It should resolve any issues with adding nodes as now the spacebar is used for editing a node rather than the ENTER key and the latter, when pressed, now adds a new (sibling) node. Although use of the ENTER key can only add a sibling and not a child node, the newly added node remains selected so that all you need to do is press CTRL-RIGHT to demote it to a child. It's much more natural than using the F2 and F3 keys (both of which still work BTW, although their functions have been swapped), because you no longer have to reach for the function keys.

    ReplyDelete
  10. In terms of feature requests, I've been thinking about spell-check and wonder what opinion others have. Would it be useful considering that spell-check would be handled by whatever app the outline eventually gets exported to? On the other hand, I'm using Hiero pretty much as a standalone (not likely to do much exporting) so a spell-check would be *somewhat* convenient. If spell-check is a negligible resource-hog, I'd like to have it. But my first preference is to keep Hiero light and fast.

    ReplyDelete
  11. Did you really have to use xml for saving :)? That kills it for me, sorry. Great idea and implementation though.

    ReplyDelete
  12. This comment has been removed by the author.

    ReplyDelete
  13. Just what the doctor order.. Simple and straight forward. Only thing missing for me is ability to print. I'm doing prep for a presentation tomorrow and would love to be able to print out the outline.. Is this something you are planning on including?

    ReplyDelete
    Replies
    1. Sorry. I have no plans to do this at the moment. One thing you could do is export the document as text into LibreOffice and then format and print it from there. I realize that this would be a PITA to do for a large document... :(

      Delete
  14. Hi. I tried to install Hiero (I'm also a long-time OmniOutliner user from way back), but have not been able to install it on Ubuntu 16.10.

    Hope you can advise... Thanks...

    Error message:

    W: The repository 'http://ppa.launchpad.net/bwb-s/hiero/ubuntu yakkety Release' does not have a Release file.
    N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
    N: See apt-secure(8) manpage for repository creation and user configuration details.
    E: Failed to fetch http://ppa.launchpad.net/bwb-s/hiero/ubuntu/dists/yakkety/main/binary-amd64/Packages 404 Not Found
    E: Some index files failed to download. They have been ignored, or old ones used instead.

    ReplyDelete
    Replies
    1. Sorry. That's due to there not currently being a release for Ubuntu 16.10. I'll try to build one. Look for it in a day or two... BTW, on the Launchpad page under "Adding this PPA to your system", you'll see a dropdown labelled "Technical details about this PPA". When you click on it, you can see all of the available Ubuntu releases that are currently supported. ;)

      Delete
    2. Thanks very much, Johnny. This is great news. Really appreciate your effort here in supporting this.

      Delete
    3. I'm in the same situation now with Ubuntu Mate 18.04 -- there's no build for this. BTW, do you have a donation button?

      Delete