Re: Feedback on Internet Media Types and the Web

You're right, Larry, in that nothing prevented RFC 4627 from defining
+json from the get-go, or prevents it being changed now.  But that
won't solve the registry failure this omission revealed, which I'd like
to see prevented from recurring as a matter of course.  Codifying the
existing +xml-analogous consensus, would establish categorization of
media types by meta-language suffix the community expects from the
registry -- thereby providing Ned with the tools he's asked for to
enable the maintenance of same, by forcing the issue of changing RFC
4627 and preventing similar situations in the future.

Larry Masinter wrote:

>
> If they're not willing to do that work, then perhaps it isn't
> important that the +json MIME types actually be defined...
>

I can't chalk this up to the unwillingness of anyone to do the work
nobody ever told them needed doing.  If Ned had spent the past five
years requiring JSON-based applicants to use +json and pointing out that
RFC 4627 needed changing first, that work would've been done by now.

This advice to applicants is common both on and off the ietf-types list,
but Ned hasn't endorsed it, resulting in +json getting dropped from
applications as the path of least resistance to approval -- *that's* the
problem because it's the opposite of how the registry best serves its
architectural function (besides the fact that everyone assumes that's
how it already works).

Ned tells us he'd like to require +json, but feels his hands are tied
by RFC 4288, so it's more likely a lack of motivation rather than a
lack of willingness; I think there's a lack of awareness which results.
Regardless of cause, the effect is detrimental to the relevance of the
registry the architecture is dependent upon, and needs to be fixed in
the general case to prevent, say, YAML from making the same mistake
when it moves through the registration process, and so on into the
future.  I'm not blaming Ned, I'm advocating we not leave him any more
such messes to clean up after.

Each approval of a JSON type sans +json, represents one less group
willing to do the work of changing RFC 4627, and one more registry entry
that can't be searched for by generic parsing model.  Or one less
registry entry, and one more +json not-a-media-type released into the
wild, where nobody can search for it unless its token is known.  The
+json issue is only an example of the registry failure which results
from leaving suffixes undefined -- changing RFC 4627 doesn't fix the
underlying problem.

Ideally when dealing with registries in general, it's required to
identify this sort of pattern such that over time, fewer entries are
required to be updated to obsolete old tokens in favor of new tokens.
This has happened with several prominent media types, with problematic
results.  So we should be proactive in keeping this from happening to
every proposed media type based on a non-XML meta-language, by fixing
the general registry failure +json illustrates before it's compounded.

