Инструменту с открытым исходным кодом Pandoc исполняется 20 лет. Он широко используется для преобразования документов между языками разметки и публикационными форматами.

Первая версия вышла 3 августа 2006 года под лицензией GPL. Pandoc 0.1 состояла из примерно 3000 строк кода на Haskell и умела конвертировать документы между Markdown, reStructuredText, HTML и LaTeX, а также генерировать вывод в RTF и S5.

Но, как часто бывает в open source, проект, начинавшийся с желания выучить Haskell, в итоге стал одним из самых известных приложений на этом языке.

Хотя Pandoc часто называют просто конвертером документов, правильнее считать его программируемой системой обработки документов. Она включает ридеры, преобразующие входные форматы в общее абстрактное синтаксическое дерево, и врайтеры, генерирующие желаемый выходной формат из этого внутреннего представления.

Модульная архитектура Pandoc не требует отдельного конвертера для каждой возможной пары форматов: достаточно добавить ридер и врайтер, и формат сможет участвовать в различных комбинациях преобразований. Более того, пользователи могут изменять структуру промежуточного документа с помощью пользовательских фильтров и встроенной поддержки сценариев на Lua.

В настоящее время программа поддерживает множество форматов: языки разметки, текстовые процессоры, академические форматы, форматы презентаций и публикаций. Среди них Markdown, HTML, LaTeX, DOCX, ODT, EPUB, AsciiDoc, reStructuredText, Org Mode, Typst, Jupyter Notebook, PowerPoint, DocBook, JATS, а также ряд вики- и библиографических форматов.

Проект давно вышел за рамки простого преобразования текста. Pandoc умеет генерировать цитирования и библиографию, обрабатывать математические выражения, использовать шаблоны и эталонные документы, создавать презентации и электронные книги и поэтому может служить основой для автоматизированных процессов публикации.

По словам создателя проекта Джона Макфарлейна, за последние двадцать лет вышло более 200 версий Pandoc, а четыре основных пакета сейчас содержат свыше 85 000 строк кода на Haskell (без учёта тестов). В проект внесли вклад более 600 человек, было обработано 7 346 задач на GitHub.

В последней версии 3.9 появилась важная возможность компиляции приложения в WebAssembly. Это позволило запускать практически полнофункциональную версию прямо в браузере, не отправляя документы на удалённый сервер.

В статье также затрагивается дискуссия об искусственном интеллекте. Хотя Макфарлейн признаёт, что ИИ-системы уже могут преобразовывать документы между некоторыми форматами, он подчёркивает несколько важных преимуществ Pandoc: гораздо более низкое энергопотребление, предсказуемый результат и более надёжные преобразования.

Так или иначе, Pandoc остаётся одним из самых универсальных издательских инструментов в сообществе open source. Это и программа командной строки, и библиотека на Haskell, способная преобразовать один структурированный документ в разные форматы: веб-сайт, страницу руководства, файл Word, научную статью, презентацию или электронную книгу.

Подробнее об истории Pandoc читайте в официальной ретроспективе к 20-летию, а исходный код проекта доступен в официальном репозитории на GitHub.