Re: [apps-discuss] New Version Notification for draft-nottingham-link-hint-00.txt

Mark Nottingham <mnot@mnot.net> Thu, 04 July 2013 01:30 UTC

Return-Path: <mnot@mnot.net>
X-Original-To: apps-discuss@ietfa.amsl.com
Delivered-To: apps-discuss@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AEC5A11E80A2 for <apps-discuss@ietfa.amsl.com>; Wed, 3 Jul 2013 18:30:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -104.969
X-Spam-Level:
X-Spam-Status: No, score=-104.969 tagged_above=-999 required=5 tests=[AWL=-2.370, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Bnaq1VbSjOAY for <apps-discuss@ietfa.amsl.com>; Wed, 3 Jul 2013 18:30:25 -0700 (PDT)
Received: from mxout-07.mxes.net (mxout-07.mxes.net [216.86.168.182]) by ietfa.amsl.com (Postfix) with ESMTP id 3E8FE21F9C31 for <apps-discuss@ietf.org>; Wed, 3 Jul 2013 18:30:25 -0700 (PDT)
Received: from [192.168.1.80] (unknown [118.209.244.150]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.mxes.net (Postfix) with ESMTPSA id 6720F22E253; Wed, 3 Jul 2013 21:30:17 -0400 (EDT)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\))
From: Mark Nottingham <mnot@mnot.net>
In-Reply-To: <51CB8646.60101@berkeley.edu>
Date: Thu, 04 Jul 2013 11:30:14 +1000
Content-Transfer-Encoding: quoted-printable
Message-Id: <873F3899-2365-4F13-A485-8924E67294FA@mnot.net>
References: <20130610033804.19451.29465.idtracker@ietfa.amsl.com> <E6062DBC-CD7B-47CA-A6F0-5E7D64C0DB55@mnot.net> <51B7AEAF.20404@berkeley.edu> <4CD4652F-4EAF-4258-A6EB-577019018D2C@mnot.net> <1A136C4D-4F0C-446F-B307-D53FB9A40622@cs.tcd.ie> <8BE038EC-1580-4D27-ABBA-1890EEFD4853@mnot.net> <51C9C91D.90206@berkeley.edu> <4C2FD8A7-4F3E-433B-A7F6-F0BD751D31AD@mnot.net> <51CB240C.3060101@berkeley.edu> <F2662B38-CDD6-401D-85F8-438FF67AFAFF@mnot.net> <51CB8646.60101@berkeley.edu>
To: Erik Wilde <dret@berkeley.edu>
X-Mailer: Apple Mail (2.1508)
Cc: IETF Apps Discuss <apps-discuss@ietf.org>, REST-Discuss Discuss <rest-discuss@yahoogroups.com>
Subject: Re: [apps-discuss] New Version Notification for draft-nottingham-link-hint-00.txt
X-BeenThere: apps-discuss@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: General discussion of application-layer protocols <apps-discuss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/apps-discuss>
List-Post: <mailto:apps-discuss@ietf.org>
List-Help: <mailto:apps-discuss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 04 Jul 2013 01:30:30 -0000

On 27/06/2013, at 10:24 AM, Erik Wilde <dret@berkeley.edu> wrote:
>>> 
>>> so my suggestion is not so much your (b) but my (c) ;-) fwiw, it seems that thew current draft uses overly complicated structures, for example, "formats" maybe just could be an array of formats?
>> Could you spell out an example?
> 
> afaict, "formats" (http://tools.ietf.org/html/draft-nottingham-link-hint-00#section-3.2) right now says says it's an object with the keys being media types, but the values are not specified. but maybe i am reading it wrong and where it says "The object" in the second and third paragraph it actually refers to the object that's a value of one of the keys?

Yes, I need to spell that out more completely. Thanks.


> hmmm, i guess that's what it means... i had been reading it wrong so far. but for a minute, let's just assume it's only media types, which is how i am using it in an example using link hints here: https://github.com/dret/I-D/blob/master/link-desc/ld-atompub-00.xml
> 
> so let's assume for a minute that this is just a list. then i would suggest is the following: the hint is defined as follows (stealing your structure here):
> 
> o  Hint Name: formats
> o  Description: Hints the representation type(s) that the target resource can produce and consume, using the GET and PUT (if allowed) methods respectively.
> o  Content Model: list
> o  Specification: [this document]
> Content MUST be a list, whose values are media types.
> 
> then, the term "list" in the content model must be defined somewhere. like i said, maybe we could say there are three "content models" hints support: single values, lists, key/value pairs. how a particular hint value would be serialized then would be up to the format where it's being represented.
> 
> - in JSON, you might represent them as string, array, something else.
> 
> - in XML, you might choose a mix of element/attribute designs. or you could go text-based such as my example (which is text-based because it uses JSON syntax right now)
> 
> none of these representations would be binding, they would just be one way of mapping the abstract link hint model into some concrete model. i guess the only exception for this would be how to represent links outside of media types, i.e. in HTTP. http://tools.ietf.org/html/draft-nottingham-link-hint-00#appendix-A could be changed then to map the abstract moden into a concrete JSON syntax (or whatever else looks like a good syntax choice to go into a Link header).

I'm all for that, IF we can be reasonably sure that the current data can fit comfortably into that simplified model.

The current hints that use "complex" objects are (keeping in mind that we've just started):
 - formats
 - links
 - accept-post (same format as formats)
 - auth-schemes

Formats and accept-post COULD specify a list of strings, and state that it's either a media type OR a profile URI. This means we'd need a separate representation format for profiles, which would need to convey a media type.

This is certainly possible, but the downsides I see are:
  - It's baking in profiles in at a pretty high level. I like some aspects of profiles, but they certainly haven't taken off in mindshare yet.
  - Parsing the string to check which it is is nasty.

For auth-schemes, we'd need to specify a tuple, probably. Not great, but OK. Extensibility would be right out the window, though, which may be significant for some schemes.

Links are fundamentally not possible without some really ugly mapping to a string, I think.

My concern is that this is starting not to meet my use cases for json-home, which is where link-hints comes from. 

While I could address this by making those things NOT link hints, but other "bumps" on json-home, it would make it significantly more complex. That seems like a poor tradeoff, considering that it's *possible* to map generic hints into XML, it's just not "pretty."


> as i see it, when i design media types that use link hints, it would be nice if i could expose them in a way that is as useful as possible for consumers of that media type. my example from above is from an XML design for link descriptions that i plan to base on link hints. if that means that the XML-oriented clients using this format need to include a general-purpose JSON parser, then that's certainly doable, but i don't think the link hints design has to be like that.

To be brutally frank (and I'm sure this isn't going to surprise you too much, dret ;) I don't see a lot of value in catering to the XML API market; it's dying, and introducing constraints on the JSON APIs seems like a bad tradeoff.

I absolutely acknowledge that JSON will one day face its own demise, and will be in a similar situation, but planning for that seems like premature optimisation to me.


> but again, of course my option (c) means that link hints have a predefined and probably small set of structures that hints can use to expose whatever they want to expose, and if they want to go beyond that, that's not covered by the link hint framework anymore.


Yes. That's what I'm struggling with. We're already seeing a number of places that chafe against these constraints, and we're just getting started.

What do other folks think?

Cheers,


--
Mark Nottingham   http://www.mnot.net/