Header Ads

Orgmode: productivity geek heaven

Orgmode, or just org, is an add-on for the venerable emacs editor that manages your tasks, builds your daily agenda, builds websites, outlines notes, help one keep a journal, tracks how long you spend on a task, and probably walks your dog and makes great julienned fries. Unfortunately, you have to be a bit of a geek to really appreciate it.

Don't get me wrong: I've got nothing against geeks, being one myself. Indeed, I think geeks rule - literally. I think we wouldn't be anywhere near as advanced as we are if it weren't for geeks, and I'm very satisfied to self-identify with the geekery. We might not be pretty or politically correct, but we do get shit done.

Still, geeks are not in large supply, so this productivity tool may not be to everyone's liking. But given that org is free and open sourced, and that it does damned near everything, it is very worthy of mention here.

For those who don't know emacs: it's the mother of all text editors. Much older than the Web, emacs is really a double-precision floating point dialect of the Lisp programming langauge, with a plain text interface, that happens to manipulate strings of text really well.  Some people have even compared it favorably with operating systems like Windoze and Linux.  (Well, anything compares favourably to Windoze....) It seems nearly infinitely flexible because it is its own programming language; an emacs program can load chunks of itself while it's running, thus changing its behaviour on the fly; it can even output its own source code.  Emacs works in modes, each of which is targeted at a specific type of task.  While emacs is best known as a programmer's tool, it can be taught to do nearly anything by just loading up the right mode.

Org-mode, as the name implies, is "just" one more of emacs's modes - about 85,000 lines of it. Originally designed written by Carsten Dominik, org recognizes certain special but not cryptic combinations of characters as specific types of information, and let's you do a number of interesting things with them.  You can see a number of screenshots of what org looks like here.

Typically, org is enabled on any file that ends with ".org" so you can create as many "org files" as you like, and the emacs editor will keep track of them, enabling org any time you open one of them.

One of the basic structures in org is the headline, a line of text that starts with some asterisks followed by a space. Text after a headline is treated as belonging to the headline. It's as if the headline were a section heading and the text below were the body of that section. Org understands subsectioning based on the number of asterisks that start a headline; the more asterisks, the deeper the level of the section. Text that goes with a headline is automatically visually indented to line up with the headline itself.  I say "visually" because, like real word processors, org recognizes that format is not content and rearranges text to fit nicely on the screen without altering the file itself.  (Of course, you can get org to embed the formatting directly into the file, but if you tend to transfer content from org into other applications, like blogs, then you don't want your content to carry all of org's formatting with you when you move it out of org.)

Org lets you hide the chunks themselves leaving only the headlines visible. This means you can use it as an outliner or what is sometimes called a folding editor.  You can lay out a long document by starting only with headings, then go back and work on the document one heading at a time, hiding all the others and focusing only on the one on which you want to work.  Indeed, in this regard, org has been compared favourably to apps like WriteRoom, especially because org and emacs are both free.

If the first word after the asterisks in a headline is TODO, org recognizes the headline as a task.   When you complete a task, you change its state to DONE, after which the task will no longer appear in your agenda (described below).  You can assign start dates, due dates, and priorities to these tasks.  Since a task is a headline, you can write as much as you want after the headline to describe the nature of the task, and then fold it away so it doesn't clutter up the screen.  Also, a subtask is simply defined as a sub-headline starting with one of the magic task keywords.

Org can then generate an agenda for you: a list of tasks according to deadline, priority, etc. and lay it all out for you in a easy to read, if somewhat unaesthetic, form.  Working on the agenda automatically works on whatever files were used to build the agenda, so you don't have to worry about not syncing the agenda with the other org files.  Of course, not all your org files need contribute to your agenda.  You can tell emacs which of your org files are those you want it to manage within the org agenda.

Orgmode agendas are dynamically constructed summaries of appointments, tasks, and all kinds of other things. You can even create your own combined agendas. Indeed, you can even define your own set of task status labels. The default list includes only TODO and DONE; I have TODO, WAIT, ACTIVE, DONE, and CANCELLED.  You can even define alternative sequences of task keywords, each representing a different possible workflow.  Besides the sequence I noted above, I have a separate sequence for "bugs" (OPEN, WIP, PAUSE, and CLOSED), and for projects (PROJECT and COMPLETED).  You can associate a shortcut key with each keyword, so changing the status of a task can be as short as one keystroke and never more than three.

