Re: [precis] I-D Action: draft-ietf-precis-7564bis-09.txt

William Fisher <> Thu, 20 July 2017 05:30 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id A0B5F12783A for <>; Wed, 19 Jul 2017 22:30:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YATYjXHWcCao for <>; Wed, 19 Jul 2017 22:30:58 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:4001:c0b::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 28BD5126B6E for <>; Wed, 19 Jul 2017 22:30:58 -0700 (PDT)
Received: by with SMTP id h199so10863548ith.1 for <>; Wed, 19 Jul 2017 22:30:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=r5j91jHlJjWVEMmtoX6IhLNq1zrl3OJQZxpzPdQQFQU=; b=XJnCLg8B6vYwCpSdS93YGFzuEzDQAeHppS3rPsvA+4RQhF8dJrzPc1xgXH0M4oPv4v 7x9km2pD8nkcQJFGXwVM6du5QuzD8d9bh+Pv2f7ONbQXEV/webm3k6UxH8b4FJA7LVm6 5JFsOePeCbpl1he+zR0Y44nkTNnn8J/rmxFZV6VT56qfRRYpw4JLQ29auhXTQ2uW+3fR 3ssGOH+R3qXxo+yvBfB9zo994BLv+86R6K49T7zb0BnboBfHSd5urW57LuKPtdDvuZ5F rkZSpB6FCvZdR0ByCfTj8K668LJEO7oCi8aelgqgMfwiGVrkPDFGruyYOw03iDHHlrcz LX3w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=r5j91jHlJjWVEMmtoX6IhLNq1zrl3OJQZxpzPdQQFQU=; b=MYXO9tYDFFZgm3g7B3sy30BnTx/wHQdQec+T/dX7yiXpaQiFsXIpTiA0+gJQq9s8wG YOZgWGmYzy1zcp8vSzQdWvBT/mnJSUVUvpxby2sC3c2hQ56LoeN+tFGMtib4dpKDh2P1 D9/3FX/2WajhQ5M2W7CKd+TU2hEg+JPSPeAccsRmrFpA8ObaprVntleOLmtsiiI9pp2u J4ddcYgZomkxdfskYfYHO6idHKEVtiXiHL4ntAZr+yMfc38+++yVVtPGqMrulm6apH2a RxG8LnVF82DieKhsJKt/vSIvwxcFFSOTWKJ9dUaxe87efCXO3k4se6i4H2+Mx5Uu1Zbo JlWQ==
X-Gm-Message-State: AIVw110kTM9IYe3TF5YvYo66W180hGZlpUASufSniSoQ21MzkksQVuw7 MhDMI/S2ote1Exl+NE40I4R2wWbyBMe+AGc=
X-Received: by with SMTP id f125mr2191038ita.37.1500528657470; Wed, 19 Jul 2017 22:30:57 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Wed, 19 Jul 2017 22:30:56 -0700 (PDT)
In-Reply-To: <>
References: <> <>
From: William Fisher <>
Date: Wed, 19 Jul 2017 22:30:56 -0700
Message-ID: <>
To: Peter Saint-Andre <>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <>
Subject: Re: [precis] I-D Action: draft-ietf-precis-7564bis-09.txt
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Preparation and Comparison of Internationalized Strings <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 20 Jul 2017 05:31:00 -0000

> What do implementers think is a "reasonable number of iterations"? My
> sense is that we're talking about at most 4 or 5, and usually 2 or 3.

I interpreted the word "iteration" to mean "reapplication" of the
rules; not counting the first application. The Nickname test cases
become stable after 2 iterations of the rules.

  output1 = precis_encode(input)
  output2 = precis_encode(output1)      # iteration 1
  output3 = precis_encode(output2)      # iteration 2 confirms that
output3 == output2

I can't come up with a Nickname test case that requires more than 2
iterations to become stable, but that doesn't mean they don't exist.
It's possible that a new PRECIS profile could be defined that has
stability issues. IMO, if a PRECIS profile isn't stable after 3
iterations, it's broken.

The last sentence might read like this:

  Therefore, an implementation SHOULD reapply the rules
   repeatedly until the output string is stable; if the output string
   does not stabilize after three iterations, the
   implementation SHOULD reject
   the input string as invalid.

In the worst case, this means that you are calling precis_encode()
four times for an input string.


On Wed, Jul 19, 2017 at 6:40 PM, Peter Saint-Andre <> wrote:
> On 7/16/17 5:20 PM, wrote:
>> A New Internet-Draft is available from the on-line Internet-Drafts directories.
>> This draft is a work item of the Preparation and Comparison of Internationalized Strings of the IETF.
>>         Title           : PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols
>>         Authors         : Peter Saint-Andre
>>                           Marc Blanchet
>>       Filename        : draft-ietf-precis-7564bis-09.txt
> Our area director pointed out to me offlist that the definition of
> "reasonable" is vague in the following text:
>    Because of the order of operations specified here, applying the rules
>    for any given PRECIS profile is not necessarily an idempotent
>    procedure (e.g., under certain circumstances, such as when Unicode
>    normalization form KC is used, performing Unicode normalization after
>    case mapping can still yield uppercase characters for certain code
>    points).  Therefore, an implementation SHOULD apply the rules
>    repeatedly until the output string is stable; if the output string
>    does not stabilize within a reasonable number of iterations, the
>    implementation SHOULD terminate application of the rules and reject
>    the input string as invalid.