Re: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed Standard
Hector Santos <hsantos@isdg.net> Tue, 08 January 2013 23:59 UTC
Return-Path: <hsantos@isdg.net>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2864D11E80D1 for <ietf@ietfa.amsl.com>; Tue, 8 Jan 2013 15:59:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.484
X-Spam-Level:
X-Spam-Status: No, score=-102.484 tagged_above=-999 required=5 tests=[AWL=0.115, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
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 H+0w2V41hrNX for <ietf@ietfa.amsl.com>; Tue, 8 Jan 2013 15:59:42 -0800 (PST)
Received: from mail.winserver.com (pop3.winserver.com [208.247.131.9]) by ietfa.amsl.com (Postfix) with ESMTP id B525411E809A for <ietf@ietf.org>; Tue, 8 Jan 2013 15:59:41 -0800 (PST)
DKIM-Signature: v=1; d=isdg.net; s=tms1; a=rsa-sha1; c=simple/relaxed; l=5502; t=1357689567; h=Received:Received: Received:Received:Message-ID:Date:From:Organization:To:Subject: List-ID; bh=27BlMqfqTE51ywf8xIdHQ0NIWKY=; b=lOwxhY/N0e1XWkbxmfkP UfT0IKtTB2vozRMKzT8vEm1urEuxEvbZf+XnuyiDw8C9ypfKjMmoZ82P1h80RPXt ePfQ/UVPX3UM8ZHXm1mRKLHPF+GspyZBTTSKjFmp/ijW45Xkc1qXMGEqah3KVek0 iDglpmkqG+wP6xKbU+KDAMA=
Received: by winserver.com (Wildcat! SMTP Router v7.0.454.4) for ietf@ietf.org; Tue, 08 Jan 2013 18:59:27 -0500
Authentication-Results: dkim.winserver.com; dkim=pass header.d=beta.winserver.com header.s=tms1 header.i=beta.winserver.com; adsp=pass policy=all author.d=isdg.net asl.d=beta.winserver.com;
Received: from hector.wildcatblog.com ([208.247.131.23]) by winserver.com (Wildcat! SMTP v7.0.454.4) with ESMTP id 826326093.4432.3612; Tue, 08 Jan 2013 18:59:26 -0500
DKIM-Signature: v=1; d=beta.winserver.com; s=tms1; a=rsa-sha256; c=simple/relaxed; l=5502; t=1357689512; h=Received:Received: Message-ID:Date:From:Organization:To:Subject:List-ID; bh=Kr35vII is8N1NpWkcVLX790CpKiA8xmP3OZ0VZmLcAs=; b=RMzBNMa68zfWSPd4lb6eTYY hPZSi9a9dLtrpiPOoC7RH1F575BMag4MJhX+rSjKdGqMoWmDLgthDxoo3aa4OV/r fSZo4r2YIuLIwxciYRjDo1clwHNV4cLryUXE2nzVdlhRlY8wO3aPrKFAJDuWT8X/ /ulfacc8JZSWqVzTES8U=
Received: by beta.winserver.com (Wildcat! SMTP Router v7.0.454.4) for ietf@ietf.org; Tue, 08 Jan 2013 18:58:32 -0500
Received: from [192.168.1.101] ([99.3.147.93]) by beta.winserver.com (Wildcat! SMTP v7.0.454.4) with ESMTP id 1425027679.10.5212; Tue, 08 Jan 2013 18:58:31 -0500
Message-ID: <50ECB2CD.7090700@isdg.net>
Date: Tue, 08 Jan 2013 18:59:09 -0500
From: Hector Santos <hsantos@isdg.net>
Organization: Santronics Software, Inc.
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
To: Carsten Bormann <cabo@tzi.org>
Subject: Re: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed Standard
References: <20121211150057.28223.93310.idtracker@ietfa.amsl.com> <50cb04b9.86df440a.72fe.1e20SMTPIN_ADDED_BROKEN@mx.google.com> <CABP7RbeNsZ_rBWRjou=VG+hBhUKaOz+y1a0sSChwWiHte9znnQ@mail.gmail.com> <50cb5f3c.694c420a.38fb.39afSMTPIN_ADDED_BROKEN@mx.google.com> <CAChr6SxZRc3B_HCbw76kLe2dsRSr43r-gLpfMVnCUfJTrZdTLA@mail.gmail.com> <018651D6-83D4-42D6-86EB-0FAA5DE10DDA@tzi.org>
In-Reply-To: <018651D6-83D4-42D6-86EB-0FAA5DE10DDA@tzi.org>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Cc: IETF Discussion <ietf@ietf.org>, Markus Lanthaler <markus.lanthaler@gmx.net>, IETF Apps Discuss <apps-discuss@ietf.org>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ietf>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Jan 2013 23:59:43 -0000
Thanks Carsten for your explanations. As having experience with both styles of programming as you describe and also interpretive vs p-code vs static compiler writing for our servers and clients, it would seem to me that if the both syntaxes are possible, then the solution is more implementator specific. In other words, implementators can deal with both if robustness is desired. It sounds "kludgy" but it sounds like there exist both styles in practice already, so unless breaking existing implementators is not a concern in the name of going with the "correct and prefer" syntax, then both need to be supported. The first thing that came to mind when this interesting thread started is whether a solution is desired for a public open-ended query client/server system versus this being more proprietary (presuming the idea of "patching" is an high authentication required concept). It would seem to me that they might be various clients used against a server and it would be up to the server to support all possibilities to remain robust. The client itself is probably having its "JIT" (Just-In-Time) parsing/compiling/error trapping, etc or it might be more static to catch canned solutions. The client can perhaps have all its data I/O resolved by the "ide" new JSON support for data C/S (including "AJAX") transactions. Come to think to it, the server implementation itself COULD have its syntax checking before release the page for production and/or if dynamically generated then it would probably use a preferred syntax. It seems the answer is to support both syntaxes IFF there is compiler or interpretation logic capability to trapping both and if there are already existing clients and servers, note (highlight) that servers |need to|SHOULD| be ready for both. I will say one thing, if we ever needed a HTTP based patching need or requirement to add support to our product web server component, it doesn't seem I have any choice - it would be prudent to support both especially on the client side. What method I would use for our own data exchanges may be preferred method, but the server would need to do both. -- HLS Carsten Bormann wrote: > For those who wonder what all the fuzz in this thread is about, let me try to explain this with some different terminology, exposing what kind of intuition these widely diverging value judgements might derive from. > > In programming, there are two camps: static typers and dynamic typers. Static typers want to annotate their programs with information about the objects being manipulated so the compiler can help them catch careless mistakes even before the program runs. Dynamic typers don't care about that as much, because they know they have to write tests anyway (not all programming errors are exposable as type errors) and these will uncover the same careless mistakes. [The runtime system will actually check types once the specific context of execution is available, that's why it's called "dynamic typing".] > > The programming debate is beside the point here for a number of reasons*), but it does shape the thinking of programmers, and it seems in particular it shaped the thinking of some of the commenters here. > > /a/1/b/2 is something that a dynamic typer would come up with. The specific semantics are well-defined, but only in the specific execution context (what JSON document this is being applied to). > /a:1/b:2 (to use James' strawman syntax that distinguishes JSON object keys from array indices) exposes more typing info, so it is more statically typed, and it will catch mismatches between the types that the JSON pointer assumed to be present and those that actually are. > > For a static-typing fundamentalist, it is viscerally unacceptable to forego the opportunity of catching this kind of "type error". > > For a non-fundamentalist, this is more of an issue of probabilities, and the interlocking of mechanisms. > Which percentage of usage errors will be caught by this? > Many, many mismatches between JSON pointers and JSON instances to will just not happen to trigger this particular type error. > So it can be argued that the ability to catch it doesn't really help much: If you care about mismatch errors, you already need to have something else in place to catch them -- relying only on the likelihood of a mismatch to trigger an array/object mismatch would be imprudent. So in reality, the ability to catch the type error buys you nothing. > (Or, actually, very little, as improved diagnostics is always worth something in a debugging situation.) > > TL;DR: there is no "ambiguity" at all. Please stop referring to an "ambiguity". There is none. > Just a missed opportunity to catch an error, caused by not sending along (redundant) type information. > > (You will gather that my 2 cents for this change are "not worth it", but I was more interested in explaining the mere existence of this discussion, first. Applying the wrong intuitions to an engineering decision is one of the major causes of suboptimal design...) > > Gr��e, Carsten > > *) Well, for a start, we are not here to catch errors in programming. Programming languages are difficult because they are the human interface to the computer's programmability. JSON pointers are a pure machine-to-machine mechanism, so most of the issues in programming just don't arise. Porting your intuitions from programming to this is not going to work very well. > > > -- HLS
- RE: [apps-discuss] Last Call: <draft-ietf-appsawg… Markus Lanthaler
- RE: [apps-discuss] Last Call: <draft-ietf-appsawg… Markus Lanthaler
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- RE: [apps-discuss] Last Call: <draft-ietf-appsawg… Markus Lanthaler
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Mark Nottingham
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Matthew Morley
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- RE: [apps-discuss] Last Call: <draft-ietf-appsawg… Manger, James H
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Matthew Morley
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Mark Nottingham
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Mark Nottingham
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Abdussalam Baryun
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Abdussalam Baryun
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Matthew Morley
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Paul C. Bryan
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Murray S. Kucherawy
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Carsten Bormann
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Paul C. Bryan
- RE: [apps-discuss] Last Call: <draft-ietf-appsawg… Markus Lanthaler
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Conal Tuohy
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Matthew Morley
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Jared Rosoff
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Jared Rosoff
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Jared Rosoff
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… James M Snell
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Hector Santos
- Re: [apps-discuss] Last Call: <draft-ietf-appsawg… Robert Sayre