Re: [Json] I-JSON Tpic #2: Top-Level
Tim Bray <tbray@textuality.com> Mon, 28 April 2014 21:16 UTC
Return-Path: <tbray@textuality.com>
X-Original-To: json@ietfa.amsl.com
Delivered-To: json@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C9E3B1A07A2 for <json@ietfa.amsl.com>; Mon, 28 Apr 2014 14:16:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SAMBvdMGvRYF for <json@ietfa.amsl.com>; Mon, 28 Apr 2014 14:16:57 -0700 (PDT)
Received: from mail-vc0-f169.google.com (mail-vc0-f169.google.com [209.85.220.169]) by ietfa.amsl.com (Postfix) with ESMTP id AEDDE1A6FFC for <json@ietf.org>; Mon, 28 Apr 2014 14:16:57 -0700 (PDT)
Received: by mail-vc0-f169.google.com with SMTP id im17so9109195vcb.0 for <json@ietf.org>; Mon, 28 Apr 2014 14:16:56 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=D4blf9XqnFR5IjxLTTS3hfTjI4hLeH7D4SE7/srdfd4=; b=LWfM2WZVMLRz761+x1+RvITEi1259tFLK846VORZYKkpSeKH5R+LShAza1kNn8doSK WW0RC9+bIvNK/+5Bm9f3ssEIXify9aX2IkBZRbTDi9rra117UVtLFmIwIxnCi6NlgU9I LA2NtdJnX5P/s/m3+8yA3mHOGiUmzTDddz3beBRMR72WnktmB8kWn0omsqXPb5R8nGEY n8ouqbP+kJUaKI9YlFV9SLQu2SDLWuuCuKTFYMvGZMH0bdigaGBhX6Y/8JeuvtMTymyR ggwYgd6BFZ4wZEzRjhPOspJYFhrwsaXnTpKPPdfygeC/ZksiU1K7wDecsnCWTcil5qYv wj4w==
X-Gm-Message-State: ALoCoQl28NacW1SJ1P+ssV+0jy+ZqSCotwgIuNXsrsRIdc4PXQvc5fNms22GznY0E6vRK5XXucHl
X-Received: by 10.58.34.67 with SMTP id x3mr2182116vei.37.1398719816670; Mon, 28 Apr 2014 14:16:56 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.220.98.73 with HTTP; Mon, 28 Apr 2014 14:16:36 -0700 (PDT)
X-Originating-IP: [96.49.81.176]
In-Reply-To: <CAO1wJ5SZrrDcj6DvQwdwYF+ivFiftmXuvdZd-SmuUiFEvdcr4g@mail.gmail.com>
References: <535EB119.4000908@cisco.com> <CAHBU6itycQmqzAuxWyrFZ_v=fHdenm2csyAqtUGGu+vteh6=yQ@mail.gmail.com> <CAK3OfOjeaMLKMgNgJE7Cbr-LW1R5HMWBp3MFZREsZUbeMwwHNA@mail.gmail.com> <CAO1wJ5SZrrDcj6DvQwdwYF+ivFiftmXuvdZd-SmuUiFEvdcr4g@mail.gmail.com>
From: Tim Bray <tbray@textuality.com>
Date: Mon, 28 Apr 2014 14:16:36 -0700
Message-ID: <CAHBU6itZx4zeZXKNHOu+NE52kfnnJ2fPZ6MmAc7OCvdvig_k3g@mail.gmail.com>
To: Jacob Davies <jacob@well.com>
Content-Type: multipart/alternative; boundary="089e013a0d72d030bf04f820d57e"
Archived-At: http://mailarchive.ietf.org/arch/msg/json/c2l4W8_zIZWl_bgimKjqkHEh2DY
Cc: Nico Williams <nico@cryptonector.com>, Matt Miller <mamille2@cisco.com>, IETF JSON WG <json@ietf.org>
Subject: Re: [Json] I-JSON Tpic #2: Top-Level
X-BeenThere: json@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "JavaScript Object Notation \(JSON\) WG mailing list" <json.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/json>, <mailto:json-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/json/>
List-Post: <mailto:json@ietf.org>
List-Help: <mailto:json-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/json>, <mailto:json-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Apr 2014 21:17:00 -0000
RFC 7159 already says that for interoperability, top level objects should be objects or arrays. At the simplest level, if all I-JSON does is forbid all the things that 7159 calls out as interoperability problems, that would be good enough for me. The notion that i-json would *weaken* 7159’s requirements by allowing a top level object to consist of just true or "true" seems outlandish to me. ...It’s dawning on me that a piece on MustIgnore and why it’s a big deal might be useful... On Mon, Apr 28, 2014 at 2:03 PM, Jacob Davies <jacob@well.com> wrote: > Requiring an object at the top level breaks the symmetry of JSON, > rules out many useful applications (or requires a clumsy envelope for > them), and needlessly conflicts with actual practice. It is solving a > problem I am not convinced anyone really runs into - using (say) a > JSON string instead of a JSON object and then oops not being able to > pass along some extra metadata later (and for some reason HTTP headers > or some similar mechanism won't work). In fact one of the nice things > about JSON is that if you change your mind and decide to send objects > instead of strings in some application you can know that the transport > will support them; you can even allow older senders to keep sending > strings, and new ones to send objects, and have the receiver accept > both. Requiring further future-proofing with top-level objects seems > very invasive. > > On Mon, Apr 28, 2014 at 1:36 PM, Nico Williams <nico@cryptonector.com> > wrote: > > On Mon, Apr 28, 2014 at 3:20 PM, Tim Bray <tbray@textuality.com> wrote: > >> Protocols with messages which are objects are better than other > protocols, > >> because they are architecturally friendly to MustIgnore policies. > >> > >> Allowing top-level JSON to be a primitive - true, null, 42 - is batshit > >> crazy for anything the IETF might contemplate, and one of I-JSON’s main > >> virtues is ruling that out. > > > > What if the service outputs JSON texts output by a jq program supplied > > by the client and applied to server-side data? > > > >> I don’t think top-level arrays are actively harmful at the same level, > but > >> the MustIgnore is a pretty big value-add, forcing people to sort-of > >> future-proof themselves even when they haven’t realized why that’s a > good > >> idea. > > > > Why can't schema changes be communicated out-of-band? Apps request > > JSON in a particular schema; servers report the schema when the schema > > was not requested... > > > > I can see the value in recommending the use of top-level objects in > > general, just not in requiring it. > > > > Still, I think if you want to say "so don't use I-JSON", I think > > that's mostly fine. The only problem that comes up is the possibility > > that I-JSON would crowd out JSON to the point where non-I-JSON might > > not be usable. I think what I'd want to see there is that JSON > > parsers should really just have an option as to this, rather than have > > I-JSON parsers that are not also JSON parsers. > > > > Nico > > -- > > > > _______________________________________________ > > json mailing list > > json@ietf.org > > https://www.ietf.org/mailman/listinfo/json >
- [Json] I-JSON Tpic #2: Top-Level Matt Miller
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Tim Bray
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Jacob Davies
- Re: [Json] I-JSON Tpic #2: Top-Level Tim Bray
- Re: [Json] I-JSON Tpic #2: Top-Level Matthew Morley
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Mark Nottingham
- Re: [Json] I-JSON Tpic #2: Top-Level Tim Bray
- Re: [Json] I-JSON Tpic #2: Top-Level John Cowan
- Re: [Json] I-JSON Tpic #2: Top-Level Paul Hoffman
- Re: [Json] I-JSON Tpic #2: Top-Level Manger, James
- Re: [Json] I-JSON Tpic #2: Top-Level Manger, James
- Re: [Json] I-JSON Tpic #2: Top-Level Tim Bray
- Re: [Json] I-JSON Tpic #2: Top-Level Manger, James
- Re: [Json] I-JSON Tpic #2: Top-Level Stefan Drees
- Re: [Json] I-JSON Tpic #2: Top-Level Jacob Davies
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Paul Hoffman
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Matt Miller
- Re: [Json] I-JSON Tpic #2: Top-Level Tim Bray
- Re: [Json] I-JSON Tpic #2: Top-Level Paul Hoffman
- Re: [Json] I-JSON Tpic #2: Top-Level Stefan Drees
- Re: [Json] I-JSON Tpic #2: Top-Level Jacob Davies
- Re: [Json] I-JSON Tpic #2: Top-Level Carsten Bormann
- Re: [Json] I-JSON Tpic #2: Top-Level Martin J. Dürst
- Re: [Json] I-JSON Tpic #2: Top-Level Carsten Bormann
- Re: [Json] I-JSON Tpic #2: Top-Level Joe Hildebrand (jhildebr)
- Re: [Json] I-JSON Tpic #2: Top-Level Paul Hoffman
- Re: [Json] I-JSON Tpic #2: Top-Level Jacob Davies
- Re: [Json] I-JSON Tpic #2: Top-Level Joe Hildebrand (jhildebr)
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Paul Hoffman
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Paul Hoffman
- Re: [Json] I-JSON Tpic #2: Top-Level Joe Hildebrand (jhildebr)
- Re: [Json] I-JSON Tpic #2: Top-Level Carsten Bormann
- Re: [Json] I-JSON Tpic #2: Top-Level Joe Hildebrand (jhildebr)
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Joe Hildebrand (jhildebr)
- Re: [Json] I-JSON Tpic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Tpic #2: Top-Level Jacob Davies
- Re: [Json] I-JSON Tpic #2: Top-Level Joe Hildebrand (jhildebr)
- Re: [Json] I-JSON Tpic #2: Top-Level Martin J. Dürst
- Re: [Json] I-JSON Topic #2: Top-Level Matt Miller
- Re: [Json] I-JSON Topic #2: Top-Level Matthew Morley
- Re: [Json] I-JSON Topic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Topic #2: Top-Level Nico Williams
- Re: [Json] I-JSON Topic #2: Top-Level Phillip Hallam-Baker