Re: [Json] What does "break compatibility" mean?

Nico Williams <nico@cryptonector.com> Thu, 28 February 2013 22:07 UTC

Return-Path: <nico@cryptonector.com>
X-Original-To: json@ietfa.amsl.com
Delivered-To: json@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0FABF21F8B49 for <json@ietfa.amsl.com>; Thu, 28 Feb 2013 14:07:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.092
X-Spam-Level:
X-Spam-Status: No, score=-3.092 tagged_above=-999 required=5 tests=[AWL=-1.115, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Qo815gOwaaxp for <json@ietfa.amsl.com>; Thu, 28 Feb 2013 14:07:38 -0800 (PST)
Received: from homiemail-a25.g.dreamhost.com (caiajhbdcaib.dreamhost.com [208.97.132.81]) by ietfa.amsl.com (Postfix) with ESMTP id 89B3521F89B5 for <json@ietf.org>; Thu, 28 Feb 2013 14:07:38 -0800 (PST)
Received: from homiemail-a25.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a25.g.dreamhost.com (Postfix) with ESMTP id 19DB6678063 for <json@ietf.org>; Thu, 28 Feb 2013 14:07:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=cryptonector.com; h= mime-version:in-reply-to:references:date:message-id:subject:from :to:cc:content-type:content-transfer-encoding; s= cryptonector.com; bh=zuQPjEq8VlcNjgzJvflnYI6CYmc=; b=sn/W2qK5eoA I1ScxuV92n4TX11P3MP7Y67gUTJe9AvRKeOO9obVXsiDdrxeOa5lfPuD4pG8Ysov yroSJ/V+uO46jTM0cCY4v+INWZODb8fwUy2zZWcYURD7ly+OqWh//IWAziiESb6j xFbOOBiOXrKavvtqT4kwH+sTqQzuhHYg=
Received: from mail-we0-f179.google.com (mail-we0-f179.google.com [74.125.82.179]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: nico@cryptonector.com) by homiemail-a25.g.dreamhost.com (Postfix) with ESMTPSA id 99E3E6780BF for <json@ietf.org>; Thu, 28 Feb 2013 14:06:07 -0800 (PST)
Received: by mail-we0-f179.google.com with SMTP id p43so2003674wea.10 for <json@ietf.org>; Thu, 28 Feb 2013 14:06:05 -0800 (PST)
MIME-Version: 1.0
X-Received: by 10.194.60.195 with SMTP id j3mr13796312wjr.33.1362089165769; Thu, 28 Feb 2013 14:06:05 -0800 (PST)
Received: by 10.216.148.193 with HTTP; Thu, 28 Feb 2013 14:06:05 -0800 (PST)
In-Reply-To: <AB5022CF-A698-49A5-A138-2EC3D6995905@vpnc.org>
References: <CAHBU6ityBeA+M-PEme09gO_jVySr33-X308i1UttxrQwSgYmGQ@mail.gmail.com> <0F513426-F26D-48F4-A7A8-88F3D3DA881B@vpnc.org> <CAK3OfOjFCnR8k1csVOkSKTDpA8exDvYdAijn80HKD5zwNzzeSw@mail.gmail.com> <4514F5D7-4A7E-476F-987D-C4C617F2BCBD@vpnc.org> <4D80AE86-4DBA-4236-9E2A-A06F2F9C30F7@mnot.net> <00b001ce1509$c4c99fc0$4e5cdf40$@packetizer.com> <CAC4RtVDXwPRL-Cz_Xf-kjU3dzzY+JheDGivSE9hF2v1NLkWEgQ@mail.gmail.com> <63519CDF-144F-4DA4-A9F3-A1AB824861D2@vpnc.org> <CAHBU6ivXpRaTPsbLd90zBDdiypO2pYn9mckkNcCh9ZEApsK1yg@mail.gmail.com> <CAK3OfOhX0aAhX6rsK5mL+5AUvX1bepgeN9o3OReRGykg8ycWhA@mail.gmail.com> <AB5022CF-A698-49A5-A138-2EC3D6995905@vpnc.org>
Date: Thu, 28 Feb 2013 16:06:05 -0600
Message-ID: <CAK3OfOhn9cBTTbuU3uF-i=SeX=yg-G+u+uuaNEhbs4Ob+081BA@mail.gmail.com>
From: Nico Williams <nico@cryptonector.com>
To: Paul Hoffman <paul.hoffman@vpnc.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Cc: Barry Leiba <barryleiba@computer.org>, json@ietf.org
Subject: Re: [Json] What does "break compatibility" mean?
X-BeenThere: json@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "Discussion related to JavaScript Object Notation \(JSON\)." <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: Thu, 28 Feb 2013 22:07:39 -0000

On Thu, Feb 28, 2013 at 3:51 PM, Paul Hoffman <paul.hoffman@vpnc.org> wrote:
> On Feb 28, 2013, at 12:46 PM, Nico Williams <nico@cryptonector.com> wrote:
>
>> On Thu, Feb 28, 2013 at 2:06 PM, Tim Bray <tbray@textuality.com> wrote:
>>> It’s clear to me that, *for the purposes of the IETF*, someone needs to say
>>> “People sending JSON MUST NOT use duplicate keys.”  The fact that certain
>>> libraries allow less-clueful developers to do this, and that parsing
>>> software is observed to behave unpredictably when they do, should only
>>> encourage us.
>>
>> The obvious compromise is to say senders MUST NOT send dup object keys
>> and receivers MUST take the last key value pair of any dup keys,
>> per-ECMAScript.  The latter preserves compatibility.
>
> ...but the former ("say senders MUST NOT send dup object keys") breaks it, given that the RFC had a SHOULD not a MUST. Thus the question in this thread.

Depends on your definition of "break".  If you mean that some senders
are now "non-compliant", you're right, but there's no compliance
police here so what matters is whether *receivers* change behavior in
ways that a) are different from the old spec *and* b) break actual
interop.  It's the interop that matters.

Nico
--