Scripting Media Types

Bruce Lilly blilly at erols.com
Wed Feb 9 20:35:39 CET 2005


On Tue February 8 2005 22:08, Bjoern Hoehrmann wrote:
> * Bruce Lilly wrote:
> >First, the proposed text subtypes are inappropriate; text subtypes
> >are reserved for human-readable text content, with or without
> >markup; see RFC 2046 section 4.  They are not to be used for
> >arbitrary content which happens to be textual, such as programming
> >and scripting languages; they are reserved for natural language.
> 
> That's probably true, but the alternative would be to continue using the
> unregistered types for several years as the application/* types are much
> less well-supported. For example, all SVG implementations I am aware of
> that support relevant scripting,support text/ecmascript (as the relevant
> specifications suggest) while none support application/ecmascript. There
> are about a million hits for type="text/*" but only a few hundred hits
> for type="application/*" using Google (where * are the relevant subtypes
> from the draft).

One cannot meaningfully speak of "support" in MIME terms for something
which is neither a registered MIME type nor in the category of types
and subtypes reserved for experimental and private-agreement use (i.e.
beginning with "x-").  Any treatment of unrecognized (i.e. unregistered,
or registered after an application's support was coded, or unrecognized
private-use) types or subtypes MUST be as documented in RFCs 2046 and 2049
for any MIME-compliant application.  In most cases, that means treating
such types as an opaque blob, i.e. as application/octet-stream.

Any application doing otherwise with unregistered type such as the ones
mentioned in your draft is clearly not MIME-compliant (a.k.a. "broken").
And that is independent of the number of instances of that non-compliant
application in the wild, or the number of inappropriately-labeled
files that those applications produce.

In short, there is a principle at work, and that principle is that text
is for humans, and is in a natural language (see RFC 2277, a.k.a. BCP
18).

> There are also several other registered media types that are not meant
> to be used for natural language, for example, text/css, text/uri-list,
> text/vnd.wap.wmlscript, text/sgml, and text/xml do not fit into this
> category [...]

First, we're discussing a specific proposal (yours); any errors (or
lack thereof) in other registrations or proposals are a separate matter.

Second, text/sgml (for example) is perfectly valid; the type refers
to textual, natural language content (with associated markup); the
media type can be presented to a user such that a user can make some
sense of the natural language content by ignoring the markup, or
markup can be applied by rendering the content for the user.  That
of course also applies to application profiles of SGML (e.g. HTML and
XML).  That does not, however, mean that any arbitrary content using
XML markup is suitable as a text subtype; see RFC 2046 sections 1 and 4.

> There are even people who would prefer to just stick with the most
> commonly used types (which would be text/javascript, etc)

Again, "commonly-used" makes little sense in terms of compliant
applications and compliance requirements, and I do not think it is
advisable to cater to broken applications by inappropriately
registering types under the text category which are not in fact
suitable text types.  The developers of the broken applications
should fix their products.

A primary goal of standardization is interoperability; developers
who do not bother to conform to registration procedures and
compliance requirements produce inherently non-interoperable products.
Registering media types inappropriately to cater to such developers
impairs interoperability by muddling the clear distinction between
media type categories; it drives the level of the whole down to
that of the (inherently non-interoperable) lowest level.

> >Second, the draft mentions the proposed types as if they were
> >already registered, which they are not. E.g."use of and support for the
> >   media type application/ecmascript is considerably less widespread
> >   than of text/ecmascript"
> 
> Could you elaborate on this point? I am not quite sure how the draft
> suggests that these types are registered,

"the media type application/ecmascript" etc. clearly implies that
there is a registered media type of that name; there is not.

> in fact, it says that they 
> are not. Maybe you can make a suggestion to rephrase the passages you
> had in mind?

You might say something like "there exist some non-MIME-compliant
applications that generate unregistered, non-private-use labels
such as 'text/javascript'  ...  such use is clearly not interoperable".

> The JavaScript Core Guide 1.5 notes "JavaScript will always include
> features that are not part of the ECMA specification; JavaScript is
> compatible with ECMA, while providing additional features." which is
> also true for JavaScript 1.5; The specification the draft references
> states which features are compatible with ECMA-262 and which aren't.

Then that's a good indication that that reference should be normative
(w.r.t. to another question below), since in order to determine
which features are (in)compatible, one must consult that reference.

> http://www.mozilla.org/js/js15.html lists some of these features. I
> thus would not say that the only difference is the name. Maybe you
> can propose wording for the draft to make this distinction clearer?
> 
> >However, if I am mistaken on that point, the distinction needs
> >to be made much clearer. [And I fail to see why the proposed
> >application/ecmascript (almost) has provision for an optional
> >"version" parameter, while the proposed application/javascript
> >has no corresponding half-provision.]
> 
> The draft notes
> 
>   This document does not define similar means for any other type as
>   deployed software typically ignores unknown parameters which renders
>   such a reserved parameter of little use for those types.

There are no "reserved parameters"; there are required parameters and
optional parameters.  If you believe that version information may be
useful in one or more of the types that you seek to register, you
might define an optional version parameter (and specify how content
is to be handled when lacking that parameter), or if it is critical
to interoperability, make the parameter mandatory.  Past experience
has shown that ignoring (or skirting) the issue is likely to lead
to interoperability problems.  Consider application/vnd/ms-powerpoint,
which lacks any provision for version indication.  It is well-known
that some versions of MS "PowerPoint" are unable to read the
incompatible and proprietary formats generated by other versions of
that application.  Five years from now, do you want people to make
the same sort of statement about application/ecmascript etc.?

Given that there is a "JavaScript 1.5", there presumably were and
will be other versions.
 
> >If the "javascript" variant is to be registered, its reference
> >should be normative rather than informative.
> 
> Per RFC 3160 "A normative reference is a reference to a document that
> must be followed in order to implement the standard." This is true for
> ECMA-262 as the draft depends on terms defined in that document, but
> an implementation of the javascript media types does not depend on the
> JavaScript specification (in my opinion), for example, a generic text
> editor may support the application/javascript type only to the extend
> of properly detecting the character encoding scheme but other than that
> beeing unaware of JavaScript. So it is not obvious to me that the re-
> ference should be normative, could you elaborate on why you think so?

A scripting or programming language implies an interpreter or
compiler.  Implementers need a specification in order to
implement interpreters and/or compilers (validating parsers,
etc.).  Now in some cases, a specification is not publicly
available (e.g. for proprietary formats such as application/msword),
but that doesn't appear to apply in this case.
 
> >Change controller should be IESG, not IETF, as I understand it.
> 
> RFC 3880, RFC 3910, RFC 3680, and RFC 3858, lists the IETF, and RFC
> 3367, RFC 3080, RFC 3288, RFC 3983, and RFC 3529 the IESG as change
> controller for the types these documents register; I could not find
> precise rules which I should use; I think the IESG knows best, so I
> would expect them to provide clarification when reviewing the document.
> Maybe I've missed a resource that provides some clarification on this
> matter?

I believe the registration procedure notes that IESG (not IETF) may
assign change control under some circumstances.  Also, IETF is a
large, vaguely-defined body consisting of many individuals, numerous
working groups, etc.  The IESG, on the other hand, is a clearly-defined
group which makes decisions based on parliamentary procedures, directs
IANA and the RFC Editor, etc., with a public record of their meetings
and decisions. See RFCs 3160, 2026, 2418.



More information about the Ietf-types mailing list