Re: [Json] Schema Requirements (Was: Re: Nudging the English-language vs. formalisms discussion forward)

"Pete Cordell" <petejson@codalogic.com> Thu, 20 February 2014 22:25 UTC

Return-Path: <petejson@codalogic.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 5DA251A031E for <json@ietfa.amsl.com>; Thu, 20 Feb 2014 14:25:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 3.537
X-Spam-Level: ***
X-Spam-Status: No, score=3.537 tagged_above=-999 required=5 tests=[BAYES_50=0.8, FH_HOST_EQ_D_D_D_D=0.765, HELO_MISMATCH_COM=0.553, RDNS_DYNAMIC=0.982, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, STOX_REPLY_TYPE=0.439] autolearn=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 VXKKOshp7vCB for <json@ietfa.amsl.com>; Thu, 20 Feb 2014 14:24:58 -0800 (PST)
Received: from ppsa-online.com (lvps217-199-162-192.vps.webfusion.co.uk [217.199.162.192]) by ietfa.amsl.com (Postfix) with ESMTP id 63FE41A0272 for <json@ietf.org>; Thu, 20 Feb 2014 14:24:58 -0800 (PST)
Received: (qmail 2475 invoked from network); 20 Feb 2014 22:24:13 +0000
Received: from host81-155-177-242.range81-155.btcentralplus.com (HELO codalogic) (81.155.177.242) by lvps217-199-162-217.vps.webfusion.co.uk with ESMTPSA (RC4-MD5 encrypted, authenticated); 20 Feb 2014 22:24:13 +0000
Message-ID: <7ADB5F59D5FC475CB251FF58797A873A@codalogic>
From: Pete Cordell <petejson@codalogic.com>
To: Nico Williams <nico@cryptonector.com>
References: <CAK3OfOiMpfC6-2y7VLhKieuA4HWurDkP7WFQSUqeBu_-XnSmyg@mail.gmail.com>
Date: Thu, 20 Feb 2014 22:24:36 -0000
MIME-Version: 1.0
Content-Type: text/plain; format="flowed"; charset="UTF-8"; reply-type="original"
X-Unsent: 1
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Vipre-Scanned: 00088B8F00683400088CDC
X-Mailer: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
Archived-At: http://mailarchive.ietf.org/arch/msg/json/z-6B5oSSzp6OH1C2ln7swQlz1Ao
Cc: Phillip Hallam-Baker <hallam@gmail.com>, JSON WG <json@ietf.org>
Subject: Re: [Json] Schema Requirements (Was: Re: Nudging the English-language vs. formalisms discussion forward)
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: Thu, 20 Feb 2014 22:25:00 -0000

----- Original Message From: "Nico Williams"
>> What aspect do you find a PITA?  Supporting both implicit extensibility 
>> and
>> explicit extensibility is surely harder than just supporting implicit
>> extensibility?
>
> Let's say you're generating C structs from the schema, and a given
> type is intended to be extensible, that it's an object.  So now you
> need to decide what your parser will do when faced with names in this
> object that were not known when the C code was generated.  There's two
> options: ignore them, or make them available as a C representation of
> an object with all the unexpected names.  The latter can be important
> at times (e.g., when you're eventually going to re-encode the inputs
> and you want to preserve those unknown bits).
>
> So far so good.  But if you make every type extensible by default,
> then you're polluting those C structs and the generated code even if
> mostly you don't need extensibility -- this is the PITA.  IMO
> extensibility needs to be requested explicitly, but then the problem
> you run into is people forgetting to do so.

A PITA, true, but not as big a PITA as when somebody forgets it or convinces 
themselves that they're never going to need it.  In my experience change is 
the only constant in data structures!

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