Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Outlining with Wiki Linking
JavaScript Python CSS CoffeeScript Shell
Branch: master


latest commit dbe382049f
@interstar authored
Failed to load latest commit information.
exports enabling md_processed dir
forked_concord a merge we don't really need
owllibs checking in the js file, so you don't need to compile coffeescript to…
static a merge we don't really need
.gitignore added exports directory to the gitignore
LICENSE.txt added GPL license a merge we don't really need typo
concord.js.patch patch from last concord.js to the owl fork
index.html tweak html, copyright notice
local_setup.js clean up fixing some issues simple python server

OWL : Outliner with Wiki Linking

I love outlining. I love wiki. What do you get when you create a mutant cross-breed of the two?

A fucking power tool, that's what.


This is a quick proof of concept based on the Concord outliner.

It combines the goodness of outlining from Concord with some compelling ideas of wiki (channeled through my SdiDesk experience).

Initial features of this demo :

  • unlike the original Concord "Hello" example, you can create a number of named outlines (or "pages" in Wiki terminology).
  • a navbar where you can type the name of any outline and click the Go! button to go there. Also has forward and back buttons.
  • easy link-making. I've gone for a slightly different approach here that I hope speaks to both outliner and wiki tropes. To turn any piece of text into a link, select it, and click the "Link" button on the navbar. What this will do is make that text into a link to an outline of the same name. It's wiki's concrete names policy in action. (I know! I know! You think this is the dumbest idea you've ever heard. You want to be able to have a distinction between the "real name" and the "display name". But trust me :-) )
  • a very primitive server that lets you save outlines to the local file-system.

Quick Look


Quick Start #1

To see OWL in action in the browser, as quickly as possible, just do this.

git clone owl
cd owl
firefox index.html

You should now have a copy of OWL running in your browser.

Alternatively, try it out here.

WARNING : As with the other Concord examples, your outlines are stored locally in the browser. Don't put too much work into this, it's a demonstration.

Quick Start #2 : Basic Server

There's now a very very basic Python server for OWL. This is intended to run on your own local machine, and allows OPML files to be saved into the local file system.

You'll need to have Python installed on your local machine. The server uses, a copy of which is included.

You'll need to run a short make script to set up some symbolic links on your machine and create the directory for pages to be stored.

git clone owl
cd owl

firefox localhost:8080/static/index.html

Your OPML pages will be stored in the static subdirectory of the main owl directory.

Have fun. Be productive. And please report any bugs that interfere with either of these activities :-)

Other Issues

To create a page / outline that doesn't exist yet, just make and follow a link to it, or type the name into the navbar and click Go.

Some of the additional code is written in CoffeeScript which is compiled to Javascript. I've included the compiled javascript files in git so you can install and run the code without having CoffeeScript installed. But you'll need CoffeeScript if you want to edit and recompile these files.

Forked Concord

I was really trying hard to avoid forking the Concord library for this.

But I couldn't make it work without patching a small change into concord.js , basically to allow me to write my own handler for when the user clicks on links.

The patch is recorded in the file called concord.js.patch and is this :

@@ -1156,7 +1156,12 @@
-     "href"));
+               if (concordInstance.prefs()["hasspeciallinkhandler"]==true) {                
+                    lh = concordInstance.prefs()["speciallinkhandler"];
+                    lh(target.attr("href"));
+               } else {
+         "href"));
+                   }

I'd like to find a way to avoid having to do this. When I do, I'll revert to using the default Concord as a submodule.

OWL on Android

Want to run OWL on your Android tablet? There's now a project for that : OwlDroid

Pretty experimental at the moment, with some serious flaws. BUT it works! And I'm using it daily as my personal note-taking, todo, app. for the last 4 months or so.

Watch The Video

Here ...


  • Dave Winer for getting a decent outliner into the browser (at last) and having the generosity to open-source the core.
  • Ward Cunningham for wiki fact and philosophy.
  • Aaron Swartz, author of the module that runs the basic server included here, who died fighting for the principle that knowledge should be a free and open resource for all.
Something went wrong with that request. Please try again.