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: architecture-discuss@ietfa.amsl.com
Delivered-To: architecture-discuss@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CD8D61208CD for <architecture-discuss@ietfa.amsl.com>; Fri, 10 May 2019 17:25:53 -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=unavailable 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 R8h0cV_I1O9N for <architecture-discuss@ietfa.amsl.com>; Fri, 10 May 2019 17:25:50 -0700 (PDT)
Received: from outprodmail02.cc.columbia.edu (outprodmail02.cc.columbia.edu [128.59.72.51]) (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 B0C84120232 for <architecture-discuss@ietf.org>; Fri, 10 May 2019 16:42:01 -0700 (PDT)
Received: from hazelnut (hazelnut.cc.columbia.edu [128.59.213.250]) by outprodmail02.cc.columbia.edu (8.14.4/8.14.4) with ESMTP id x4ANe9ZB052956 for <architecture-discuss@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 8CFE97E for <architecture-discuss@ietf.org>; Fri, 10 May 2019 19:41:56 -0400 (EDT)
Received: from sendprodmail01.cc.columbia.edu (sendprodmail01.cc.columbia.edu [128.59.72.13]) by hazelnut (Postfix) with ESMTP id 49F077E for <architecture-discuss@ietf.org>; Fri, 10 May 2019 19:41:56 -0400 (EDT)
Received: from mail-ot1-f69.google.com (mail-ot1-f69.google.com [209.85.210.69]) by sendprodmail01.cc.columbia.edu (8.14.4/8.14.4) with ESMTP id x4ANftIB060857 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NOT) for <architecture-discuss@ietf.org>; Fri, 10 May 2019 19:41:56 -0400
Received: by mail-ot1-f69.google.com with SMTP id e17so1913221otq.0 for <architecture-discuss@ietf.org>; Fri, 10 May 2019 16:41:56 -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=P/QmCs9/QiVF3yie3NPvtyI9AYdVHDQnbUk4vNvbOO6gQcjlLZ9dlUybMrcws166rb 1LQddlgFTwugccobf6CAv4jHClSnRk1Z0EcPjF1ilQn61iAquj8vYJONXc2lR14uTcAH CqrvhAOzIT0M6KQ2QhCJN+DtUwF5/P37R+CK6Dn1/xUDeOsbOL8UyeTdXHUsGmBNWv6y nMMaMYX7gpfy3tXpvWqy+BAGUZ92z56yjSUoqB9QOh7l9e0CsDT4IUl7Ot2izwDHJkgy ZiuVo7U7bWKYwPBLQdmBrYg9j//q/QPPTYoxicbVqipEObQgNryo9KFoTbkfrEBwRKtp DvYg==
X-Gm-Message-State: APjAAAVQO+sIVN6HtDB1mei7izo+P2Qdngp8S7HiizT23/Gx5XRDAb8I JaL5XSV9a0bURESOcsY5ICj2QN6rlaxI0L4F8WQ2WClL7KpCh6avLY0KPPYi5Nf+HUOJrkf8DKK U4fS3dxbQ7LMtkXj9V08ByCOjeEZ8mX3KRtv2/cij+XpPF5nTIw==
X-Received: by 2002:a9d:6b8e:: with SMTP id b14mr8627937otq.125.1557531715370; 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>
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.13
Archived-At: <https://mailarchive.ietf.org/arch/msg/architecture-discuss/-T6dLvWKvbTgOSSgqVA85BKyqCE>
Subject: Re: [arch-d] deprecating Postel's principle- considered harmful
X-BeenThere: architecture-discuss@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: open discussion forum for long/wide-range architectural issues <architecture-discuss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/architecture-discuss>, <mailto:architecture-discuss-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/architecture-discuss/>
List-Post: <mailto:architecture-discuss@ietf.org>
List-Help: <mailto:architecture-discuss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/architecture-discuss>, <mailto:architecture-discuss-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/
>
>