Especially because it's a problem for which a consensus solution
already exists, which, if solved now, will avoid the suffix travelling
down the path to irrelevancy text/* has in practice...

>
> The problem is that using something like "+json" without having
> a definition for what it means doesn't really help anyone except
> if you think that a MIME type is a fashion accessory and not a 
> protocol element with a definite meaning. 
> 

Exactly the point I've been making, to so much consternation, on rest-
discuss for a year and a half now.  One rebuttal was, "Where in AWWW
does it say that?"  So I see this issue as a relevant example of the
sort of thing a revised AWWW could clarify (especially since I pointed
to your draft as proof that media type omission was a known AWWW bug).
Hopefully, AWWW is updated to clarify the new standardization of
suffix usage, where it discusses proper media type creation and use,
which is why I think the issue belongs here -- these are orthogonal
concerns.

> 
> There's nobody home but us. So there's no one else other than the
> JSON-mime-type using community to define what "+json" means.
>

It's no more the place of the JSON folks to codify that MIME suffixes
mean what everyone now thinks they mean, than it is for the XML folks.
Such an effort would be open to charges of changing RFC 4288 to reflect
the needs of +json or +xml rather than the needs of +anything.  As Ned
points out, others have a different opinion, like +vendor -- those
folks need to have their say about generic suffix syntax, in a forum
outside those of +xml-ish suffix instantiations.

I believe it would make all the difference in the world if the JSON-
media-type-using community were told they need to define +json, instead
of being told they need to drop +json (like they are now) and try again.
Fix the process, and the definition of +json will duly follow.  Or in
this case, create the process.

>
> ...and perhaps they're just "mime-type-like" labels because there's
> nothing in particular you would or should do if you get a text/frob
> +json MIME body. Right? At least with XML there was some expectation
> of generic processing either with CSS or with XSLT.
> 

I'm not a JSON user (yet, perhaps), but I believe there is a generic
processing model as with XML.  I may not know the context or semantics
of a JSON document (same with XML), but I can still tell by looking at
it what's a real vs. integer number, vs. a string, boolean, array or
object.  As with XML, the document may be seen as a collection of
name-value pairs; typing is inherent and nonextensible in JSON, while
in XML it is an extensible option.  JSON is a subset of YAML, which
allows more complex typing in its generic processing model.

I think JSON and YAML are exactly the sort of languages the suffix
registry should target, as they may be extended to have semantic
meaning expressed as a data-type family identified by a media type in
exactly the same way as XML is extended to have HTML semantics using
application/xhtml+xml.  The syntax parsing is invariant, is one way to
put the suffix consensus which has formed based on +xml usage.  XSLT
is definitely an argument in favor of XML, but I also believe such
useful tools will evolve for JSON... eval() works with all JSON, but
only with JSON -- XML parsers work with all well-formed XML, but only
with well-formed XML.

>
> Are text/something+json bodies guaranteed to be in UTF8? Which version
> of JSON is used?  Is there any internal framing? 
> 

I don't think we need to solve those problems, so much as require those
problems to be solved, in the definition of the suffix registration
process.  As to text/ vs. application/, this thread is an interesting
read:

http://www.ietf.org/mail-archive/web/ietf-types/current/msg00988.html

Also on-topic to the discussion of YAML registration in this post.  (Hi
Julian, thanks for asking my same questions about registering XBEL).

>
> Defining +xml and what guarantees can be assumed by a +xml MIME
> type was very difficult. Without any guarantees (for a conforming
> implementation), then the adding extra protocol for +json isn't
> helpful, since it's meaningless except as a "gee we're cool"
> indicator.
>

I agree, these guarantees should be required for registering a suffix.
In 20/20 hindsight, defining +json should have been a requirement for
JSON, and in 20/20 foresight +yaml should be a requirement for YAML;
but they can't be until the mechanism is changed to require such
languages to define suffixes in their media type registrations,
addressing exactly the conformance concerns you raise.

Surely RFC 3023 was harder because it came first, and surely the
lessons learned would apply to changing RFC 4627, particularly if that
were the guidance of a revised RFC 4288?  The result could be a bunch
of meaningless-but-cool +json types coming in from the wild, which may
be what some of those creators were thinking when they decided to
forego registration.

>
> I'm willing to put something in the document about this situation,
> but would like to get agreement on the nature of the problem,
> e.g., something like:
> 
> "People want to use suffix-type registration, in analogy to
> the +xml definition, for things like types based on ZIP or
> JSON, using +zip or +json respectively, but they're not willing to
> do the work to define what those suffixes mean."
> 
> and then go into some discussion of +json and +zip examples?
> 

Consensus already exists on what +anything means, based purely on
assumption, so it's time to point out the need to bring the standards
in line with that consensus (since it's common sense, with technical
merit and +xml as precedent).  I'd rather focus on the general problem
of bringing the standards in line with reality, where +suffix is
concerned, rather than address the +json situation which I believe
resulted more from that deficiency than from laziness.  ;-)  Although
laziness is the mother of invention...

"People assume +suffix to be analogous to +xml's usage, but in reality
it is undefined in the standards and mostly discouraged in practice.
The inclusion of a suffix registry standardizing this assumed consensus
could prevent the registry failure evidenced by +json, based on the
unmet community expectation (arising from the success of +xml) that
suffixes categorize media types by common structural language."

Knowing what we now know, it would be shortsighted not to require that
+yaml be defined along the lines of RFC 3023 +xml.  Since there's no
mechanism for such a requirement, approving application/yaml without
+yaml would compound the problems arising from the existing registry
failure.  We can't point to existing YAML-based media types (assuming
we could search for any) and divine unwillingness to do the work of
creating +yaml, if RFC 4288 never told them that suffixes are used to
denote common structural languages shared by myriad media types, or
required the registration of generic-syntax languages to define and
register suffixes.

Nor can we fault Douglas Crockford for not including +json in RFC 4627,
but we can determine what recommendations he should have been following
(not that we can fault the authors of RFC 4288 for not having foresight
about the current state of affairs, either) which would have led to the
desired outcome where the developer community is concerned (meaning a
number of +json types in the registry growing at a rate that increases
as the rate of +xml registrations decreases, reflective of the times),
allowing those recommendations to be followed by both YAML and JSON
separately from this effort but consistently with RFC 3023 -- by design
instead of assumption.

-Eric

Received on Saturday, 15 January 2011 07:34:44 UTC