Re: [arch-d] deprecating Postel's principle- considered harmful

Henning Schulzrinne <hgs@cs.columbia.edu> Sat, 11 May 2019 00:25 UTC

Return-Path: <hgs10@columbia.edu>
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 61C481208BA for <ietf@ietfa.amsl.com>; Fri, 10 May 2019 17:25:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham autolearn_force=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 maGhOcPNB00o for <ietf@ietfa.amsl.com>; Fri, 10 May 2019 17:25:47 -0700 (PDT)
Received: from outprodmail01.cc.columbia.edu (outprodmail01.cc.columbia.edu [128.59.72.39]) (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 A6DAA12022E for <ietf@ietf.org>; Fri, 10 May 2019 16:42:00 -0700 (PDT)
Received: from hazelnut (hazelnut.cc.columbia.edu [128.59.213.250]) by outprodmail01.cc.columbia.edu (8.14.4/8.14.4) with ESMTP id x4ANe9nH015419 for <ietf@ietf.org>; Fri, 10 May 2019 19:41:56 -0400
Received: from hazelnut (localhost.localdomain [127.0.0.1]) by hazelnut (Postfix) with ESMTP id 9AA766D for <ietf@ietf.org>; Fri, 10 May 2019 19:41:56 -0400 (EDT)
Received: from sendprodmail03.cc.columbia.edu (sendprodmail03.cc.columbia.edu [128.59.72.15]) by hazelnut (Postfix) with ESMTP id 3A6A06D for <ietf@ietf.org>; Fri, 10 May 2019 19:41:56 -0400 (EDT)
Received: from mail-ot1-f72.google.com (mail-ot1-f72.google.com [209.85.210.72]) by sendprodmail03.cc.columbia.edu (8.14.4/8.14.4) with ESMTP id x4ANftuB064066 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NOT) for <ietf@ietf.org>; Fri, 10 May 2019 19:41:56 -0400
Received: by mail-ot1-f72.google.com with SMTP id b89so3746672otc.18 for <ietf@ietf.org>; Fri, 10 May 2019 16:41:55 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=kTOum0oSsAyHjstSUOLpJrHGJjbTHEteixzt6lnd7Rs=; b=Pixnhhmtnvyyz1nwhWwbQ0VWMPg9npkaK1T0wJaHM+V45DS4dxEtHzRL7li1U/Ut1W YnnkhncawGOkjwhgthlY15NBukQIUY3jpjnn08eTL+63FB4mZ82lCUszqEdC5s/GcDDZ fGSOfJDXFWiK9A0GD3RNmXnoIcZBF+xDCbLrtoo/i1A5COr+9qqkWB6BKptNk1gbB3e1 xzOopFOHblpXtEOwvCE2lbSwrtmnBtsgH3wH0TTsXYI+BEW4MUb6hKuT83o/rSp2knL1 rlub706UmRUzwwXNVhVHJIaDE67H/aQDohWVyZHamJls3xSuR01m/afWT54nS/btZI53 ZbCA==
X-Gm-Message-State: APjAAAXWLNYH5LrJuud6J65IuGSjwCAp2CXhcim28Gl/GQzywr6C25i0 GyaP80p95oNplPxipT0JN6YK8BLRkBZaQFb1sVBaw5mJUgRY4UcZilGBBU5FGg5nVT3dl2vKVt1 ZR8WREfrI7uhGPZ5/odJ1dzkE6vUe
X-Received: by 2002:a9d:6b8e:: with SMTP id b14mr8627935otq.125.1557531715367; Fri, 10 May 2019 16:41:55 -0700 (PDT)
X-Google-Smtp-Source: APXvYqzqMdeJAR4vU/N7cvVyMoT3+9FIY85XWeTuef73yKCz7uIlz67txQLQFI+zXCgGb/Cn+HioX2/4i6MwvvdnOpI=
X-Received: by 2002:a9d:6b8e:: with SMTP id b14mr8627925otq.125.1557531715038; Fri, 10 May 2019 16:41:55 -0700 (PDT)
MIME-Version: 1.0
References: <F64C10EAA68C8044B33656FA214632C89F024CD3@MISOUT7MSGUSRDE.ITServices.sbc.com> <CALaySJJDHg5j9Z7+noS=YXoNROqdsbJ6coEECtLtbJ6fWJ3xsQ@mail.gmail.com> <CAHw9_iKE9SSOK_9AUpoMaS9pGz91LuJr1_HNv0B-6RxT_rb2dw@mail.gmail.com> <BA365F84-3BD8-4B6B-B454-B32E4B6B6D23@piuha.net> <CACgrgBYBW9zi+jzdGK55aQUa36UK669A2an6gm=Tm=fxDgP68A@mail.gmail.com> <f52e3197-c148-50f5-ae7e-167a37b30546@bobbriscoe.net>
In-Reply-To: <f52e3197-c148-50f5-ae7e-167a37b30546@bobbriscoe.net>
From: Henning Schulzrinne <hgs@cs.columbia.edu>
Date: Fri, 10 May 2019 19:41:28 -0400
Message-ID: <CACgrgBaKh0Mmyf++uZWOPf+uiZ8Vdvcfm5h1tsbDZ-28DgVdJA@mail.gmail.com>
Subject: Re: [arch-d] deprecating Postel's principle- considered harmful
To: Bob Briscoe <ietf@bobbriscoe.net>
Cc: Jari Arkko <jari.arkko@piuha.net>, "architecture-discuss@ietf.org" <architecture-discuss@ietf.org>, "ietf@ietf.org" <ietf@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000009a07e70588911ceb"
X-No-Spam-Score: Local
X-Scanned-By: MIMEDefang 2.84 on 128.59.72.15
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/VmCAQeArqJ3N9z_elI4iYwU9I5I>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.29
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: <https://mailarchive.ietf.org/arch/browse/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: Sat, 11 May 2019 00:25:59 -0000

