All-purpose giant outline in OmniOutliner?

Does anybody maintain a giant, single file outline in OmniOutliner?

Workflowy and Dynalist promote the use of a single giant outline in their apps. I’ve never considered using OO this way, and have no idea if it would work effectively.

Curious whether others have tried this.

Not sure what you mean. Would you be able to post an example?

Risky. Too fragile a vessel.

Workflowy and Dynalist etc have much larger and more scaleable systems (including automated backup processes) behind them.

(Even then we are offering hostages to fortune, and to other people’s servers)

Short answer: yes.
Long answer: I have over ten years of notes in a single .ooutline file. It is highly organized, with each entry time-stamped, which acts as a unique serial number for each entry. I can link entries to each other via this “serial number,” and find them easily with a regular expression search. I also define key/value pairs within the notes for certain metadata. I rely on filters for two principle needs at work:

  • Find all to-do items or triggers (I’m waiting on something/someone else) across all projects. This allows me, while taking notes, to set a to-do directly in my notes, wherever I am in the notes, via a to-do or trigger key. By using the filter, I see only my to-do’s and triggers, along with their paths in the outline, which provides the context.

  • Status update for the boss. Since all of my entries are time-stamped, I have a filter that shows only those entries dated after my last meeting with him. This gives me a concise report of all of my activities across all projects since the last meeting, and allows me to provide a synopsis very quickly.

OO has great features, but for this application, my notes are purely text. I do not embed any documents, which would bloat the file. If I need to reference an external document, the only thing in the .ooutline file is a link to the external document. They’re in a directory tree based on topic. I use this file heavily, with new entries every day, and I even insert email correspondence as well. Yet after 10+ years, the .ooutline file is only 1.5MB. Text is cheap.

The only universal interface is text.


An even more textual (and unix-based) approach, might, of course, be:

which, with some css and a little help from our friends, can look like this:

Wow, I’ve never seen org-mode look so delightful. I still think org-mode is too Unix for my tastes, but I might steal some of those design elements and apply them to OmniOutliner!

1 Like

That’s an interesting approach. I’d never thought to use time stamps as filters. I’m trying to visualise how you do this - is the date a column? Does OmniOutliner support date math/logic in filters? Or is it a more brute-force/manual approach that you take?

No way is it brute force; that would be too cumbersome. I have a timestamp column, which is actually the first column, so that when I open a new row I’m in that column. Typing command-shift-@ inserts the stamp in the column and a right-arrow places me in the note header, ready to go. I use the following format:

because I want 1-second resolution in as compact a format as I can get it. I can’t enter more than one note per second. I suppose I could drop the century, but welcome to pedantia. And yes you can reference dates in filters. Aside from using it as a serial number (because OO doesn’t expose these details to the user,) it is sometimes very helpful to know when I entered a note. For example, “When did I get involved in project x?” It would be the timestamp on the first note. “When did I submit that draft to Joe?” It’s in the timestamp because when I do something important on a project, I note it.

I also use the timestamp as a link since it’s unique. I realize OO could link notes, but I prefer my method because it’s exposed to me, and I could take care of “broken” links myself. I don’t know what OO does with those. So if I want to reference another note, I reference the timestamp of the note. This comes up frequently at work, for example, because a project is started based on a conversation in a prior meeting that provides context. I’ll place the timestamp of that conversation in my initial project notes. Finding the note is “fairly” easy if you’re conversant with regular expressions:

  • Highlight the timestamp (double-click) and press Command-c (copy)
  • Command-f for search, select regular expression mode
  • search for: ^Command-v$
    (To be clear, that’s circumflex, then press Command-v to paste, then dollar sign)
  • and press Enter and I will jump to the note.

I keep the notes on my macbook that I take to all meetings, and I set up an rsync script to push updates to my desktop, so that at the end of a meeting, I pop to a terminal window, type one command, and all of my work is backed up. My wish list for OO enhancements:

  • Expose outline metadata so that, for example, I could limit a search to a particular outline level.

  • Add search option to only search the part of the tree that is highlighted.

  • Allow regular expressions in row filters.

1 Like

My personal notes are in plaintext, not OO (sorry, Omnipeople.) I use a very structured format that can be parsed, and searched easily with regular expressions. This means I can easily import the notes into any tool if I wanted to do some sort of analysis. I even wrote a lint utility for the format to prove to myself that it’s “parse-able” and I’m thinking about adding a web front end to it. My wife is always amazed when she asks me for some esoteric piece of information (“when was the last time the kids were sick?”) and I can produce it within a few seconds (if I’m at my Mac).

Why do I do things this way? Because of my philosophy that whenever you rely on a product or service, you must give up a certain amount of control. That’s fine for most things, but not my most critical information.

Contemporary lingo would reference things like “Software Defined Networking” and “Software Defined Data Centers” but let’s call it what it is: plaintext configurations.

Your method sounds similar to the zettelkasten method by which each piece of information is contained in a text file, with a unique file name identifier in a similar YYYYMMDDHHSS format.

I’ve created a small library of zettels using The Archive. The atomicity of these notes means they can be referenced, edited, etc. without upsetting the entire note set.

