4 ms·
Markdown doesn’t suck. Markdown parsers suck, because they’re all different. Markdown has a spec, but nobody follows it because they want it to do more. Obli
by thomasedwards 7y ago
Markdown doesn’t suck.
Markdown parsers suck, because they’re all different.
Markdown has a spec, but nobody follows it because they want it to do more.
Obligatory xkcd: https://xkcd.com/927/ https://xkcd.com/927/
- tkfu 7y agoMarkdown doesn't have a spec. There's a "syntax description", which leaves a lot of ambiguities, and the original Perl script, which you could consider a reference implementation. But there certainly isn't a spec. (Or, alternatively, there are several competing specs, like CommonMark, Standard Markdown, and GitHub-flavoured Markdown. But your comment seems to be suggesting that there's one authoritative spec, which there definitely isn't.)
- joeblau 7y agoMarkdown does have a spec created and posted by the person that invented it, John Gruber[1]. The problem is that people keep adding features to it and no one follows the actual markdown spec. [1] - https://daringfireball.net/projects/markdown/ https://daringfireball.net/projects/markdown/
- tkfu 7y agoThat's not a spec, and it doesn't claim to be one. It's the syntax description that I referred to above. A spec needs to unambiguously <em>spec</em>ify the grammar.
- joeblau 7y agoJohn didn't invent it for everyone to implement it on everything on the internet. He invented it for him to use on his blog because he's a writer and wanted to focus on his content, not on writing HTML. Just because it's not "specified" that doesn't mean it's not the canonical spec. All of the other additions that aren't on that page aren't based on the canonical version of Markdown.
- cookiecaper 7y agoIf your language: a) covers so little that every implementer feels a need to put their own conflicting extensions on it; b) cannot be implemented consistently enough that one can be reasonably confident a document will probably render nearly-enough to not be described as 'broken' across engines; and c) provides a "spec" in the sense of prose describing the author's intended meaning, but not a grammar or other formalization, test suite, etc. that can be considered authoritative for certifying that a given implementation is compliant (where compliant means that engines taking the same input will produce output close-enough to not be considered "broken" when compared to each other); then your language probably sucks. Maybe it doesn't suck in the theoretical world where everything goes exactly as the language designer fantasizes, but it sucks in the actual world where people live and operate.