Introducción a Org-roam
1. Presentación
Org-roam es un sistema basado en texto plano para la gestión de conocimiento. Está inspirado en el método Zettelkasten y funciona sobre la base del poderoso editor GNU Emacs y el Modo Org. En esta breve e incompleta charla, revisaremos algunas de sus características principales y alguna configuración básica orientada a obtener una mayor productividad.
2. Herramientas
2.1. GNU Emacs
2.1.1. Instalación
- Debian
# apt install emacs
- Void
# xbps-install emacs-gtk3
2.2. Modo Org
- El Modo Org es un modo mayor de Emacs.
- Presentado en el paper A Multi-Language Computing Environment for Literate Programming and Reproducible Research.
- Tomar notas, realizar listas TODO, evaluar código, etc.
- Software libre bajo la licencia GPL v3.
- Viene implementado por defecto en una instalación estándar de Emacs.
2.3. Org-roam
- Org-roam es un sistema de notas no jerárquicas basado en las características de Roam Research.
- Agrega nuevas características al modo Org, aumentando su sintáxis.
- Algunas de sus características:
- Privacidad y seguridad.
- Texto plano.
- Libre bajo licencia GPL v3.
- Construído sobre Emacs.
- Una buena introducción a Org-roam (en inglés) se puede encontrar en el canal System Crafters de David Wilson.
3. Método Zettelkasten
- Atribuído al sociólogo alemán Niklas Luhmann.
- Hace énfasis en conectar las ideas de manera no jerárquica.
- Consiste en notas breves en tarjetas, interconectadas entre sí mediante un ID en la esquina de la misma nota.
3.1. Notas fugaces
- Notas rápidas con información que en un futuro puede ser utilizada o desechada.
- Normalmente hace uso de
org-capture
o usa la funcionalidadorg-roam-dailies
de Org-roam.
3.2. Notas permanentes
- Se dividen en dos categorías.
- Notas literarias
- Anotaciones breves sobre una fuente en particular –libros, webs, papers– a las que quieres tener acceso posteriormente.
- Notas conceptuales
- Deben ser auto explicativas y detalladas.
4. Método tradicional vs. Zettelkasten
- Método tradicional
- Consiste en almacenar las notas en directorios jerárquicos, divididos por área temática, autor, etc.
- Método Zettelkasten
- Consiste en almacenar todas las notas en el mismo directorio y relacionarlas entre ellas utilizando –en el caso de Org-roam– hipervínculos, logrando algo así como una wiki de conocimiento personal.
5. Configuración básica
- Las siguientes líneas de código pueden ser agregadas al archivo de configuración de Emacs.
- La ruta donde se almacenan las notas tomadas con Org-roam es en este ejemplo
~/org/roam/
, pero puede ser reemplazada por cualquier otra. - Se recomienda utilizar un directorio exclusivo para las notas de Org-roam, y no mezclarlas con los demás archivos
.org
que almacenamos.
(use-package org-roam :ensure t :init (setq org-roam-v2-ack t) :custom (org-roam-directory (file-truename "~/org/roam")) :bind (("C-c n l" . org-roam-buffer-toggle) ("C-c n f" . org-roam-node-find) ("C-c n i" . org-roam-node-insert)) :config (org-roam-setup)
6. Org-Roam-UI
- Org-Roam-UI es un frontend gráfico que nos permite visualizar nuestras notas y las relaciones entre ellas de una manera más comprensible.
- Una configuración básica:
(use-package org-roam-ui :after org-roam :config (setq org-roam-ui-sync-theme t org-roam-ui-follow t org-roam-ui-update-on-save t org-roam-ui-open-on-start t))
7. Templates
- Nuevamente, podemos encontrar una introducción al sistema de templates de Org-roam (en inglés) en el canal de System Crafters.
- Mis templates son almacenados en la ruta
~/.emacs.d/templates/roam/
y pueden ser revisados acá. - Agrego esto en mi archivo de configuración de Emacs para llamar a los templates:
(org-roam-capture-templates '(("a" "Author" plain (file "~/.emacs.d/templates/roam/author.org") :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t) ("b" "Bibliography" plain (file "~/.emacs.d/templates/roam/biblio.org") :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t) ("c" "Concept" plain (file "~/.emacs.d/templates/roam/concept.org") :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t) ("d" "Default" plain "%?" :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t) ("f" "Field" plain (file "~/.emacs.d/templates/roam/field.org") :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t) ("q" "Quote" plain (file "~/.emacs.d/templates/roam/quote.org") :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") :unnarrowed t)))
8. Alternativas
8.1. Libres
- Denote, desarrollado por Protesilaos Stavrou.
- Logseq, una alternativa gráfica y fácil de utilizar.
8.2. Privativas (no recomendadas)
- Obsidian
- Roam Research
- Notion