I never heard of zettelkasten but I just read up on it; thank you for that reference. I’ll study it more, but what I’m doing isn’t exactly zettelkasten. My notes are in a single file. The structure is a sort of log, but it accommodates the notion of containing logs. So it can be a log of logs. I appreciate what zettelkasten is doing; I’ve long felt that a semantic network is a great way to represent concepts. However, there are many instances in life where information can make more sense in a chronology, such as an automobile service log, or a history of your blood pressure readings, etc. As much as the brain is a huge network, we also understand things in terms of order of events because this is the way we experience things. For example, “I don’t remember when we did X, but it was after Y.” So my notes represent a “software-defined log” that attempts to add as much syntactic and semantic structure as possible, while not being burdensome or impede the need to just have free-form text. So it has been a great framework because not only can I easily find things, but I can also easily “export” data from the log into any tool for analysis. For example, in about 5-10 minutes I figured out how to get Tinderbox to ingest my entire log, break it up into individual notes, and identifying tags. I could then use Tinderbox to index on keywords and draw automatic associations, although that took a bit longer. The ultimate goal is that while I could use any tool of my choosing for analysis, the authoritative source of the data remains my log so that I’m always in control of the format and metadata, and it will never have to go through any conversion or suffer data corruption in some weird proprietary format.

Ironically, this not at all what I had originally intended. I was on a search for the “grail tool” that could hold all of my notes. In the meantime, I was collecting those notes in a file. The search dragged on, and I kept refining my note taking and structure, and I reached a point where I realized I had accidentally developed a superior system that left me in control of my data. I’m always open to testing out new methods and software, because it is easy for me to “export” my notes. So I’ll read up on zettelkasten, and thanks for that.

I keep one “giant” outline per project, and have a separate, sort of “master” outline where I keep global to-dos. Not as powerful as regexp’s method in terms of being able to search for to-dos across projects in one file, and I suppose there’s no reason I couldn’t combine them all, but it’d eventually get huge from the weight of past/inactive projects. I do paste graphics quite often and would not enjoy working in text only; one of my gripes with OO is that I can’t zoom graphics like I could in Circusponies Notebook, which I used before it became defunct :( My other gripe with OO is that checkboxes are global - you can’t apply them to only one topic. I’ve submitted feature requests for both issues but Omni doesn’t seem to care about Outliner much.

It would be nice if there was the ability to link one outline to another (and maybe a link-back) instead of just links to URLs or a different section of the same document. It would be similar to a Master document (main outline) and have sub-outlines dropped in.

I also have a need to store supplemental documents or images, but I only put a link in OO and the actual files are stored in a document tree similar in subject to the OO outline. So when I encounter a reference I want to see, I can pop it into a secondary window quickly; it’s just not “inline”. This keeps the file size incredibly small. When it comes time to reduce the outline size, (and I’m not sure when that will be given I have 10 years of data now and have no problems,) I’ll move the closed out projects to a separate “archive” outline.

I too would like to be selective about where checkboxes exist. Another wish is a “vi” edit mode when editing a note.

ScoutsHonor: if the Omnifolks would just expose some of the outline metadata for use in the the application, we’d be able to do that. For example, a link to another document could constitute the unique identifier for that row. Maybe in the next major release.

Might be worth experimenting with:

Which does attempt some kind of two way linking

1 Like

OO didn’t crack a mention in the Omni Roadmap for 2020 so I’m not going to hold my breath.

The (marketing) problem with OO is that it’s a general purpose tool. Most of Omnigroup’s tools aren’t; they have a specific purpose and it’s not hard for a prospective customer to imagine what to do with it, and therefore whether or not it’s useful for them. General purpose tools require imagination to see how they would be used, to see the possibilities. As a result, general purpose tools don’t sell as well. Another good example is Tinderbox. It would be described as a “spacial hypertext” system. But what you can do with it boggles the mind. Some object-oriented concepts are presented through the application, like prototyping and inheritance. You can use it as an outline, but you can also represent notes on a map (2-D field for spacial representation) or in other ways. It has its own scripting language, and the concept of living documents. Every note is an object, and they can take their own actions. You can establish “agents” that continuously scan the notes, taking actions when necessary. As a simple example, you could have an agent that says in effect, “Any note that is in this section of the outline and mentions the word Red should be colored red.” While you’re typing, say, “I feel red today” it will automatically turn red. I use the tool for analysis. I even wrote a Tinderbox “document” that implements a radar scope for my to-do list, whereby the origin is “Now”, distance from the origin is distance in the future to the deadline date, and position on the scope (vector) is based on topic category, so that everything on a specific topic (like a project name) is grouped together. Powerful stuff. But the learning curve is steep, and most people never heard of it. Because it’s general purpose (It would, on the surface, just look like an outlining tool,) the reaction is typically, “What can you do with that?” My typical answer is, “Anthing.” OO suffers the same lack of imagination on the part of the prospect.


You could create a folder called “All Projects” and have a list of OO documents and sub-folders in there to ‘almost’ work like one giant outline. Not perfect but would also allow you to use file aliases in the compilation folder so you don’t have to move everything to one location.

I have used giant outlines to map out my lesson planning for the semester.

Works great unless there’s images. Then it gets bogged down and can freeze up for a few second when trying to scroll.