Re: [apps-discuss] JSON Schema considered harmful

Tim Bray <tbray@textuality.com> Thu, 20 September 2012 20:20 UTC

Return-Path: <tbray@textuality.com>
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 B82E221F84B6 for <apps-discuss@ietfa.amsl.com>; Thu, 20 Sep 2012 13:20:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.726
X-Spam-Level:
X-Spam-Status: No, score=-4.726 tagged_above=-999 required=5 tests=[AWL=-1.750, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1]
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 SkrKhJOoW8Ak for <apps-discuss@ietfa.amsl.com>; Thu, 20 Sep 2012 13:20:28 -0700 (PDT)
Received: from mail-wi0-f170.google.com (mail-wi0-f170.google.com [209.85.212.170]) by ietfa.amsl.com (Postfix) with ESMTP id 7882E21F85EA for <apps-discuss@ietf.org>; Thu, 20 Sep 2012 13:20:28 -0700 (PDT)
Received: by wibcb5 with SMTP id cb5so772219wib.1 for <apps-discuss@ietf.org>; Thu, 20 Sep 2012 13:20:27 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-originating-ip:in-reply-to:references:date :message-id:subject:from:to:cc:content-type:x-gm-message-state; bh=DYdLPV9NwJHin8SpjyVrPvCEfE2MIqUC5U2e1YpqK3M=; b=Ny6aK6Q8hPNyy0laK+FdjWyWr4WZvIvSmS6gUIAw03AsJpvoKMFGXU5YsR2BZgQBJq Rn0Q0XlAExCZfX4SkGKnYRM9g2hfbz+zu0J01+D8cuNx+xf136+XdM0YxWWHumJuUpbi j8PcycJAKt6r9IdlsmutZAGPUO2roAAgi8MyoUxU8Ba7IkJDnvePvSDwkmgmSR8PfqEj YFsqqTbDRVg4Y+/KkffGb3A8mJ9J85aWeE4vgkeuV82I5/N2dSmsYF7wW1o18jV6Rvjh iiWiSyCP7sH8gIGdQydRIXEpoT/vxR7fRwB9W+arNTun2vfUpBBYn/uMek7ZOccT2DL1 b4aA==
MIME-Version: 1.0
Received: by 10.216.23.202 with SMTP id v52mr1674520wev.32.1348172427397; Thu, 20 Sep 2012 13:20:27 -0700 (PDT)
Received: by 10.195.13.200 with HTTP; Thu, 20 Sep 2012 13:20:27 -0700 (PDT)
X-Originating-IP: [24.84.208.217]
In-Reply-To: <505B78B4.80309@dcrocker.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> <505B78B4.80309@dcrocker.net>
Date: Thu, 20 Sep 2012 13:20:27 -0700
Message-ID: <CAHBU6istjQ+vxtgBXE4aQ011tcOgudkxK9tq8e6enG8u+k_M-g@mail.gmail.com>
From: Tim Bray <tbray@textuality.com>
To: dcrocker@bbiw.net
Content-Type: multipart/alternative; boundary="0016367f9838a18a6804ca27daf9"
X-Gm-Message-State: ALoCoQnBh/bHO/QZIjtns000CzA7qeNcEv+tM9E2wVtap6FcneFBqYGxCHrGQTcCkRvdDum3WcNp
Cc: Mark Nottingham <mnot@mnot.net>, 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
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:20:29 -0000

Frankly that notion had never crossed my mind, but is there a case for a
“Tao of network protocols” or an “Informational BCP” or some such?  I could
put some cycles into it.  -T

On Thu, Sep 20, 2012 at 1:12 PM, Dave Crocker <dhc@dcrocker.net> wrote:

>
>
> 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
>