Org-mode

Org-mode
Original author(s) Carsten Dominik
Developer(s) Carsten Dominik et al.
Stable release 8.2.10 / October 2014[1]
Written in Emacs lisp
Type Personal information management, Notetaking, Outlining, Literate programming
License GPL
Website orgmode.org

Org-mode (also: Org mode)[2] is an editing and organizing mode for notes, planning, and authoring in the free software text editor Emacs. It is characterized by a flexible and versatile system which adapts to various workflows, simple and complex,[3] and by an extensive and extensible function (structured text editing, personal organization, web publishing, programming, etc.),[4] which can integrate with a large variety of external systems and resources.[5]

Org-mode was created by Carsten Dominik in 2003, originally to organize his life and work as a scientist,[6] and since the first release numerous users and developers helped him to improve this free software package,[7] which has grown to over 127,000 lines of code.[8] Org-mode is part of Emacs[9] as a major mode — although it is also released separately, and newer versions of Org-mode than the ones shipped with Emacs are often available. Bastien Guerry is the current maintainer, in cooperation with an active development community.[10]

System

As briefly described by Org system author Carsten Dominik, "Org-mode does outlining, note-taking, hyperlinks, spreadsheets, TODO lists, project planning, GTD, HTML and LaTeX authoring, all with plain text files in Emacs."[11]

All functionality is optional, to adapt to different use cases with diverse degrees of complexity. From the Org-mode home page, on simplicity and depth: "At its core, Org-mode is a simple outliner for note-taking and list management. You can learn the basics for using it in five minutes.[12] This may be all you need, and Org-mode will not impose more complex features on you. [...] The full feature set is both broad and deep, easy to access, but unobtrusive."[13]

Most aspects of Org-mode's behavior are customizable, in the standard Emacs manner, either by setting variables directly in the .emacs init file, or by using the more user-friendly Customize interface.[14]

