История Markdown

Официальный логотип Markdown

Логотип от Dustin Curtis Общественное достояние

Что такое 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

Создатели

John Gruber

Джон Грубер

Создатель Markdown

Технологический блогер и UI-дизайнер, родившийся в 1973 году в Филадельфии. Создатель Daring Fireball, одного из самых влиятельных технологических блогов, посвящённых продуктам Apple. Также ведёт подкаст The Talk Show. Грубер получил степень бакалавра наук в области компьютерных наук в Университете Дрексела.

Фото Randy Stewart Wikimedia Commons CC BY-SA 3.0

Aaron Swartz

Аарон Шварц

Со-создатель Markdown (1986-2013)

Программист-вундеркинд, предприниматель, писатель и интернет-активист. В 14 лет стал соавтором RSS 1.0. Был одним из первых архитекторов Creative Commons, разработчиком Open Library и сооснователем Reddit. Был введён в Зал славы интернета в 2013 году.

Фото: 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.

Ссылки и официальные источники

  • Daring Fireball: Markdown Официальный сайт оригинального проекта John Gruber
  • Markdown: Syntax Официальная документация по синтаксису
  • Wikipedia: Markdown Полная статья об истории и развитии
  • Wikipedia: John Gruber Биография создателя Markdown
  • Wikipedia: Aaron Swartz Биография со-создателя Markdown
  • Internet Hall of Fame: Aaron Swartz Дань памяти наследию Аарона
  • CommonMark Стандартизированная спецификация Markdown
  • GitHub Flavored Markdown Spec Спецификация GFM
  • Markdown Guide Полное справочное руководство
  • RFC 7763 Спецификация медиа-типа text/markdown
  • RFC 7764 Руководство для авторов text/markdown
  • MDX Markdown для эпохи компонентов
  • atx, the true structured text format Язык разметки, созданный Aaron Swartz