Org mode, literally, is a package for Emacs that combines note taking, to do lists, and organization. Org mode, conceptually, is a way of organizing your tasks, notes, schedules, and almost everything else in your life, in plain text. You can do this so that your writing can be manipulated, connected, and organized effectively.
Previously, I have written about the Emacs text editor and its ethos of using macros to run functions on text. Org mode applies this same ethos to organization and has many utilities to accomplish this. In their own words:
Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.
When a piece of software is around for almost twenty years, lots gets written about it that doesn’t need repeating, here. But there are some great things about it and its design philosophy that I think are worth highlighting.
The Org markup language
Org mode uses its own markup language to better interact with it.
It’s similar to Markdown, but has its own syntax.
For example, Org mode tables can have multiple lines in a cell and links are written as
[[link][text]] instead of
But its unique markup gives it a unique structure.
And with that structure, hundreds of functions in the Org mode package can operate.
For lists items, paragraphs, and more, metadata can easily be added between
This key-value metadata gives you the power to query it from anywhere, as well as be filtered, sorted, and more.
The implicit hierarchy that this structure provides also allows the metadata to be easily folded away, tucked out of sight.
It’s a great way to add important information without overloading the reader.
Tasks & note-taking from anywhere
The structure of Org files are part of a bigger axiom of note-taking itself: notes and tasks are indistinguishable from one another. Tasks require information and context which notes provide. Notes collect thoughts and raise questions that should be acted upon, which tasks help make explicit. Having quick access to both of these things, from anywhere, is what gives Org mode its ability as an excellent note-taking and task scheduling tool.
Org mode then builds tooling to make creating, scheduling, and organizing tasks as powerful as possible. While a bit unwieldly at first, all of the capabilities built around tasks, such as the repeaters, captures, and agendas, form a powerful toolset to work with.
There are many task management tools out there today, like Todoist, Microsoft To-Do (formerly Wunderlist), and Notion. These tools are great in many respects, but they impose a structure on what you can write. Org mode is designed to give you the freedom to write what you want, how you want, with a minimal syntax. And because everything is in plain text, you’re not locked into a proprietary solution.
Let’s say you want to track how much time you spending doing a certain task. Lots of people need to clock hours for certain jobs, or maybe you’re just curious at how much time you actually spend working each day.
In Org mode you can do this with the
This works just like a punch in/out card.
For a headline that’s highlighted when
M-x org-clock-in is run, a
:LOGBOOK: property is added to it and it adds the current time.
For example, this
* TODO Test out org-mode's clocking features
* TODO Test out org-mode's clocking features :LOGBOOK: CLOCK: [2020-09-08 Mon 21:00] :END:
This also adds a note to Emacs’ modeline, to remind you what you should be focusing on and how much time you’ve currently spent on it.
Clocking out works the same way. If we clock out 20 minutes after we started, our headline now looks like this:
* TODO Test out org-mode's clocking features :LOGBOOK: CLOCK: [2020-09-08 Mon 21:00]--[2020-09-08 Mon 21:20] => 0:20 :END:
You can see the total time spent on the right-hand side.
If you don’t finish a task, that’s fine.
You can clock in and out again, and you’ll get a new line in the
* TODO Test out org-mode's clocking features :LOGBOOK: CLOCK: [2020-09-07 Mon 21:30]--[2020-09-07 Mon 22:00] => 0:30 CLOCK: [2020-09-07 Mon 21:00]--[2020-09-07 Mon 21:20] => 0:20 :END:
I have found it useful to estimate ahead of time how long it will take me to complete a task; if only to realize how long things actually take.
Org mode lets you do this easily with a property called
M-x org-set-effort gets you to enter the estimated time for a task.
Then, when you’ve clocked in for that task, the modeline shows you how much time you’ve spent in total.
It also shows you when you’ve gone over your estimate.
Making reports from clocked time
You can then use your clocked times and headlines to create summarized reports of all the work you’ve done.
For example, let’s say that every Friday you need to give a brief description of what you’ve in the week.
You can insert this into an org file
#+BEGIN: clocktable :scope agenda :block thisweek :step day :fileskip0 t #+END
M-x org-clock-report to create a table to see what you’ve done.
You can specify what is shown in the table by editing the options in the
#+BEGIN: ... line.
The line above does the following:
:scope agendalooks through all your agenda files (i.e.
:block thisweekqueries everything clocked this week
:step daycreates tables for each day in the week
fileskip0 tdon’t create table rows for files that don’t have any time clocked for them
This type of dynamic content generation in any Org file really demonstrates how powerful Org mode can be. My agenda and tasks can be accessed from any file, and I can link to notes and important context from anywhere else. This ethos of using powerful text-processing tools to create powerful methods to link and generate text is everywhere in Org mode.
Org mode has had literate programming capabilities, been able to export to other document formats, and benefitted from open source package contributions for a long time. This is, probably, in part because of its strong ties to Emacs’ own ethos of free software and flexibility. But these ideas can be seen in many related tools today, and Org mode has been spurring this innovation for years.
It is one of the few tools I have used that allows me to use it the way I want to without getting in my way. Yes, its complexity means time spent setting up your desired captures and agenda layouts. But tools like Org mode are a workshop for creating things and good workshops let you make the space yours.
More for you to explore
There are hundreds of Emacs packages that build on Org mode. And many pieces written about how to make use of Org mode for whatever your purpose might be. To end this post, I think it’s best to link some good resources that might be of interest to others.
- Quotes about Org mode
- Orgmode for GTD
- Using Org Mode with GTD
- Org-mode and Org-roam for Scholars and Researchers
- Writing academic papers with Org-mode
- All Things Org Mode: PIM, Scientific Writing, Presentation, Programming
- Org-mode tricks for team management
- An agenda for life with Org mode
Org mode involves a style of thinking about the way you organize your life. Like Emacs, Org mode allows you to develop a system that works for you without burdening you with configuring everything up front. When you begin to think about your working style and wonder “I would love to be able to do X, can I do that with Org mode?” the answer is almost always yes.
Org mode comes with a file format that makes sense with the things it tries to do. It has a set of commands to accomplish them in whatever way you want. It has a set of sensible macros and shortcuts to write, make tasks, and transfer information in useful ways that make sense.
Org mode is a Swiss Army knife of organization that grows with you. And because of that, I’ve become a big fan of it, and use it extensively.