Re: [AVTCORE] John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)
Stephan Wenger <stewe@stewe.org> Wed, 13 December 2023 18:41 UTC
Return-Path: <stewe@stewe.org>
X-Original-To: avt@ietfa.amsl.com
Delivered-To: avt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 574EAC14F5E4; Wed, 13 Dec 2023 10:41:44 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.908
X-Spam-Level:
X-Spam-Status: No, score=-6.908 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=steweorg.onmicrosoft.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EPIPLKaDNEDQ; Wed, 13 Dec 2023 10:41:39 -0800 (PST)
Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2112.outbound.protection.outlook.com [40.107.102.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6CF3CC14F602; Wed, 13 Dec 2023 10:41:39 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IVyYt787waHVc7rPV3GGciWmveXSkviYA7JXmBvyBHpV2Um1z9OPsCnXmrmIXBCBIyo+206rXxqs2p1eT4KNPObTFGXqPi3+IuwC/KxKYJYatzbkHbf0F3K3M3c5y1F1BQVGUVn2NLIhyEWPsTXO23InLnVxCgm5E4gnmD7vckSg0BpKfm1Q4vVycW4QiR/BzNd8qy5sUv78Re52Dj2Cks9wp2LUwB5ZoACFdG6Imsh6AIvZLVzMt0Oo+5ve7hEWlo7qTE9VrGqH/ossVdMKkAQE07gVd1Syeu7qB7rMNloQuD3dgY7GDW8wRjsYXqvHPpwSQF5Iz8fKDdIYHSLoHg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GYgIoeEFa11ZdlZsGZSSZ831AdZ+PpPxkNhq6KLEwtA=; b=CWFQmH5DuzILXFq53nakj7rWeW2uzu7gGQWlvk9fdphw4ePRgB7YVkwzL8tAGY1yqGumqX8saPGLYMLjJCpaSMK7lFznlHqbIfK3Q8/IoWT9Moe008wIYosANKcW3WR7CiFSqzhv+uqbqeWjtMR0iUDZYkZgLlCfWc5MMGsgwxQYUsNvctIochukQmkd9NR9SaHkYgckAruzs3MrQ8ZU8fLXFfsr0d9o0H+H/o3nhpajkoJ73bTfzhqx3eg3Q7i1VeyaobEiGuZX/k7o25bci4bT6STzlg9EvU2JyY2JtCdg0xatY3dGMSos5mqdvIrbH5LIlQFpmQZNIED39dx6DQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=stewe.org; dmarc=pass action=none header.from=stewe.org; dkim=pass header.d=stewe.org; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=steweorg.onmicrosoft.com; s=selector2-steweorg-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GYgIoeEFa11ZdlZsGZSSZ831AdZ+PpPxkNhq6KLEwtA=; b=IfeaB8/X6O9AdmAnHjQDi4OunHURX3pyULihGJm0fwjbsVRyNFxE16682I+OGTXYpkUUozkL3hlY9e8WXDDIuLohY5Bw/D6xeMSYHWXI3IOHQ7zmIkdz+WamIEAULmTg2Z9nZkxlyvfQ6C9AeZfbvBK+39fNjfUVxSAWF8I+Evw=
Received: from PH0PR17MB4908.namprd17.prod.outlook.com (2603:10b6:510:d6::23) by SJ0PR17MB4893.namprd17.prod.outlook.com (2603:10b6:a03:3bc::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Wed, 13 Dec 2023 18:41:36 +0000
Received: from PH0PR17MB4908.namprd17.prod.outlook.com ([fe80::b12:ea4:48af:1a6d]) by PH0PR17MB4908.namprd17.prod.outlook.com ([fe80::b12:ea4:48af:1a6d%7]) with mapi id 15.20.7091.022; Wed, 13 Dec 2023 18:41:35 +0000
From: Stephan Wenger <stewe@stewe.org>
To: John Scudder <jgs@juniper.net>
CC: The IESG <iesg@ietf.org>, "draft-ietf-avtcore-rtp-evc@ietf.org" <draft-ietf-avtcore-rtp-evc@ietf.org>, "avtcore-chairs@ietf.org" <avtcore-chairs@ietf.org>, "avt@ietf.org" <avt@ietf.org>, "bernard.aboba@gmail.com" <bernard.aboba@gmail.com>
Thread-Topic: John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)
Thread-Index: AQHaLcB5Am+hPyfOvEWdzOgGMtzwpLCnVUCxgAAplICAAAfeQQ==
Date: Wed, 13 Dec 2023 18:41:35 +0000
Message-ID: <PH0PR17MB4908A62EC5DF74897A14A5DCAE8DA@PH0PR17MB4908.namprd17.prod.outlook.com>
References: <170247075996.35227.14350240644730583614@ietfa.amsl.com> <PH0PR17MB49088E41E59F40DE4D1F4FE4AE8DA@PH0PR17MB4908.namprd17.prod.outlook.com> <627FCDC4-1650-4B15-9885-64CE8AF2EAAA@juniper.net>
In-Reply-To: <627FCDC4-1650-4B15-9885-64CE8AF2EAAA@juniper.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=stewe.org;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PH0PR17MB4908:EE_|SJ0PR17MB4893:EE_
x-ms-office365-filtering-correlation-id: 7a811b7f-5f91-4842-3bcd-08dbfc0b2299
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: e5E3606Suhl5lscJ60Fw1nO9+7zlbYXgelToReMc+KgwjakI1MsJrMIZ4Eu65NAS7UVl249r6UE5Dw2FssvujCGfkgb48eTtSnZ/nti5nAJRMYZZAOgypBCxknZc2EP7wOKwCLOR2rRNw2LnkMCpJoqf4W2yngrdC5gRsbW6UZvp2RLRBJYwy/zFzlVoKzy0zn+Gu2x9GTaR/p8ev5T2GBH0zISaToWKy2n7Flas2pT0EaX1Bh1Q4tXqpqZNHqCXX/sDM9r2yu0DlY17tSjXzEQ84cWaAyWJM1MRM25girNmeNk/oZf86o2nRtF4HiHOz5orb6B1vg+Kn7jI1eA9IAF7RtlDsG4nxUHMpMs3A1j+0QWZOJEADuc+iMklDcrlcsvcLVwZTDKAQLb3Ax31MmOAb2/1csbaxtoC4lMzuKwQ4RRR9Ku48oKsDDfxJWVcbJmk3Jm+mHuEKCrjP0BV5YA3r9Jkw37yrjaGYLOiL8yXWVd6wsJu4rq0vUI+AL2mQIS6dD1RO5IQrZDHW4DYWjMUkvsFSs+5SCxIk+TNWVOHdZmPWzorf4bhWpv2ryQlLq+iTym+tnWO/Vu+/DAYiDkNpzbvzjqQ9qg71QEwIJXsRv830P5g1LzSZmD+PNw9
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR17MB4908.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39830400003)(376002)(136003)(346002)(396003)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(83380400001)(9686003)(6506007)(7696005)(53546011)(38100700002)(122000001)(8936002)(5660300002)(4326008)(26005)(9326002)(8676002)(52536014)(41300700001)(2906002)(71200400001)(478600001)(64756008)(54906003)(316002)(6916009)(66556008)(66946007)(66446008)(76116006)(66476007)(33656002)(86362001)(55016003)(38070700009)(66899024); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: KW3qgte7Evc0vUTOnir/Vgs4ryCqnMUo5OGcDrqpBmctVb2hB9eg4N3Alb1UVM2sK9iz6QY0NLXZwecG1lYXDnkgZf+W8WWKyf9Ja74tixY22KS2tC0Wz7Vw+jDEpdx6aUTjArvQMi7GPwoRHBrvZ0AYJPGfmLNdSZLNHUS0VoppuxaexgMLp5gveSpCGN0kTBRN9H8Wxbf2j/pf3IcA0MqUjbbHgpSp6n1luxhUD0xEjffOlMdZTifpcmb6+zOzrXigJZ/of0bzJfujZgPt+jssZBF2XGk5XNHs1dgo7FAQSoYxy+nL8ePlgrbGAxhGeM+EreuPeEJ9BHD4wo+LVgZko+Z+NmPy0dp9++n1s+NgdhsepeFd8+skdAbg2Z1iXQPZdwmga9gbUHHyj0QOv6QsSCnXXmoBAHnLGQfWDnxv/DK9KehbVw7fOa7/yba9Mxii0S9jNpPMM5vIzMFcTNzrYSRONETyzGAtkUsccKkzC6e3omKGbRdTu7Vy/VvG9SMBPvxF8cB6UxxYwLbXglUUt+i1DR8vZIuvCvpG/LC7bCDSV1OQqc6FIWwIwD4F8TpJ4dKyDVAdEf7OAynD4jAxo5oTuP3oxdCQkgOtzxgTNIDZ93brpBONoELJ8PaTWrsqTqZKZZL3X0RkgAJygGFBrfsoS91/aMzh+VTEv2DCB+bPorZrkZQW3pSrWVjSGMuvLKU7Ff8PEIvyWtuD+zy5M060j30qXXFcDeA1RuQ88a6MUZqeLoo7WIGCVqK+DF7S46MfETU43vUp8v+pSa+jKMk1BgUatHeC5CQL0LpcqHHHw+HYaq8ieNpuwheYa81rwEokH47lQPSzWR4RJ7hWfBQLLyFtiDY/q3/c3c3lePo8kmL0+gil11BjXQ45dMP1BHfaagRx3kfoKea0qw0y35lPwPTyty2Ut193WAtnfz4poRikoRfm+sPavB8I8tToPgUo1MtlRBj9ygevcVh5vESiaBNGRB7ufhPXrfObVlpif0VNPQyVQLJ1TZGI3fxX6AOgJ+irzyjrt+EyxUxhCPK36NOfw51TCHMKqP/VC0q+bay/RGy19TWcZYDFevGunFw4KKeHMg+4C8JTLIwWFcNL3YsRUemVl341Bc4yyI+di3ujwHrnheOGuS/xdJLUOKVLlqE/JfASJ/EJQ+EkgGe+Io2ru5Ljafkaw3HHIXNDnNhdHBqEgq51ahAVO06Hb1U+eSdbHLRwfYCkD1moFcQqGlqJtdY2Mv4r0w5AWIFYXi4zALHe4u7D50zZktdipjWxGqsY7Ti2ut2RcMVeCoTexlZHFa/VleOa/5Se17ghZF28jsdJrPyUxHPE1jD0HiT8zvnkgyVJkcO9TJE/2rjuCkpaUKUUxLepQJx2Ynb6j5wG2/XM+Fe/mDbnISP7kWRdR2YWAV+iscDYN9Dz4hvZ2YXwHfK2//X37nS+PAHZe3ItAq7vdlevQKRsjuDI9g3bfevWZ3rGKGARMNN+EAFwcUIEMDRklWywtFdhuX1160ND7qbigz6b/OnDlPsrZiQqwOEL3Pje8NryZ5UI6xia4N/foV47YxNSjaSvgJBo1c2XPiXBG6RuU7jR
Content-Type: multipart/alternative; boundary="_000_PH0PR17MB4908A62EC5DF74897A14A5DCAE8DAPH0PR17MB4908namp_"
MIME-Version: 1.0
X-OriginatorOrg: stewe.org
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PH0PR17MB4908.namprd17.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a811b7f-5f91-4842-3bcd-08dbfc0b2299
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2023 18:41:35.7940 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 865fc51c-5fae-4322-98ef-0121a85df0b6
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 2O27IliTUClIwiduQMiFWKzxUW2RFRxGMSLwXNnuMAFcYL4DUIP0udLgyov3aHwr
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR17MB4893
Archived-At: <https://mailarchive.ietf.org/arch/msg/avt/4sU9mvgxHdHP_knk7G6Ca_MXEFo>
Subject: Re: [AVTCORE] John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT)
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Audio/Video Transport Core Maintenance <avt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/avt>, <mailto:avt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/avt/>
List-Post: <mailto:avt@ietf.org>
List-Help: <mailto:avt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/avt>, <mailto:avt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Dec 2023 18:41:44 -0000
Hi John, Oh my. Now a routing AD invests time in making detailed text proposals towards something as exotic as an RTP payload format. Much appreciated! I think your language is fine, and we will go with it in the revised draft but let us first run against a few EVC experts, to make sure we get it right this time. Then checking with avtcore. I hope we can avoid another round of last calls for that, but that’s obviously not up to me. I’ll report back to you and the IESG only if there’s an issue with your text. Thanks for the sign-off on MUST vs. must; we will implement this in an updated draft. Stephan From: John Scudder <jgs@juniper.net> Date: Wednesday, December 13, 2023 at 09:52 To: Stephan Wenger <stewe@stewe.org> Cc: The IESG <iesg@ietf.org>, draft-ietf-avtcore-rtp-evc@ietf.org <draft-ietf-avtcore-rtp-evc@ietf.org>, avtcore-chairs@ietf.org <avtcore-chairs@ietf.org>, avt@ietf.org <avt@ietf.org>, bernard.aboba@gmail.com <bernard.aboba@gmail.com> Subject: Re: John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT) Hi Stephan, Thanks for your detailed reply. Two followups below. I have edited out the rest for brevity, anything I have not commented on, is agreed. On Dec 13, 2023, at 12:15 PM, Stephan Wenger <stewe@stewe.org<mailto:stewe@stewe.org>> wrote: Hi John, Excellent review. Thanks. Please see my responses inline. I apologize for the wordcount, but I think that such a thoughtful review requires quite a bit of context and explanation. Would you please sign off on the resolution of the MUST RFC 2119 codeword in section 6? While you have not raised it to DISCUSS level, I have mentally done so for myself :-) Done. Thanks, Stephan From: John Scudder via Datatracker <noreply@ietf.org<mailto:noreply@ietf.org>> Date: Wednesday, December 13, 2023 at 04:32 To: The IESG <iesg@ietf.org<mailto:iesg@ietf.org>> Cc: draft-ietf-avtcore-rtp-evc@ietf.org<mailto:draft-ietf-avtcore-rtp-evc@ietf.org> <draft-ietf-avtcore-rtp-evc@ietf.org<mailto:draft-ietf-avtcore-rtp-evc@ietf.org>>, avtcore-chairs@ietf.org<mailto:avtcore-chairs@ietf.org> <avtcore-chairs@ietf.org<mailto:avtcore-chairs@ietf.org>>, avt@ietf.org<mailto:avt@ietf.org> <avt@ietf.org<mailto:avt@ietf.org>>, bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com> <bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com>>, bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com> <bernard.aboba@gmail.com<mailto:bernard.aboba@gmail.com>> Subject: John Scudder's No Objection on draft-ietf-avtcore-rtp-evc-06: (with COMMENT) […] ## COMMENTs ### Section 1.1.4, Type field description appears to be wrong As best I can tell from my skim of [EVC], the type field, although six bits, can only represent values from 0 to 62, not the more obvious 0 to 63, and uses an oddball encoding, viz NalUnitType = nal_unit_type_plus1 − 1 […] Thanks for this! We will investigate further and if there were a bug, we will correct it. That will require some thinking. If there were indeed a bug, the same bug is likely present in a number of RFCs specifying payload formats of the H.26x series, so this is a comparatively big deal for us! As you were curious for the reasoning of the numbering range: the syntax element nal_unit_type_plus1 (lower case, with underscores) represents bits on the wire, and has a value range of 1..63. The value 0 is reserved to prevent start code emulation. Historically (pre 2003), video codec bitstreams used 15 or 23 or more consecutive zero bits followed by a 1 bit to indicate the start of a coded picture. In H.264 (ca. 2003), the startcode was placed to the start of each NAL unit. The NAL unit header is one of the few syntax elements that are outside of the start code emulation prevention mechanism of section 7.4.2.1., for reasons I could explain, but that would take a lot of letters. We had to make sure that in the 16 bit NAL unit header there are at least one nonzero bit, and that was solved by disallowing 0 for nal_unit_type_plus1. Once that value is parsed, the logic of the standard is such that the value of nal_unit_type_plus1 minus 1 is assigned to a variable NalUnitType (identified by capitalization and no underscores), and only that variable is used throughout the rest of the EVC spec. The value rage of that variable is 0..62 inclusive. Thanks for the detailed explanation! I rely on you to make any changes you deem necessary, but the essence of what I identified as a possible problem is that the draft as it stands says "This field specifies the NAL unit type”, but as you explain above, the nal_unit_type_plus1 bits on the wire are different from the NalUnitType, and therefore also different from the “NAL unit type”; the mapping from “this field” to “the NAL unit type” is not the identity function as the text implies. Probably the fix is something like, OLD: nal_unit_type_plus1. This field specifies the NAL unit type as in Table 4 of [EVC]. If the value of this field is less than and equal to 23, the NAL unit is a VCL NAL unit. Otherwise, the NAL unit is a non-VCL NAL unit. For a reference of all currently defined NAL unit types and their semantics, please refer to Section 7.4.2.2 in [EVC]. NEW: nal_unit_type_plus1. This field allows the NAL Unit Type to be computed. The NAL Unit Type is equal to the value found in this field, minus 1, in other words, NalUnitType = nal_unit_type_plus1 − 1 The NAL unit type is detailed in Table 4 of [EVC]. If the value of NalUnitType is less than or equal to 23, the NAL unit is a VCL NAL unit. Otherwise, the NAL unit is a non-VCL NAL unit. For a reference of all currently defined NAL unit types and their semantics, please refer to Section 7.4.2.2 in [EVC]. Note that nal_unit_type_plus1 MUST NOT be zero. Optionally, you could add something like "also note that as a consequence of this encoding, the possible values of NAL unit type are in the range of 0 to 62." But perhaps given the other verbiage, this is unnecessary. This is just an illustrative example, I don't expect you to adopt my wording, although if you want to you're certainly welcome. […] ### Section 6 “All normal RTP mechanisms related to buffer management apply. In particular, duplicated or outdated RTP packets (as indicated by the RTP sequence number and the RTP timestamp) are removed. To determine the exact time for decoding, factors such as a possible intentional delay to allow for proper inter-stream synchronization, MUST be factored in.” Normally I expect that a MUST will be more specifically prescriptive without requiring the implementor to exercise imagination or creativity. The one here seems to be of the form “implementations MUST do the right thing” which seems not that helpful to the implementor. It’s not wrong as far as it goes, but the RFC 2119 keyword seems out of place. Another tricky one here. Thanks for your diligence! The language you are reciting above has been around verbatim (plus/minus capitalization of the word “MUST”; see below) since RFC 3984, ca. 2005. In RFC 3984, the depacketization section was labelled as informative and hence sloppiness in drafting was to be expected 😊 RFC 7798 (HEVC payload, 2016) inherited the language. The section there was normative, but “must” was not capitalized while the “convention” section 2 said that only capitalized MUSTs indicate a normative behavior. Insofar, in RCC 7798, that lower-case “must” was to be interpreted as plain language. I vaguely recall discussion in the working group at the time along the lines of your argument, and the outcome speaks for itself. It was not a drafting mistake. Fast forward to 2021 and the VVC payload, RFC 9328. Here, we capitalized the MUST, and no comments were received from the WG or during IETF last call, nor from the IESG. I don’t recall a conscious decision in this direction, and, after your comment, do consider it a drafting mistake. Based on your comment, I think RFC3984 and RFC7798 were doing the right thing in not stating an in practice not actionable “MUST” requirement. The minimum change would be to change the “MUST” to a “must”, arriving at plain language. Would that address your comment? If so, I will also submit an erratum against RFC 9328 requesting the same change. That would be just fine. Thanks for the careful analysis. Regards, —John
- [AVTCORE] John Scudder's No Objection on draft-ie… John Scudder via Datatracker
- Re: [AVTCORE] John Scudder's No Objection on draf… Stephan Wenger
- Re: [AVTCORE] John Scudder's No Objection on draf… John Scudder
- Re: [AVTCORE] John Scudder's No Objection on draf… Stephan Wenger
- Re: [AVTCORE] John Scudder's No Objection on draf… Stephan Wenger
- Re: [AVTCORE] John Scudder's No Objection on draf… John Scudder