One of the downsides of moving OPML files between apps is that the “killer feature” — attributes — is often unsupported. At minimum, an OPML file just contains text:
- <outline text="This is a headline" />
In apps like Fargo you can add an infinite variety of attributes, such as icon, created, htmlUrl and xmlUrl (for RSS feeds), and virtually anything else that can have a value.
Most other outliner apps do not support these attributes, but I’ve found two that support the _note attribute, meaning that they will import and export its value: Workflowy and CarbonFin Outliner. Fargo supports any user-defined attribute, so one can theoretically move outlines containing notes between these three apps without losing any information. (According to Joe Pairman, Omni Outliner and Tree support the _note attribute, but I have no experience with these apps as of this writing.)
Adding a note to a list item in Outliner and Workflowy is straightforward. In Fargo, just click on the briefcase icon in the left sidebar to create an attribute called _note and enter a value. However, I have written two scripts to make adding and viewing notes easier in Fargo. To make these work, you need to create an outline in Fargo called menubar.opml (and title the top headline something like “Scripts”) and paste the code below into your outline. (Just make sure “show note” and “add note” are children of the “Scripts” headline. Watch this video by Dave Winer to learn more about scripting in Fargo.)
- show note
- t = op.attributes.getOne (“_note”);
- dialog.alert (t);
- add note
- dialog.ask (“Insert note”, “”, “”, function (name) {
- op.attributes.setOne (“_note”, name);
- op.attributes.setOne (“cssTextClass”, “note”); // optional
- });
- dialog.ask (“Insert note”, “”, “”, function (name) {
To make the “note” icon show up next to a headline that contains a note — scroll down to the end of this post to see the screenshot — you need to add the following to the CSS section in the Fargo settings:
- .note:after {
- font-family: FontAwesome;
- content: ” \f016″;
- }
The cssTextClass attribute is not supported in Workflowy and Outliner, so if you create a note in Fargo, move the outline to one of these apps and then move the outline back to Fargo, the _note will remain intact but you’ll no longer see the icon.
Moving Outlines Between Apps
It is easy to move outlines between Outliner and Fargo. Both store their OPML files in Dropbox (you have to choose this setting per outline in Outliner, though). Outliner stores OPML in the /Outliner folder in Dropbox. Fargo stores OPML in the /Apps/Fargo folder. So you can literally just drag and drop an OPML file from one folder to the other, then sync (in the case of Outliner) or open the file (in the case of Fargo).
You can just copy the full text of an OPML file and paste it into Workflowy. I pasted the OPML of an outline I built in Outliner into Workflowy, and Workflowy imported the notes and respected the outline structure. Unfortunately, the note and child structure was not preserved after I copied a headline in Fargo and pasted it into Workflowy. I had to grab the full OPML text from Dropbox and paste it into the app. Workflowy does let you export any outline within the entire document as an OPML file, so you can copy this text, paste it into a text file, save it as OPML, and then import it into Outliner or Fargo.
Here is the OPML of a simple outline I built in Fargo.
- <?xml version="1.0"?>
- <opml version="2.0">
- <head>
- <title>_note</title>
- <ownerProfile>http://jeff.smallpict.com/</ownerProfile>
- <ownerName>Jeffrey Kishner</ownerName>
- <ownerEmail>[email protected]</ownerEmail>
- <dateModified>Tue, 22 Oct 2013 13:59:37 GMT</dateModified>
- <expansionState>1</expansionState>
- </head>
- <body>
- <outline text="This is a headline" _note="This is a note" cssTextClass="note">
- <outline text="This is its child" created="Tue, 22 Oct 2013 13:59:21 GMT"/>
- </outline>
- </body>
- <outline text="This is a headline" _note="This is a note" cssTextClass="note">
- </opml>
- <head>
Following are how the same outline renders in these three apps:
Fargo
Workflowy
CarbonFin Outliner





Great work Jeffrey! To solve the issue with the icon not showing up after importing from another service I think you could easily create another menu script that goes through all the nodes and if there is a _note attribute it sets cssTextClass.
I did write a script that can be adapted to do something like that.
Tinderbox ( http://www.eastgate.com/Tinderbox) does support the _note attribute as well.
Thanks, Mark. I’ll check that out.