The Org system is based on plain text files with a simple markup. A full functionality implies the use of Emacsavailable for most operating systems (Unix, Linux, Apple's OS X, MS Windows, Android, etc.) — or alternatively the use of Vim plugins or Org mobile apps for subsets of the functionality. However, Org's plain text files are directly readable and flexibly editable like any text document and by any text editor (including mobile editors), searchable with common tools such as grep, etc., and manipulable by most programming languages, which results in the maximum available portability and integration between different computers, mobile devices, and operating systems.[15] Emacs and other text editors can be configured to use UTF-8 for international compatibility.[16] Plain text, as a universal open format standard, is also considered by digital archives a high confidence format for long-term data preservation.[17][18]

The system includes a lightweight markup language designed to be easy to write and read in plain text files (similar in function to Markdown, reStructuredText, Textile, etc., with a different implementation), to be exportable (to .html, .tex, .pdf, .odt, etc.), and also to enable functionality, for text formatting such as  *bold*, /italic/, =code=, ~verbatim~, _underlined_, +strike-through+, :tags/drawers:, [[links]], | tables |, - lists, 1. ordered lists, - [X] checklists/tasks, * headlines/projects...

In addition to the Org markup, embedded LaTeX markup can also be used to represent mathematical symbols and formulae.

Functionality

Org-mode, also known as the Emacs Org mode, has specific support for a number of uses, such as maintaining to-do lists, project planning, and writing web pages. For example, to-do items can optionally be given priorities and deadlines, subdivided into simple steps (nested sub-to-dos and/or checklists), and given tags and properties. An agenda for the items to be done this week or day can then be automatically generated by Org-mode.[19]

Other examples of functionality include:

Plain text hierarchical documents or outlines,[20] which for instance can have the same function (structured notes, brainstorming...) and be exported as mind maps in tree form. There is optional indentation for a cleaner outline view.

A org file shown in emacs text-mode
The same org file shows all trees in emacs org-mode
The same org file shown in overview in emacs org-mode

Structure editing, with a comprehensive set of functions. For example, list items, including subitems, can be quickly moved up/down in a list — to order by priority (first thing first), etc. — using the key bindings M-up and M-down (M = Meta/Alt). If the list is ordered, renumbering is automatic. Also, C-c ^ (C = Ctrl) can automatically sort entries in the active region in a number of ways; it also sorts tables.

Capture, a method used to quickly note down ideas, thoughts or links, and then file them away, edit them or categorize them later. Or, for example, when distractions appear during work hours, they can be promptly noted down to do them later at a suitable time, increasing concentration and efficiency at work. Templates are used for capture items, context (such as external link, timestamp, etc.), and target locations. E.g., among the various target types (where the captured item should be placed) there are file, heading, or a date tree in a file, that is a calendar in the form of an outline of years, months and days. There are many possible ways to use Org-mode, and for instance alternatives or complements to agenda views can be options such as the aforementioned date trees in one file, or simple calendar files compatible with any mobile text editor (e.g. hours.org, days.org, months.org, years.org). Any of these options can include schedules and references to other files (e.g. projects, task lists and notes for work and study, free time, people, etc.).[21] Also, a simpler alternative or complement to Org's capture method can be Emacs' custom find-file dedicated keys, such as <C-f1>, to directly open most used .org files for quick notes.[22]

Search options (links, tags, properties, agenda), in addition to those in Emacs (incremental search, helm,[23] deft,[24] Emacs grep, occur, etc.). E.g., with property searches like C-c / p, Org files can be used as searchable databases.[25]

Org files as interconnected pages of a personal wiki, with external links like  [[file:Topic.org][topic]] or, using link abbreviations for absolute paths,  [[wiki:Topic][topic]]. Other methods for quick file and buffer (opened file) navigation are Emacs' Dired, Buffer Menu, Speedbar, and Sr-Speedbar. Also, Org-velocity and Emacs' Deft are similar to Notational Velocity.

Org-mode can be used as a distributed issue tracker, by storing .org files in a distributed revision control system such as Git. Developers of the Org-babel extension to Org-mode (for integration with programming languages) used Org-mode in this way to track bugs and feature requests.[26]

Add-on packages, contributed by different developers in a wide variety from, for example, generic exporters to any user-defined markup format such as Wikipedia's markup (org-export-generic, org-export), to flashcard learning systems implementing SuperMemo's algorithms (org-drill, org-learn).[27]

And, for instance: tree visibility cycling, quick table and spreadsheet editing, 2D and 3D information graphs, habit tracking, views, work time clocking, effort estimates, attachments, archiving, appointment reminders, automatic web publishing, customizable hook variables, etc.[28][29]

There is extensive functionality related to integration with other systems.

Integration

Org-mode can integrate with:

Some of the integrations above require third-party Org-mode extensions, all of which are free software.

See also

External links

References

  1. "Org mode for Emacs – Your Life in Plain Text". orgmode.org. OrgMode team. Retrieved 2015-04-10.
  2. Gmane: Org, Org-mode, Orgmode, Org Mode - Carsten Dominik: Org, the system; Org-mode, the major mode
  3. See System section
  4. See Functionality section
  5. See Integration section
  6. Dominik, Carsten, Emacs Org-mode: Organizing a Scientist's Life and Work (abstract and video), Max Planck Institute for Neurological Research
  7. Org Mode Manual: History and acknowledgments, Free Software Foundation
  8. org-mode, Black Duck Open Hub (open-source project statistics)
  9. Corbet, Jonathan (2006), "Pre-testing Emacs 22", LWN.net
  10. Org mode for Emacs – Community
  11. Dominik, Carsten, Technical description in 24 words
  12. O'Toole, David, Org tutorial
  13. The Internet Archive: orgmode.org (2011-07-23)
  14. GNU Emacs Manual: Customization, Free Software Foundation
  15. "Plain text is supported by nearly every application program on every operating system" (The Linux Information Project: What is plain text?)
  16. Emacs and UTF-8 encoding
  17. Recommended Data Formats for Preservation Purposes (PDF), Florida Digital Archive
  18. University Digital Conservancy Preservation Policy, University of Minnesota Digital Conservancy
  19. Chavan, Abhijeet (2007), "Get Organized with Emacs Org-mode", Linux Journal
  20. Chua, Sacha, Outlining Your Notes with Org
  21. Cave, Charles, Capture mode and Date Trees in org-mode
  22. EmacsWiki: Dedicated Keys
  23. helm
  24. deft.el
  25. Janusz, Edward, Emacs, Org Mode, and a database like no other
  26. Org-babel development
  27. Org-mode Contributed Packages
  28. The Org Manual, Free Software Foundation
  29. Hansen, Bernt, Org Mode - Organize Your Life In Plain Text
  30. EmacsWiki: Calfw, a calendar framework for Emacs
  31. BBDB for GNU Emacs
  32. Danjou, Julien, org-contacts
  33. EmacsWiki: OrgOutlook
  34. GNU Emacs for Android
  35. EmacsWiki: Maemo Emacs, Category Ports
  36. Org mobile apps: MobileOrg for iOS, MobileOrg for Android, MobileOrgNG for Android
  37. Chua, Sacha, zomg, Evernote and Emacs
  38. Toodledo, integrated with org-toodledo
  39. Vim plugins for Org-mode functionality: VimOrganizer, vim-orgmode, VOoM, vxfold.vim
  40. EmacsWiki: Viper, Evil (Vi/Vim emulation layers)
  41. Steckerhalter: ob-php
  42. Babel: active code in Org-mode
  43. GitHub Markup
  44. Bao, Haojun, org-jira
  45. Magnusson, Daniel, orgmode
  46. Dumont, Antoine R., org-trello – Sync org-mode file and trello
  47. Novoid: Memacs
  48. Aptel, Aurélien, Org-sync
  49. BBCode: ox-bbcode.el

Books

Journal articles