This just scratches the surface of what org can do.  It can export its contents in all kinds of formats, including HTML, which means that you can publish your org pages to a website.  Not that you'd want your agenda published for the world to see, but since org includes outlining capabilities, you can literally create websites using it.  You can attach files, create links between different parts of different files, and link to images (such that when published to the web, the resulting web pages will have the images embedded in them).  Of course, all kinds of web linking is also possible; for instance, just pasting a URL into an org file automatically turns the text of the URL into a link to the corresponding web resource.

I've been using it for only a few months but I'm still exploring its functionality.  A(nother) nice thing about org is that you don't need to know all of it to use just part of it.  The functionality is very nicely compartmentalized, so you only need to learn as much of it as you need to use.  But be forewarned - once you get into it, you may want to learn more of it than you first thought.  Also, you may set up your org files in a way that makes functionality you haven't yet discovered harder to use because it doesn't "fit" with the way you work.

Of course, nothing is perfect, and there are some irritants in org (largely arising from emacs itself).

Emacs was born in a time before computer mice, even before the numeric keypads and function keys on your keyboard.  All that its original developers had at their disposal was the conventional keyboard.  So most commands involve holding the control key, or the escape, or meta, or opt, or whatever other special keys that don't print characters might be.  This means that some commands in org are composed of keystrokes that might seem bizarre to those unacquainted with emacs.  For instance, the three keystroke sequence control-c control-x control-e is how you get org to update the "effort" (i.e. number of hours needed) to complete a task that is currently being clocked.  Even though I've been using emacs for more than 20 years myself, there are days when I swear my hands cramp up from typing all those wonky keystrokes.

Another problem is that the documentation is not geared to the org beginner.  And if you're new to emacs generally, then heaven help you.  What's needed to make org really popular is a manual that anyone can use successfully.

One last major complaint I have about org is that the iPhone app for it, MobileOrg, requires you to sync by performing four separate manual operations.  Assuming you've set up org on a real computer to do remote syncing with MobileOrg, and configured the app properly (neither of which is a trivial task), you then have to manually push the content of your real org installation, then manually pull it into your iPhone.  Then, when you want to sync everything back to your main computer, you have to manually push from the iPhone and manually pull it all into your real computer.

Now, the iPhone app is quite new, but - really! - this is not how it should work.  For example: I sync my org files over all my computers using Dropbox.  Allowing the occasional and brief delay for Dropbox to work its magic, my org files are automatically synced everywhere.  And I know there are many iPhone apps that automatically sync to Dropbox.

Why can't they do the same thing with MobileOrg?

In any case, here's the bottom line.  Org for emacs is a fantastic productivity app that will only get better with time - if you can understand it.


  1. "Heaven help you indeed." and the one blind spot to the support, I think, is that once anyone is knee deep in the geekery they have no recollect as to how a beginner thinks. It's like a native person driving to the airport-they wouldn't even notice if the signage was horrid. People who use org-mode and Emacs will argue that the signage is everywhere; its a very friendly bunch, but you are essentially reading a canon of material while the most obvious questions go unanswered.

    I have emacs and aquamacs installed on my computer. I also have the full manual and the short for org-mode. It took me hours to realize what a mode was and that I probably already had org-mode installed. What about everything else that might need to be installed as development tools and services on my computer before I can get org-mode to work? Self-evident, the seasoned emacs user would argue.

    How about the activation process? Even the direct manuals do not embellish on what it entails to change certain lines in the .emacs file. Where do you find the file, where does it reside? How do you summon it in the directory? Is it made automatically as a preferences file? Am I working org-mode in it, do these lines of code go in each of my org-mode files?

    Then there's the matter of where you save the .org file. This time management tool does nothing to promote good file management, which is really the other side of the coin. How else would a text file become a currency for encouraging you to put your attention in the right place if it doesn't lend itself to mobility and falls in the shuffle with all your other documents, etc? The agenda feature, is a great way of recollecting all these divergent information, I'll grant you that. I could go on.

  2. Salat, that's more or less what I was getting at: Orgmode is great for people who already know emacs. I guess I wasn't clear.

    I will make one counter-comment, to your 3rd paragraph about activation. Installing org does require understanding how emacs works, a bit. But depending on your platform, it can be as easy as things ever get with emacs. I installed aquamacs, and then just dropped the src for org into an appropriate directory. All the basics then work. If one then wants to get org talking to other bits of emacs - well, that's a different story.

    What I wish is for something as powerful as org, but with an interface more like Toodledo, or Appigo's ToDo.

  3. Just discovered it. It is amazing! By the way, spacemacs is great way to get into Emacs, if you're coming from Vim.

    1. Shai, thanks for the pointer to spacemacs. Will investigate.


Powered by Blogger.