This is how many programming languages work. For example, PHP defines error
handling along those lines:

https://www.php.net/manual/en/errorfunc.constants.php

E_DEPRECATED
Run-time notices. Enable this to receive warnings about code that will not
work in future versions.

E_STRICT
Enable to have PHP suggest changes to your code which will ensure the best
interoperability and forward compatibility of your code.

Having "soft errors" in protocols would indeed be useful. Both SIP and HTTP
have the "Warning" header, but it doesn't seem to be used much.

Henning

On Thu, May 9, 2019 at 9:20 AM Bob Briscoe <ietf@bobbriscoe.net> wrote:

> Jari, Henning,
>
> Altho long, this thread has been educational for me. Even better, this
> recent thread moves towards solution mode.
>
> Let's explore the idea that incentives are needed to encourage senders to
> tighten-up, rather than permanently rely on the receiver's liberality.
> Henning's responsible disclosure example is a good one, but it relies on a
> lot of human intervention at both ends. The EDNS flag day example was also
> effort-intensive.
>
> Perhaps we need something between Error and Warning, that says "Warning,
> Error imminent". Then, if the developer of the sender doesn't stop relying
> on the liberality of the receiver after a stated deadline, the receiver
> will stop being liberal, and communication will subsequently fail (or
> incrementally degrade, or publicly disclose the developer's laziness, etc).
>
> The receiver might need to hold per sender state, but a single
> per-receiver deadline would also be possible (effectively automating a
> per-receiver flag-day).
>
> These warning responses would have to be defined as part of the protocol
> (not necessarily when it was first defined). But how to collect the
> warnings from deployed implementations would be up to developers and
> operators - and they would have the incentive to work this out. The
> rationale is to minimize the work for good implementations, and bounce as
> much of the work as possible onto lazy developers.
>
>
> At first I thought that an implementer would be unlikely to write the
> necessary warning code, cos they don't care as much about protocol purity
> as protocol designers do. However, if their own code is getting
> increasingly complex, because it's having to handle all the unexpected
> cases, they will have an incentive to encourage the remote ends to tighten
> up their act.
>
>
> Bob
>
>
> On 08/05/2019 14:58, Henning Schulzrinne wrote:
>
> To a different degree, the security community has struggled with this in
> the "responsible disclosure" discussion. The incentives are different, but
> there seem to be three best practices that might generalize: (1) a
> well-documented mechanism to reach the right part of the organization,
> beyond the general support mechanism; (2) a reasonable time period to
> address the problem; (3) public disclosure after that time period.
>
> A related problem is that it is often difficult for developers to get
> advice and help. If they are lucky, they find the IETF mailing list, but it
> may no longer be active or such questions may be seen as out-of-scope. We
> had the sip-implementors@ list for a while, and it generally seemed
> helpful. But this requires somewhat-experienced people willing to help
> relative newbies and does not scale well. Interop events (plugfests and the
> like) are also helpful, particularly if these include torture tests.
>
> Henning
>
> On Wed, May 8, 2019 at 7:38 AM Jari Arkko <jari.arkko@piuha.net> wrote:
>
>> I find myself agreeing with many of the posts, but maybe Warren put it
>> most nicely and compactly: "The principle should be applied judiciously
>> (sometimes it isn't), not discarded."
>>
>> And having seen some of the too-big-to-demand-compliant-interoperability
>> situations that Paul and others mention, I’ve also felt the pain :-)
>>
>> I find it interesting to compare the situation to analogue situations in
>> other kinds of systems. For instance, I always like to program in defensive
>> style, where my software is as brittle as possible to catch errors. Yet,
>> for delivered software, one often switches to maximum survivability, and
>> often your software components can at least attempt reasonable recovery
>> from many situations that shouldn’t have occurred. More modern software
>> development practices combine development with monitoring, feedback,
>> instrumentation, tracking of new versions in small populations before
>> enlarging their usage, etc. That is kind of a best of both worlds setup,
>> because you can make things survivable but you’ll be receiving real-time
>> feedback on what’s actually happening in the field, and can take corrective
>> action.
>>
>> This is obviously usable also in our protocol world, but there’s a
>> problem. You can quite easily get a lot of feedback on your own thing
>> working well. You can also get feedback about who you are having problems
>> with. But it isn’t easy to send that feedback to where it might actually
>> belong in many cases: the other implementation’s maintainers. Disconnecting
>> or 4xxing is the crudest form of signal. Yes, sometimes effective. But it
>> also an action between two parties (me as an implementor of my thing and
>> you as an implementor of the peer) that hurts a third party: the user..
>>
>> I wish there was some other option between the silent obedience and the
>> refusal to talk. But I don’t know what it could be.
>>
>> Jari
>>
>> _______________________________________________
>> Architecture-discuss mailing list
>> Architecture-discuss@ietf.org
>> https://www.ietf.org/mailman/listinfo/architecture-discuss
>>
>
> _______________________________________________
> Architecture-discuss mailing listArchitecture-discuss@ietf.orghttps://www.ietf.org/mailman/listinfo/architecture-discuss
>
>
> --
> ________________________________________________________________
> Bob Briscoe                               http://bobbriscoe.net/
>
>