История Markdown
Что такое Markdown?
Markdown — это лёгкий язык разметки с простым синтаксисом форматирования текста. Его главная цель — быть «читаемым человеком» в исходной форме (исходный код) и легко конвертируемым в валидный HTML. С момента выпуска в 2004 году он стал фактическим стандартом для писателей, разработчиков и создателей контента в интернете.
Markdown — это две вещи: (1) простой синтаксис форматирования текста; и (2) программный инструмент, изначально написанный на Perl, который преобразует это форматирование в HTML.
Происхождение и мотивация (до 2004)
До Markdown написание для веба требовало знания HTML (HyperText Markup Language) или использования WYSIWYG-редакторов («What You See Is What You Get»), которые часто генерировали тяжёлый и трудно поддерживаемый код.
Существовали другие лёгкие языки разметки, такие как Textile и reStructuredText, но многие всё ещё выглядели как компьютерный код или требовали сложных тегов. Вдохновение для Markdown пришло из простого источника: форматирование, используемое в обычных текстовых электронных письмах.
В ранние дни интернета пользователи уже использовали интуитивные соглашения для форматирования писем: *звёздочки* для выделения, > знаки для цитат и тире для списков. Эти естественные соглашения стали основой синтаксиса Markdown.
Создание (2004)
Markdown был создан Джоном Грубером (род. 1973), технологическим блогером, UI-дизайнером из Филадельфии, штат Пенсильвания, и создателем популярного блога Daring Fireball, при значительном вкладе Аарона Шварца (1986-2013), гениального программиста-вундеркинда и интернет-активиста.
У Грубера была оригинальная идея, и он написал начальный скрипт на Perl, который преобразовывал размеченный текст в HTML. Его философия была ясна: размеченный документ должен быть публикуемым как есть, как простой текст, без признаков заполнения тегами или инструкциями форматирования.
Аарон Шварц работал над синтаксисом вместе с Грубером. Шварц уже создал atx (другой язык разметки) и повлиял на создание синтаксиса заголовков с использованием #, а также помог уточнить правила преобразования HTML в текст.
Версия 1.0.1 была публично выпущена 17 декабря 2004 года под открытой лицензией BSD.
«Главная цель дизайна синтаксиса форматирования Markdown — сделать его максимально читаемым. Идея в том, что документ, отформатированный в Markdown, должен быть публикуемым как есть, как простой текст, без признаков разметки тегами или инструкциями форматирования.»
— John Gruber, Daring Fireball
Создатели
Джон Грубер
Создатель Markdown
Технологический блогер и UI-дизайнер, родившийся в 1973 году в Филадельфии. Создатель Daring Fireball, одного из самых влиятельных технологических блогов, посвящённых продуктам Apple. Также ведёт подкаст The Talk Show. Грубер получил степень бакалавра наук в области компьютерных наук в Университете Дрексела.
Фото Randy Stewart • Wikimedia Commons • CC BY-SA 3.0
Фото: Wikimedia Commons • CC BY-SA 3.0
«Аарон Шварц заслуживает огромной похвалы за его отзывы о дизайне синтаксиса форматирования Markdown. Markdown намного лучше благодаря идеям, отзывам и тестированию Аарона.»
— John Gruber
Фрагментация: Эпоха Дикого Запада (2005-2012)
Поскольку оригинальный скрипт Грубера на Perl имел некоторые неоднозначности и не охватывал все случаи использования (например, таблицы или математические определения), сообщество начало создавать собственные реализации на других языках, таких как Python, Ruby, PHP и JavaScript.
Это привело к фрагментации. Разработчики добавляли дополнительные функции, которых не было в оригинальной спецификации. Появились так называемые «Разновидности» Markdown:
MultiMarkdown (2005) — Создан Флетчером Пенни, добавил поддержку таблиц, сносок, метаданных и экспорта в LaTeX.
PHP Markdown Extra — Популярная версия для CMS на PHP (таких как WordPress и Drupal), созданная Мишелем Фортеном.
GitHub Flavored Markdown (GFM) — Возможно, самый влиятельный вариант. GitHub принял Markdown для файлов README.md, комментариев и issues, добавив подсветку синтаксиса для блоков кода, списки задач и таблицы. Популярность GitHub закрепила Markdown как необходимый инструмент для разработчиков.
Хронология
2004
Оригинальный выпуск
Джон Грубер публикует Markdown 1.0.1 17 декабря в блоге Daring Fireball, включая скрипт Perl для конвертации и начальную поддержку Movable Type, Blosxom и BBEdit.
2004
PHP Markdown
Мишель Фортен портирует Markdown на PHP, создавая одну из первых альтернативных реализаций. Позже добавляет расширения, такие как таблицы и сноски, в PHP Markdown Extra.
2008
GitHub принимает Markdown
GitHub начинает использовать Markdown для README и документации, массово популяризируя синтаксис среди разработчиков по всему миру.
2012
GitHub Flavored Markdown (GFM)
GitHub создаёт собственное расширение на основе парсера Sundown, добавляя таблицы, подсветку синтаксиса, списки задач и автоссылки.
2012
Начало стандартизации
С таким количеством разных «разновидностей» документ Markdown мог отображаться по-разному в зависимости от сайта или приложения. Это расстраивало компании вроде Stack Exchange и GitHub. Джефф Этвуд (сооснователь Stack Overflow) и Джон Макфарлейн начинают усилия по созданию строгой стандартной спецификации.
2014
CommonMark
Изначально называвшийся «Standard Markdown», проект столкнулся с возражениями Джона Грубера, который утверждал, что его Markdown является стандартом и не хотел, чтобы третьи лица присваивали это имя. После спора проект был переименован в CommonMark. Спецификация предоставляет наборы тестов для обеспечения одинакового поведения Markdown в любой системе.
2016
Регистрация IETF
IETF публикует RFC 7763 и RFC 7764, официально регистрируя медиа-тип text/markdown.
2017
GFM на основе CommonMark
GitHub прекращает поддержку Sundown и выпускает формальную спецификацию GitHub Flavored Markdown на основе CommonMark, используя библиотеку cmark.
Универсальный стандарт
Универсальный стандарт
Расширения файлов: .md и .markdown. Используется на миллионах сайтов, включая Stack Overflow, Reddit, Discord, Notion и Obsidian.
Текущее состояние
Сегодня Markdown вышел за пределы мира программирования и вездесущ в цифровой культуре. Основные области его использования включают:
Техническая документация — Это отраслевой стандарт. Сайты вроде Microsoft Learn, Google Cloud Docs и документация GitHub написаны на Markdown.
Генераторы статических сайтов (SSG) — Инструменты вроде Jekyll, Hugo и Gatsby используют файлы Markdown для генерации целых сайтов.
Заметки и продуктивность — Новая волна приложений «второго мозга», таких как Obsidian, Notion, Roam Research и Logseq, использует Markdown для хранения данных, гарантируя, что пользователи не застрянут в проприетарных форматах.
Наука о данных — Jupyter Notebooks, незаменимый инструмент для data-сайентистов (Python/R), используют ячейки Markdown для объяснения кода и представления результатов.
Мессенджеры — Slack, Discord, WhatsApp и Telegram поддерживают подмножества Markdown для форматирования сообщений.
Будущее и наследие
Markdown доказал свою устойчивость как технология. В отличие от проприетарных форматов (таких как .doc), которые меняются и ломаются со временем, файл Markdown, написанный в 2004 году, по-прежнему идеально читается сегодня любым человеком или компьютером.
Текущая тенденция указывает на «Расширенный Markdown», такой как MDX, который позволяет использовать компоненты React внутри Markdown, объединяя простоту написания с интерактивностью современного веба.
«Markdown демократизировал веб-публикации, позволяя писателям сосредоточиться на контенте, не беспокоясь о дизайне, и позволяя разработчикам создавать красивую и функциональную документацию без тяжести сложных текстовых процессоров.»
Наследие продолжается
Спустя более двух десятилетий после создания Markdown вездесущ. Простота, к которой стремились Грубер и Шварц, стала реальностью: миллионы людей пишут на Markdown каждый день, часто даже не зная, что используют язык разметки.
Видение Аарона Шварца об открытом и доступном интернете продолжает жить в духе Markdown: бесплатный, простой инструмент, который демократизирует создание контента для веба. Его приверженность социальной справедливости и свободному доступу к информации глубоко повлияла на то, как мы делимся знаниями онлайн.
Оригинальный скрипт Markdown.pl не обновлялся с 2004 года, но его наследие живёт в сотнях реализаций практически на каждом языке программирования, от C до JavaScript, от Python до Go.
Ссылки и официальные источники