Revisiting mime-types and file extensions

Thomas Nichols nichols7 at
Thu Jun 21 06:07:33 EDT 2007

Michel Fortin wrote:

> Le 2007-06-20 à 5:51, Thomas Nichols a écrit :


>> Having a mime type of 'text/x-markdown' and a profile URI

>> declared by the author of the language grammar (e.g.

>> "") seems an economical solution, and would follow

>> the pattern for [XML namespaces][xml-namespaces], Java JAXP feature

>> URIs[jaxp-features] and [OpenID identifiers][openid]


> All these need a unique identifier to work anywhere, ensuring that

> authors will create the unique identifier. Not the case with Markdown:

> anyone can create his own version without creating a corresponding

> unique identifier. If a downstream developer, someone else than the

> original author, needs an identifier and decide to create one, nothing

> ensure others will use the same identifier; and here goes the "unique"

> part of the identifier.

Yup, this is true - so maybe it would be good for the author of any new
Markdown-derivative syntax to specify an identifying URI (as you have
done below)? It most certainly should not be the _document_ authors who
create such URIs, and if it is a downstream _processor_ author, for
example Andrea Censi with Maruku, then he could define a new URI - perhaps
- and declare that it is a superset of the specs
(or whatever Mr Gruber would care to choose as a profile identifier).


> Beside, what does the identifier corresponds to anyway? A specific

> implementation? A particular syntax? One version of that

> implementation or that syntax or all of them? I can't really figure

> out right now: how many "unique" identifiers are needed and how are

> each going to be used?

A great reason for having formal language grammars! :-)

In the absence of such grammars, though, we have "the syntax supported
by 1.01" or "the syntax as specified at
(in other words, John Gruber's syntax definition as at 30 May 2006). I'm
guessing that a new URI will typically be issued for a new version of a
spec, introducing features that are not handled (or - gasp - are handled
differently) in earlier versions.

As a CMS developer, when processing a document, I can examine the
mime-type (text/x-markdown) and look for a profile URI. I can then
select an appropriate processor for this profile, or warn the user if it
is not a profile that I recognize. All that is needed to get this to
work is for "downstream developers" of Markdown-derivative processors to
define their own URI and to declare which other profiles are supported.
I'd guess that in order to be considered a Markdown processor at all,
John Gruber's original profile should always be supported.



>> Any suggested changes to this? Michel, would you care to propose a URI

>> for Markdown Extra, should anyone decide they'd like to use one?


> I'm still not sure using URLs for this is worthy, but if someone wants

> a reference URL for Markdown Extra, I'd suggest using this:




> I've put a small explanatory document at this address. If you need

> versioning, here is what I suggest:





> These are the two points at which PHP Markdown Extra changed its

> syntax specification (besides beta versions) to accomodate new features.

Excellent, thank you very much; using fragment identifiers for versions
works for me. Andrea, would you be happy with
as profiles? And John, as the instigator of this dance, would you care
to suggest a canonical profile URI? Or should it be just

As per the XML namespaces spec, we'll be relying upon exact string
matching to identify profiles.

Thanks to all who've worked on this.


More information about the Markdown-Discuss mailing list