什么是 Markdown?
它是一种用于编写结构化文档的纯文本格式,基于电子邮件和 Usenet 的格式化约定。
Markdown 是谁创造的?
它由 John Gruber 于 2004 年与 Aaron Swartz 合作开发。Gruber 用 Perl 编写了第一个 Markdown 转 HTML 的转换器,此后它很快在网站上被广泛使用。到 2014 年,已经出现了数十种不同语言的实现版本。
为什么需要 CommonMark?
John Gruber 关于 Markdown 语法的权威描述并没有对语法进行明确的定义。
由于缺乏规范,早期的实现者只能参考原始的 Markdown.pl 代码来解决这些歧义。但 Markdown.pl 漏洞百出,在许多情况下会产生明显错误的渲染结果,因此它并不能作为规范的令人满意的替代品。Markdown.pl 最后一次更新是在 2004 年 12 月 17日。
由于没有明确的规范,过去 10 年里,各种实现版本之间产生了巨大的分歧。结果,用户经常惊讶地发现,在某个系统(例如 GitHub wiki)上按一种方式渲染的文档,在另一个系统(例如使用 Pandoc 转换为 docbook)上渲染的效果却完全不同。更糟糕的是,由于 Markdown 中没有所谓的“语法错误”,这些分歧往往无法被立即发现。
Markdown 没有标准的测试套件;MDTest 是我们曾经最接近的标准,但现在已经过时。目前解决 Markdown 歧义和不一致问题的最佳方式是 Babelmark 3,它通过对比 20 多种 Markdown 实现的输出结果,来观察是否能达成共识。
我们提议制定一个标准的、无歧义的 Markdown 语法规范,并配套一套全面的测试套件,用于验证 Markdown 实现是否符合该规范。我们认为这对于 Markdown 的未来是必要的,甚至是不可或缺的。
你们现在是谁?
我们是一群 Markdown 爱好者,正持续为实现 CommonMark 的愿景而努力——即一个标准的、可互操作且可测试的 Markdown 版本。
- John MacFarlane, jgm@berkeley.edu
- Martin Woodward, martinwoodward@github.com
- Jeff Atwood, jatwood@codinghorror.com
2014 年项目刚启动时,你们是谁?
我们是一群 Markdown 爱好者,要么就职于拥有工业级 Markdown 部署规模的公司,要么编写过 Markdown 解析器,要么在支持终端用户使用 Markdown 方面拥有丰富的经验——或者兼而有之。
- John MacFarlane,来自 Pandoc
- David Greenspan,来自 Meteor
- Vicent Marti,来自 GitHub
- Neil Williams,来自 Reddit
- Benjamin Dumke-von der Ehe,来自 Stack Overflow / Stack Exchange
- Jeff Atwood,来自 Discourse
我该如何提供帮助?
试用我们的 参考实现,或者在您偏好的环境或语言中 寻找社区实现。请提供 反馈!
如果您偏好的环境或语言中尚不存在 CommonMark 实现,请尝试 实现您自己的 CommonMark 解析器。我们的主要目标之一就是 明确定义 Markdown 语法,并消除许多长期存在、使得 Markdown 使用变得困难的不一致性和歧义。我们成功了吗?
我在哪里可以找到它?
spec.commonmark.org
CommonMark 规范。
code.commonmark.org
GitHub 上的参考实现和验证测试套件。
talk.commonmark.org
通过 Discourse 提供的公共讨论区和邮件列表。
commonmark.org/help
学习 Markdown 的快速参考卡片和交互式教程。
spec.commonmark.org/dingus
由参考实现驱动的在线测试工具。
规范什么时候最终定稿?
经过多年的公众反馈,当前版本的 CommonMark 规范已经相当稳健。
目前已有适用于 数十种编程语言 的 CommonMark 实现,以下网站和项目已经采纳了 CommonMark:
- Discourse
- GitHub
- GitLab
- Qt
- Stack Overflow / Stack Exchange
- Swift