Re: [I18ndir] [art] Modern Network Unicode

Carsten Bormann <> Thu, 11 July 2019 23:47 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 31C9E12007A; Thu, 11 Jul 2019 16:47:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.198
X-Spam-Status: No, score=-4.198 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 9Vq1bTbX34gr; Thu, 11 Jul 2019 16:47:44 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 4DAF612006A; Thu, 11 Jul 2019 16:47:44 -0700 (PDT)
Received: from [] ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id 45lCR14fHfzyY5; Fri, 12 Jul 2019 01:47:41 +0200 (CEST)
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
From: Carsten Bormann <>
In-Reply-To: <>
Date: Fri, 12 Jul 2019 01:46:41 +0200
Cc: John C Klensin <>,, "Asmus Freytag (c)" <>,
X-Mao-Original-Outgoing-Id: 584581599.285125-eb0ae30096202d4a412d581536d09c87
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <0A5251342D480BA6437F7549@PSB> <> <248A8DD5DA0D3D34D6B6EFC9@PSB> <> <> <> <7F1F41C25D0AC5960D95A67E@PSB> <> <DFB116527FF004C961182B15@PSB> <>
To: Ira McDonald <>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <>
Subject: Re: [I18ndir] [art] Modern Network Unicode
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Internationalization Directorate <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 11 Jul 2019 23:47:46 -0000

This is a great discussion.

To me, it seems to converge on the following.

(1) Sending sane data is the job of the data originator.  

(2) Do not include gratuitous normalization steps in your processing, once the data have been originated in a sane form.

(2a) If you broke it, you fix it (as far as possible): If your processing steps did involve gratuitous normalization, you have to renormalize to NFC before sending.

Here, “sane” is defined as:

(0) Data SHOULD be originated in NFC, unless that would be inappropriate for the specific script, in which case the community consensus rules for the script govern.

For Latin script, this happens to collapse to what 5198 says.

This set of rules places the onus on the place where the data is generated, which is usually the place that knows most about the specific script and about the intent of the originator.  If you know that place isn’t doing its job, add the rule:

(1a) If the data originator does not do (0), the software placing the data on the network may need to sanitize (normalize towards sane).

1a is similar to 2a in that it doesn’t create perfect results, so both SHOULD be avoided — there is no way to, after the fact, perfectly sanitize data that weren’t originated sane or that were gratuitously normalized on the way.

With these definitions, MNU can direct towards: 
(A) Senders: send sane data
(B) Recipients: break as little as reasonable when data received isn’t sane
(C) B is not a valid excuse not to do A, and specifically: recipients are not expected to clean up after senders (because there is no correct way to do that).

(Rule C is the often forgotten third rule of the Postel principle.
It also means that an entity that is a recipient of MNU and then sends the data on as MNU has no need to gratuitously normalize, but it does not entirely get rid of rule 1a for recipients of data from places known not to be sane.)

Grüße, Carsten