Существует целый ряд способов приспособить Emacs для ведения базы знаний/картотеки. Некоторые из них у всех на слуху, другие – менее известны. В этом очерке я перечислю пакеты Emacs, специализированные под подобную задачу.
Однако углубляться в анализ их сильных и слабых сторон мы не будем, иначе текст получится чрезмерно длинным (к тому же я не всё испытал на себе). Цель данной статьи лишь в том, чтобы обратить внимание читателя на существующие альтернативы и богатство возможностей1.
Некоторые разработчики, следуя законам спроса и предложения, подражают популярному приложению Roam Research. Под него вообще много кто мимикрирует (хотя, и само приложение тоже не оригинально).
Самым ярким в списке реплик является пакет Gkroam. Кинней Жанг попытался приблизить визуальную составляющую к прототипу, насколько это вообще возможно при использовании простого текста. Правда, Gkroam не стяжал и доли того внимания, которое досталось другой реплике Roam Research.
Детище Джефро Куана — Org Roam — стало самым известным проектом в среде Emacs энтузиастов. Org Roam можно приспособить и к системе а-ля Zettelkasten, особенно если установить еще один пакет — Zetteldesk.el
Визуализация связей между заметками возможна благодаря дополнительному пакету — org-roam-ui
Пакет Org roam полагается в своей работе на базу данных в формате SQL. База данных не только облегчает поиск по заметкам, но и существенно расширяет возможности для аналитики. Тут может пригодится еще один дружественный пакет — Vulpea.
Пакет Org Gnosis от Таноса Аполло следует той же логике (SQL, возможность визуализации и т. п.).
Существует попытки развивать концепцию Org Roam и без использования базы данных. Один из таких пакетов — Minaduki от Кисараги Хиу. Из преимуществ — лучшая интеграция с markdown. Автор уверяет, что можно даже файлы из Obsidian использовать.
Мартин Эдстрём разработал пакет org-node. Здесь представлено еще одно решение без привязки к базе данных.
По схожему пути пошел и создатель пакета orgrr. Сокращение означает: org-roam ripgrep.
Однако далеко не все разработчики пакетов для заметкоделия в Emacs подмигивают Конору Уайт-Салливану. Есть и другие образцы для подражания, например, известная программа TheBraine.
Вообще попытки создать реплики приложений, заточенных на визуализацию, в текстоцентрированном Emacs — это интересный феномен. Копии не получается, но одновременно открываются новые возможности работы с текстом. Пакет от Эрика Сьёстранда — Org-brain как раз такой. Это самобытная интерпретация идей, заложенных в программу TheBraine.
Еще один пакет — Deft — реверанс в сторону Notational Velocity. Deft позволяет быстро искать, фильтровать, просматривать и создавать заметки. Формат заметок может быть как txt, так и markdown или org. Вы можете использовать еще один плагин создателя Deft — Джейсона Блевинса — Markdown Mode, чтобы форматировать текст и добавить гиперссылки.
Deft, судя по обсуждениям на форумах, становится медлительным, когда счет заметок превышает тысячу. Существуют разные способы обойти эту проблему, самый радикальный из них — вообще заменить пакет на альтернативу — Notdeft.
Элиас Стормс создал на базе Deft пакет Zetteldeft. Как следует из названия, это уже попытка имплементировать средствами Emacs картотечную систему Лумана. Разработка Стормса содержит кучу разных настроек и функций. Проект продолжает развиваться, хотя и оттеснен на периферию из-за ажиотажа вокруг Org-roam. Проблемы тут те же, что и с Deft. Пользователи жалуются на затормаживание при большом количестве файлов.
Следующие два пакета — попытки реализовать лумановские цепочки заметок (folgezettel). Нумерация Лумана позволяла ему располагать карточки в определенной последовательности. О необходимости подобной системы в цифровых картотеках ведутся дискуссии. Некоторые считают подобную технику избыточной, другие клянутся, что это и есть тайный ингредиент писательской продуктивности.
Бруно Конте создал пакет Phi-notes. Выглядит очень опрятно и содержит все функции столь популярные сегодня в среде PKM (обратные ссылки, теги, боковая панель и т.п.). Но кроме этого вы можете создавать родительские и дочерние заметки, указывая на зависимости и создавая иерархии (правда, осуществляется это с помощью ссылок, а не благодаря нумерации). Автор уверяет, что система исправно работает с 10000 заметок.
Грант Россон предлагает еще один вариант реализации zettelkasten — пакет zk. На самом деле, это целый набор пакетов, которые позволяют организовать цифровую картотеку с богатым функционалом. Посмотрите эффектную демонстрацию на YouTube канале Россона.
Андрю Хайетт разработал пакет ekg (emacs knowledge graph), позволяющий вести заметки и организовывать разрозненные данные. Метаданные организованы с помощью тегов, которые хранятся в базе sqlite. Вы можете посмотреть его видеопояснение.
Пакет org-supertag тоже выстраивает систему вокруг тегов. Он концептуально он напоминает Tana. Здесь можно вытворять с тегами самые невероятные вещи.
Еще одно интересное решение для базы знаний предлагает пакет Hyperbole. На самом деле это сразу несколько инструментов собранных вместе. С помощью Koutliner можно создавать цепочки заметок как у Лумана. HyRolo позволяет быстро искать и анализировать информацию. Hyperbole можно использовать и отдельно, и в купе с другими пакетами Emacs. Вот один из вариантов ведения здесь картотеки от Хонари Рамина – Build a Zettelkasten with the Hyperbole Rolodex
Я приберег два варианта реализации базы знаний в Emacs под конец статьи. Это будет наградой для тех, кто выдержал нудный текст.
Пакет Denote от Протосилауса Ставру – пример детально продуманной и прекрасно документированной системы. Вы можете посмотреть видео, к котором Ставру показывает принципы работы в Denote.
Довольно показательно, что некоторые пользователи начинают мигрировать с Org-roam на Denote. Конечно, каждый подход имеет свои плюсы и минусы, и это не выбор, которые драматически изменит жизнь. Однако система Ставру, как кажется, выстроена на более надежных решениях и не умножает без нужды сущности, а использует простые функции, встроенные в Emacs.
Еще один пакет, определенно заслуживающий большего внимания, — howm. Это разработка японского программиста и преподавателя Казуюки Хираока. Простота и элегантность системы — вот, что подкупает в разработке Хираока.
Популяризации пакета во многом помешал языковой барьер (основная документация на японском). Для того, чтобы исправить ситуацию, я написал подробный самоучитель на русском языке.
В отличие от разных поделок на злобу дня, за проектом howm стоит ряд мировоззренческих решений (философия, если угодно). Девиз hown — «Write fragmentarily and read collectively» — на мой взгляд, хорошо отражает саму суть картотеки.
Emacs — система, богатая возможностями, и их вполне достаточно для построения базы знаний. Некоторые пользователи предпочитают ограничиться минимальным набором сторонних пакетов. Вместо того, чтобы использовать готовые решения «под ключ», они создают собственные хитрые конфигурации.
Вот несколько источников, для тех, кому интересно, как это может выглядеть:
Voit Karl. Linking Headings With org-super-links (Poor-Man’s Zettelkasten)
А вот еще видео с объяснением, как все это работает.
Dindi Garjola. My Zettelkustom (with Emacs, of course)
Herklotz Yann. Introduction to Luhmann’s Zettelkasten
Если вас заинтересовали возможности Emacs, но вы не знаете, как к этой программе подступиться, начните со статьи «Как оседлать Emacs?».
Я не ставил задачи собрать полную коллекцию, и остановился на самых известных решениях
Definitely,
After trying deft, notedeft, org-mode, org-roam,
zetteldeft, denote, scraps, side-notes, and now
howm...
The best Emacs package I've use for doing
almost everything (including notetaking) is eev
;; eev
;; https://github.com/edrx/eev
(use-package eev
:ensure t)
;; Then, hit "M-j"
;; to start exploring it or head to the github
;; link above (the author, a Brazilian Maths professor)
;; has a webpage and many video tutos on how to use eev on Emacs
;; You can do lots (but, lots) of stuff with this package
Можно ли использовать Emacs как дневник или для этого больше подходят другие приложения? Если да то это желательно делать в howm вместе с картотекой или отдельно?