Re: [Json] Call for Consensus: Proposed Text for "8.1 Character Encoding"

Pete Cordell <petejson@codalogic.com> Tue, 18 April 2017 13:01 UTC

Return-Path: <petejson@codalogic.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 B9CAE12EBBE for <json@ietfa.amsl.com>; Tue, 18 Apr 2017 06:01:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.92
X-Spam-Level:
X-Spam-Status: No, score=-0.92 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RDNS_DYNAMIC=0.982, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
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 I065_AAfelXv for <json@ietfa.amsl.com>; Tue, 18 Apr 2017 06:01:29 -0700 (PDT)
Received: from ppsa-online.com (lvps217-199-162-192.vps.webfusion.co.uk [217.199.162.192]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4086112EBBB for <json@ietf.org>; Tue, 18 Apr 2017 06:01:29 -0700 (PDT)
Received: (qmail 15939 invoked from network); 18 Apr 2017 13:53:55 +0100
Received: from host86-182-43-169.range86-182.btcentralplus.com (HELO ?192.168.1.72?) (86.182.43.169) by lvps217-199-162-217.vps.webfusion.co.uk with ESMTPSA (DHE-RSA-AES128-SHA encrypted, authenticated); 18 Apr 2017 13:53:55 +0100
To: "Martin J. Dürst" <duerst@it.aoyama.ac.jp>, Carsten Bormann <cabo@tzi.org>, "Matthew A. Miller" <linuxwolf+ietf@outer-planes.net>
References: <e69d7c21-85cb-45f4-c0c2-34c624e63049@outer-planes.net> <14252631-AD76-4537-89BF-6368F4A8CDF4@att.com> <7e6af21f-16ea-a3bc-9c01-595ae8acebba@gmx.de> <05100401-88D4-4158-A3FF-3EF144D85449@att.com> <CAD2gp_T0bfpnsCA_t4BAMtEhr7p8JkZggjnY4F+m9-M2hWLfmw@mail.gmail.com> <1e94516c-9c82-8b0e-0d2d-7dbaa83b21bd@outer-planes.net> <40e3207f-e047-c898-1f0c-4422de1d597a@it.aoyama.ac.jp> <1b3ec14a-927a-8d46-e3d3-9807a9588437@outer-planes.net> <CAHBU6ivsq8+Z=MMkUH+=Q0uwc5NCtaJLYw5cp0Qg8eX2hQQ6sA@mail.gmail.com> <b74cb31b-8e04-17d0-548a-fc164ce07c05@outer-planes.net> <20170417175627.GK23461@localhost> <10B651F1-7FE0-484D-BD2E-FD146BC5FB04@tzi.org> <eabbccb0-8d15-d595-7cd0-37acc0621c57@it.aoyama.ac.jp>
Cc: "json@ietf.org" <json@ietf.org>
From: Pete Cordell <petejson@codalogic.com>
Message-ID: <6eb23f90-6623-7888-bc1c-6640a9dababc@codalogic.com>
Date: Tue, 18 Apr 2017 14:01:28 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
MIME-Version: 1.0
In-Reply-To: <eabbccb0-8d15-d595-7cd0-37acc0621c57@it.aoyama.ac.jp>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/json/YL5QNLGLrLpLaK6Tit_L6e_h2I0>
Subject: Re: [Json] Call for Consensus: Proposed Text for "8.1 Character Encoding"
X-BeenThere: json@ietf.org
X-Mailman-Version: 2.1.22
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 18 Apr 2017 13:01:32 -0000

On 18/04/2017 06:22, Martin J. Dürst wrote:
> On 2017/04/18 05:47, Carsten Bormann wrote:
>> On Apr 17, 2017, at 19:56, Nico Williams <nico@cryptonector.com> wrote:
>>>
>>>> Thinking about this more, putting an encoding detection algorithm as an
>>>> appendix seems like a reasonable compromise to me.  To start, how about
>>>> removing the detection text from Section 8.1 and have an appendix that
>>>> starts with that text plus the table?
>>>
>>> Or we could even just assert that such an algorithm is possible, and
>>> that implementors MAY implement one.
>>
>> Indeed.
>>
>> Broken record mode:
>>
>> — writing up the algorithm sounds like encouraging implementation.
>>   We *don’t* want people to implement this!
>>   (The whole interminable non-UTF-8 saga probably just was a nod from
>> the RFC 4627 authors to the remnants of UTF-16 land, which mostly have
>> died off since.  Why resurrect?)
>>
>> - there have been about 15 attempts to define this algorithm on the
>> mailing list.
>>   All were wrong.
>>   An Internet Standard should contain tried and true material, not
>> errata fodder.
>>
>> - an implementer is in a much better position to get this right than
>> the standard, because they can write unit tests.
>
> I completely agree with Carsten. As far as I know, and as far as we have
> been told on this list, if some JSON isn't in UTF-8, then it simply will
> not interoperate.

+1

If we do do this, I think we could add some example test messages to 
helps with the development, e.g.:

     {"Example":1}
     {}
     "Example"
     ""
     "U+0100" (where U+0100 is the UTF form of the character, not ASCII)
     1

> In my view, the only reason to still have a MAY for UTF-16/32 is that
> this will avoid questions like: "I have a JSON parser in language FOO,
> it can take a string or an input stream as an argument. In FOO, strings
> are UTF-16, but the JSON RFC doesn't seem to allow this. What should I do."

IMO the answer to that is, "that's why it says 'JSON text _SHOULD_ be 
encoded in UTF-8'".

I agree with John Cowen, that use of UTF-16/32 is purely for internal 
scenarios; not on the Internet.  As such, I believe the IETF is going 
beyond its remit to say you can use UTF-16/32 for your internal purposes 
that I know nothing about and care nothing about, but you're not allowed 
to use other encodings that maybe more natural for your system.

Pete Cordell
Codalogic Ltd
C++ tools for C++ programmers, http://codalogic.com
Read & write XML in C++, http://www.xml2cpp.com