Re: [apps-discuss] JSON Schema considered harmful

Dave Crocker <dhc@dcrocker.net> Thu, 20 September 2012 20:12 UTC

Return-Path: <dhc@dcrocker.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 B0B9821E8056 for <apps-discuss@ietfa.amsl.com>; Thu, 20 Sep 2012 13:12:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.563
X-Spam-Level:
X-Spam-Status: No, score=-6.563 tagged_above=-999 required=5 tests=[AWL=0.036, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
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 oFbpF20C5WGy for <apps-discuss@ietfa.amsl.com>; Thu, 20 Sep 2012 13:12:44 -0700 (PDT)
Received: from sbh17.songbird.com (sbh17.songbird.com [72.52.113.17]) by ietfa.amsl.com (Postfix) with ESMTP id 19CAE21E804B for <apps-discuss@ietf.org>; Thu, 20 Sep 2012 13:12:44 -0700 (PDT)
Received: from [192.168.1.7] (ppp-67-124-89-127.dsl.pltn13.pacbell.net [67.124.89.127]) (authenticated bits=0) by sbh17.songbird.com (8.13.8/8.13.8) with ESMTP id q8KKChBe004057 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 20 Sep 2012 13:12:43 -0700
Message-ID: <505B78B4.80309@dcrocker.net>
Date: Thu, 20 Sep 2012 13:12:36 -0700
From: Dave Crocker <dhc@dcrocker.net>
Organization: Brandenburg InternetWorking
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1
MIME-Version: 1.0
To: Mark Nottingham <mnot@mnot.net>
References: <CAMm+LwjYj0gd3Cxjj8WFcLy-zgBwfVDCPaRGcNSgOHD9m_07yw@mail.gmail.com> <999913AB42CC9341B05A99BBF358718D01DF0684@FIESEXC035.nsn-intra.net> <CAK3OfOgU-Kepre2Z2dg_S8DAVCU413SRvuWMvJcC3BmE0BjNbQ@mail.gmail.com> <505B43B3.7050503@berkeley.edu> <CAHBU6iupyZEhENRVYJ2sMNk79RSZbOVAawr6vP42uzNyO0z+Nw@mail.gmail.com> <77AFECFB-F63A-457F-9C7F-F715315C0651@mnot.net>
In-Reply-To: <77AFECFB-F63A-457F-9C7F-F715315C0651@mnot.net>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0 (sbh17.songbird.com [72.52.113.17]); Thu, 20 Sep 2012 13:12:43 -0700 (PDT)
Cc: apps-discuss@ietf.org
Subject: Re: [apps-discuss] JSON Schema considered harmful
X-BeenThere: apps-discuss@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
Reply-To: dcrocker@bbiw.net
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, 20 Sep 2012 20:12:44 -0000

On 9/20/2012 1:05 PM, Mark Nottingham wrote:
>
> On 20/09/2012, at 9:53 AM, Tim Bray <tbray@textuality.com> wrote:
>
>> I believe:
>> - ASN.1 has been bypassed by history and has truly horrible tooling. Just don’t go there.
>> - If you’re interchanging documents, use XML; if (much more common) you’re interchanging data structures, use JSON.
>> - Do not use multiple syntaxes for the same protocol. Pick one of XML or JSON and stick with it.
>> - The most important thing in defining a protocol is good clean comprehensible human-readable prose.
>> - All the protocols I’ve ever seen have important constraints that can’t be expressed usefully in declarative schema languages.
>> - Therefore, the next most important thing is an automated validator/test-suite.
>> - A schema is a nice-to-have.
>> - If you’re in XML and want schema-ware, use RelaxNG. For an example, see RFC4287.
>> - If your protocol is JSON, investment in a validator/test-suite has much higher ROI than chasing schema unicorns.
>
> +1; somebody please give this a BCP#.


In its current form, perhaps not.

On the other hand, something along this lines could provide exremely 
useful pedagogy in doing specifications work.

It would, of course, need rather more verbose discussion/justification 
of its guidance.

That is, something that says what the characteristics are of the better 
formal notation choices are and what the characteristics of the less 
better ones are.  Then describes the better choices and their enticing 
features, perhaps in terms of tradeoffs.

Then meta-points, such as "choose exactly one".  Etc.

d/

-- 
  Dave Crocker
  Brandenburg InternetWorking
  bbiw.net