Re: [art] Artart last call review of draft-ietf-core-problem-details-05

"Martin J. Dürst" <duerst@it.aoyama.ac.jp> Sat, 25 June 2022 05:24 UTC

Return-Path: <duerst@it.aoyama.ac.jp>
X-Original-To: art@ietfa.amsl.com
Delivered-To: art@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 54FD8C157B33; Fri, 24 Jun 2022 22:24:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.787
X-Spam-Level:
X-Spam-Status: No, score=-3.787 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, NICE_REPLY_A=-1.876, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=itaoyama.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 2qgjg80rrLKN; Fri, 24 Jun 2022 22:24:02 -0700 (PDT)
Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01on2139.outbound.protection.outlook.com [40.107.114.139]) (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 894A0C14CF12; Fri, 24 Jun 2022 22:24:01 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PPChAPJuKi8ahZAFoaBFLO8FyjK1IaqSPNNDehxobUQ3yf+sNFWZR6hujA8VvQeDGxAUzorCJeKicHc0547XntXy0/haipE6GN/4NKRoR/J9ujyhNSrh7gieJxe2kplSU3JREqu3nb0cJ2eL0FOPdC/ihaPyEzyimaQCto0yGibPWc1Ib4dgEqSuJ1GydX2cIT+6YfWlHkkx8p68bQrl2A59qtk+zoRPBwjZ0TiItr7UfywiFRkmWqUvple6ok8zjolH3qGAq/h+0dPZNUkrvhqH7qpSoPlXf4Eb6tygnjWLw+T3eH4p4c5WSz42FyHofOWByyKkAVnz0FmHXfZjHw==
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=/i6yazZ6vwQ6WcWGcW5PYKFZLBtxQIK8vW639LHh/xw=; b=kO/662k6o6GVc9iZtzabC/7nZQud081STgbkEZOrhqCBOtzTvRHoRHPl3+TVo7mfbeYb+CMKp1hZG4B/DVTiDFlmKyJ0eHUoKRgJSB67aJaP4IN1DNt4t3IJeKO0aD/zz9B+Z1L0suY9f9P54UWhteEzaSwmthXFrSpQCblHm8NJf9zZJ3rMqnbJE6MLmNIs0/oaK5tyOMUNA6pYAXhGhbDbRkrxJetwm8jKa82zPmD3LcymAusadIKBLqF+7WFXgaZdYYPRJa2iWqdieBzN5rnGRU8UDnY+WasPO22DwCAIj1e1Q+tocTwqvhuezJIeacgrsimonz1ypD/KniHc0w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=it.aoyama.ac.jp; dmarc=pass action=none header.from=it.aoyama.ac.jp; dkim=pass header.d=it.aoyama.ac.jp; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=itaoyama.onmicrosoft.com; s=selector2-itaoyama-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/i6yazZ6vwQ6WcWGcW5PYKFZLBtxQIK8vW639LHh/xw=; b=Hn024RPYlkd7uifohZZHGaHcOw1b9I04VO7E9OKWT2ctSOlq8Yx9T26J09zDo1xQPTsbOPk233QIZ+ADT41way1tVxn0ISWqiw6rUGsVuUlSc9WfG0W73y/rVAf2Q0yfX2L50FPy58OErZA7a2wwSMKByjbspwpmUzOVt88c0hw=
Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=it.aoyama.ac.jp;
Received: from TYAPR01MB5689.jpnprd01.prod.outlook.com (2603:1096:404:8053::7) by OS3PR01MB8317.jpnprd01.prod.outlook.com (2603:1096:604:1a0::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.16; Sat, 25 Jun 2022 05:23:55 +0000
Received: from TYAPR01MB5689.jpnprd01.prod.outlook.com ([fe80::e587:9d9a:d780:ef39]) by TYAPR01MB5689.jpnprd01.prod.outlook.com ([fe80::e587:9d9a:d780:ef39%6]) with mapi id 15.20.5353.022; Sat, 25 Jun 2022 05:23:55 +0000
Message-ID: <90b785ef-934b-da9d-7d89-7018bdebbb75@it.aoyama.ac.jp>
Date: Sat, 25 Jun 2022 14:23:51 +0900
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0
Content-Language: en-US
To: Carsten Bormann <cabo@tzi.org>
Cc: Harald Alvestrand <harald@alvestrand.no>, art@ietf.org, core@ietf.org, draft-ietf-core-problem-details.all@ietf.org, last-call@ietf.org
References: <165511479760.19573.12671700576299137749@ietfa.amsl.com> <63D13796-758D-469B-AFA8-3050C9F87819@tzi.org> <dde9d36c-61e5-afcc-e15a-787c99d5fba9@it.aoyama.ac.jp> <0012F049-354A-4450-B923-857D24AB9459@tzi.org>
From: "Martin J. Dürst" <duerst@it.aoyama.ac.jp>
Organization: Aoyama Gakuin University
In-Reply-To: <0012F049-354A-4450-B923-857D24AB9459@tzi.org>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: TYCPR01CA0064.jpnprd01.prod.outlook.com (2603:1096:405:2::28) To TYAPR01MB5689.jpnprd01.prod.outlook.com (2603:1096:404:8053::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: ba5575ed-2432-48e9-96b0-08da566ae5ec
X-MS-TrafficTypeDiagnostic: OS3PR01MB8317:EE_
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: 8t9F29JsJS4N5dHUDTIXiBOZr1zKBcZ6czOlrWGNVHgbqFlz6gM/+oMfUqxiD5v6qomO+tfJK4anXGJyn0n+D40JDBbuYfEZ18xvZ+euWGrTkZ53lTVE8pQs5kTtIDDwaK1Yad5QZf89UH2gEBmXKVuw1lVa7CKAeDq4Qnwvt3/dJqOFEAD7q8vB4TRymEu8nA9D0HV+/GNAZzqo1flumTrF03T2IFD7FMxTr+FgNhiWV9K6nGuBN1w6qhi7giTn8Ad9/laiVyqh4CH+g6GTQO+HhxH2JUU2SSBo1jZMwbmwQexeXIFMMt1pIVCB0IJguHV6Mj1SIzy9ZzSTrdQkpFGNLX5iYSFmTkQ6YajTHWto7Po6tHUGj/tVYjuV9y41O6c5xBINelPJxEjRjL5/HRAwY2BgQk/OBZq/RcI5zE0phUI+gFPSjIz0pJPaNVEfTAwhD658f6/06S5oSAPLchnuo1dq9dP5qRzGEwAtomG/Z1Dfy93ClBi88V4zYYIhyVAsiUhGQ1a5mT0tVDcaBsmshXQyS9EjrPC8u36aW7J4HvtpAbYehpwSvcEgQ4MV74urd9ZegKtktS96ohAgRdpiNdVFv1/EhDovKdpwLzDhKq+96m89lr54bFeigRVM4MHSOOhKgC4MCGM89Mz7avKDkzxKH6KCE4gOTknJkYCYHgHSRCI+o27zE9DgTg7pFdgVcqWIc6ucr4VNQ1cae5IPEQLB9iWg7cC6dqCfKzDnswJXnjed3a6NduI/3bdMc+NIsV9gQeel/HXfOA5w1O1ptkEYQFSQqBGLSZpQidEloBwWoUDBslqePLL+HxQt3sucesbVu86giIHAdl57DbTSEULmbHvZAKXcBMwEJ6ArxtlcTbAIX4p8qUgfiOnf
X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYAPR01MB5689.jpnprd01.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(136003)(39850400004)(366004)(396003)(376002)(346002)(52116002)(5660300002)(8936002)(2906002)(83380400001)(53546011)(36916002)(41300700001)(186003)(786003)(478600001)(6512007)(66946007)(966005)(6916009)(6506007)(66556008)(66476007)(8676002)(2616005)(6486002)(4326008)(38350700002)(316002)(6666004)(26005)(41320700001)(31696002)(30864003)(86362001)(31686004)(38100700002)(43740500002)(45980500001); DIR:OUT; SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: RnJ7E0qvkSQFBYk88QVVkFdbbnb3ldRWCs+0jbzORJMarCbv3P96qAYaUpqP16wJDJNsJIela8fgqluPg876seDYk96AXEUBY2lPmSLtORSmlX6/Rh21W8+2S1nrX2kmWuwZ6nZ45mdQPfw98gdeIkANfOsAybcLbQ82FOoeNmhWx0e928LMKp2dkxjYBMsDz0IYmaKSyV79G43nM7K4LRk1L+eQoIckdWoJSsEA4ec02Z/nZrkCqN6Rl2x2HMm3Nk3rg1GsCWKNu8fAdYanTA8DRoz02WLcyyx72kJsPZwc6BkMjqT2zfyJ86Y9lzQNDT5uVKDthVsPc7Xdw+3wtq74DmrRVArT5BXCcbzRt7o2nTH4h/EB4oTI3kAYbigWz8OmCTKWekGKBEgF3t1598XPcIK+h9AP9Rc209QGp57HBf4YqMjoXym0dodU0QT+ecQntth7dt0Wqy9Fkb1sSfbyI5ek5fxNCA+nW0NoDNgob3DFSwgLCuNmuVIBeHnV9+euC7bRwT3YhMCX1vLXeAI3eCeGaCdsppG9qYZcgfxwGTjShv6lBNPK/ZlZIofIAt5SFBs0nMSJhqKYr9J1BD8r6dxVwSecIHeL3xQvd93IWBjjB58EoZ0GYO4B93o9R6CzTiDoMMiqIEyUm5ifprPDtN0UdgIVSMYL3g9I3Gr9sevGJLfcrw/JP+Vchh55MsG2XCCWq92uZOgryhY2c6Q12RSX2smrvM7eGpsiP4+dcu8q6P2MfCNNAIiBwB8BRq/uh4rcbv14o7Y78QnT3ZxYlZw1sQa6mcr40k9b6LT6sf2eJK/ZTb0gu6oZufW2M+stTj5LQxaeiXnIwMQARjV0XCh0416Y1hxNxmHss7ojVwnMNJOSIM00Uh3hIbkcE8Lfr+/DzobzGqghvRSDaFG734hhHAR1/ppB/LrJV+XvTGenpwPAYbuYEIX5fgOOgtnBs3Z9XLEhJ6jJK8vFvQHpo9IFWP7RYWJWZDVXybEA9iMu8Z6c5b68jqn1thaUFSxq8FTBVgWUageqeCEnYelNxRmHE110LOdiI1pltZoRErEWA7/Xc7Jv+JMhZxKO9PyK/GNwFS9z2yIXnGStHCfFiw3Icj6jN/9q4/qjbMOjf/gc2Gn6Ihdvp1ci8zqjRVJy74bxEspICRrLYGeG1c7TCRn2qYtqimmt8xmM+UKoO/HNmupOauNmbxQFNpzxgunn7utfjFFax0bunhx979CMqdviOMJaAG8OQoQuuc0qp/bbTJoKzzUbjcZ77V8s4+3LQu/Xvc1T9LzrOpWh3fCrxO8kNWoxqI2npsEqMyLv5aLejXbj3EBgUe80D0Pm3/k41C+B9FEU4+Z8Wk54AJeat3Y5iEj8XZSwrdYMm8rt/cM26IgP74619tSWMlMT6eNtxkecXOcXEh6tTLgYuEKaqNqXgQMr++jGHNyy2SxxLOXQ8iul0ThAgXiTbEvB1RdggcLXARL2+Fjt+0LoV415V003r78EpK1KwdpAEwYAM9o49dQPMHU8PRmWnCpxwk3XudDZj5ZtLeQ24ZSJqnj9SjqiOhvUQVIulC9VrdfPesrgVDwqG6upig5Omha0
X-OriginatorOrg: it.aoyama.ac.jp
X-MS-Exchange-CrossTenant-Network-Message-Id: ba5575ed-2432-48e9-96b0-08da566ae5ec
X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB5689.jpnprd01.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jun 2022 05:23:55.1307 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: e02030e7-4d45-463e-a968-0290e738c18e
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: oKwDFVHZXExwlmwW+35j30v64rAzA7DjcF/mpbSbkAT51S0pMMi/ZCd95NjiMCSQyR7I44KRLdpDh1vKIVntSw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB8317
Archived-At: <https://mailarchive.ietf.org/arch/msg/art/JqgTI_kQdDvE38JJz2VJqIpDwzI>
Subject: Re: [art] Artart last call review of draft-ietf-core-problem-details-05
X-BeenThere: art@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Applications and Real-Time Area Discussion <art.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/art>, <mailto:art-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/art/>
List-Post: <mailto:art@ietf.org>
List-Help: <mailto:art-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/art>, <mailto:art-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 25 Jun 2022 05:24:07 -0000

Hello Carsten,

On 2022-06-24 05:35, Carsten Bormann wrote:
> Hi Martin,
> 
> thank you for these comments.

Thanks for your very quick reply and action.

> Late changes are always risky,

Well, the review was requested on May 27, and it's now exactly 4 weeks 
since then. If I didn't feel I had to explain some of the main points in 
Harald's review in great detail, it might have been just 2.5 weeks. If 
that's late, let's try to make sure I18N reviews happen earlier.
(see https://datatracker.ietf.org/group/i18ndir/reviews/)

> but we think these comments do lead to a very desirable improvement of the document.

Great!

> We have prepared a pull request at:
> 
> https://github.com/core-wg/core-problem-details/pull/40 <https://github.com/core-wg/core-problem-details/pull/40>

I have looked at the pull request. It mostly looks good. See below for 
more details.

[snip]

>> Separate Draft or Not
>> =====================
>>
>> I agree with Harald that it should be a separate draft; it would definitely help with visibility of I18N in general and the issue of strings with language and directionality information inside and outside the IETF (not only the visibility within the CBOR community, which may be covered by the tag registry). Being able to say "look at RFC XXXX for a good example" is way better than being able to say "look at appendix X of RFC YYYY for a good example".
> 
> Actually, “look at RFC XXXX for a good example” is going to be the outcome of the combined document, because the document not only defines tag 38 (in Appendix A), but also shows a couple examples that use it (in the main body) and even an instance where we decided to unravel it (SPDe -6/-7). So I’m in favor of keeping this document together.


>> (NOT!) Copying BCP 47 Grammar
>> =============================

>> Similarly, XML Schema Datatypes only gives a very simple regular expression ([a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*) and notes
>> (see https://www.w3.org/TR/xmlschema11-2/#language <https://www.w3.org/TR/xmlschema11-2/#language>):
>>
>> [[[[
>> Note: The regular expression above provides the only normative constraint on the lexical and value spaces of this type. The additional constraints imposed on language identifiers by [BCP 47] and its successor(s), and in particular their requirement that language codes be registered with IANA or ISO if not given in ISO 639, are not part of this datatype as defined here.
>> ]]]]
>> Again, XML Schema would have done something more precise if anybody had been convinced that such precision made sense.
> 
> We tend towards not reading ABNF in RFCs as “The code is more what you'd call 'guidelines' than actual rules” [1].

It's not about 'guidelines' vs. actual rules. It's about preserving the 
possibility of future changes and keeping specifications as independent 
as possible if that can be done at no or low cost (or as in this 
example, actually by reducing potential implementation costs as a side 
effect).


> But if that is indeed the correct view of BCP47, simplifying the grammar to [a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})* certainly is one way of adding flexibility.
> 
> ➔
> https://github.com/core-wg/core-problem-details/pull/40/commits/bbe72e2 <https://github.com/core-wg/core-problem-details/pull/40/commits/bbe72e2>

Great!


>> Another way to see this is that in general, when giving restricting syntactic rules, there's the question of "bang for the buck". The complexity of the language tag syntax rules, down to the legacy (grandfathered) stuff, mean that the cost ("buck") is quite high. This not only includes implementation and memory footprint, but also testing and everything else.
>> […]
> 
> Most of the cost for this grammar was paid when RFC 5646 was written.

No, sorry, writing a spec is never the main cost.

> Nobody is forced to validate against this grammar.

Yes, but at least some people tend to do so when they see grammar rules 
in front of them.

> But that is maybe water under the bridge with the above PR.

Yes indeed.


>> It's weird for the IETF to refer (only) to the Unicode standard here even though the IETF has deprecated this kind of language tagging in RFC 6082. (see https://www.rfc-editor.org/rfc/rfc6082.html <https://www.rfc-editor.org/rfc/rfc6082.html>) So please cite that RFC.
> 
> Good point.
> 
> Added to PR:
> https://github.com/core-wg/core-problem-details/pull/40/commits/a5d900d <https://github.com/core-wg/core-problem-details/pull/40/commits/a5d900d>

Great.


>> Directionality Information
>> ==========================

  is also a technical term in the Bidi Algorithm]
>>
>> I think this text is very important, so I'll got into some details. First (minor nit), it says "If the third element is absent ...". Because this is in a paragraph that starts with "The optional third element ...", I think it would better say "If this element is absent ...".
> 
> Replaced by (a form of) your text…

Great progress, but I think we need a bit more progress, or at least 
some more careful checking.


> ➔
> https://github.com/core-wg/core-problem-details/pull/40/commits/bd588b9 <https://github.com/core-wg/core-problem-details/pull/40/commits/bd588b9>
> 
>>
>> Next, let me make sure that I get this right: This is a Boolean value, but it can in effect have four different states, yes? That would be:
>> - True (rtl)
>> - False (ltr)
>> - null (no indication about direction, but overriding any context)
> 
>> - absent (no indication about direction, but context may apply)
>> If that's true, then it might be good to put that into a more structured from (something like the above list).
> 
> Thanks, see below. (A value that is absent is not a value; its representation by a null value may be needed to ~~override~~ reset any context available.)

In one of the patches, you collapsed my four-point list to three points. 
I'm still not sure I really get this thing with absent and null. Let's 
say we have the following two problem details (very sketchy, obviously 
not the right syntax):

First variant
-------------
- problem-details
   - title
     - lang: de
     - text: Das ist ein Titel
     [dir absent]
   - base-rtl: true

Second variant
--------------
- problem-details
   - title
     - lang: de
     - text: Das ist ein Titel
     - dir: null
   - base-rtl: true

Here are my questions: Is there a difference between the first and the 
second variant? Saying "its representation by a null value may be needed 
to reset any context available." seems to suggest that there is a 
difference; inheritance ("Das ist ein Titel" being RTL) when absent, and 
no inheritance ("Das ist ein Titel" being of undefined directionality) 
when null. If that's true, why did you reduce the four choices to three? 
If it's not true, why not?

>> [very major point] The main problem is with the last sentence. There's not much of a point in defining a field for directionality if it's not clear what that is supposed to be used for. I'm also not sure where the claim "the proper processing of Language and Direction Metadata is an active area of investigation" came from, and why it is here.
> 
> I believe this statement is rather important, as it does spell out the requirement to stay abreast with the developments in this space. The tag 38 information provides an input to the algorithm that we just need to assume will survive revisions to that algorithm; but the algorithm may be revised.

Do you mean the Unicode Bidirectional Algorithm? It indeed gets reissued 
with every new Unicode version, which means roughly once every year. 
That's just how the Unicode consortium works, something between "living 
standard" and RFCs that are stable as long as nobody has the time to 
write an update. But if you look at the substance (going back from
https://www.unicode.org/reports/tr9/tr9-45.html version by version by 
changing '45' to lower and lower values), you'll see that there is 
exactly one major change, at Unicode Version 6.3 in 2013 
(https://www.unicode.org/reports/tr9/tr9-29.html), where isolates (LRI 
and RLI) where introduced. And that change was years in the making, with 
several talks at Internationalization and Unicode Conferences about the 
problems posed by embeddings (LRE and RLE). There's no such change in 
site that I'm aware of currently.

So the sentence "Note that the proper processing of Language and 
Direction Metadata is an active area of investigation; the reader is 
advised to consult ongoing standardization activities such as 
[STRING-META] when processing the information represented in this tag."
will produce one of two effects, both highly undesired:
1) An implementer who seriously wants to do the right thing will get 
lost in the woods.
2) An implementer inclined to cut corners will just ignore the whole 
directionality stuff.

Of course, the right thing for an implementer who just wants to make 
sure the text pieces get displayed so that they are easy for a user to 
read is
3) to just rely on a bidi library (usually just by sending the right 
pieces of text and bidi control characters or markup or whatsoever to 
the display engine in the underlying OS or so).

We should make sure that the text of the RFC to be encourages 3), not 1) 
or 2).


>> It is true that some areas of bidi processing (e.g. the best consistent way to display IRIs that contain pieces of text from both directionalities) that are not solved yet, or even (as the example a line ago) are not even actively being investigated because the general agreement is that the problem is too difficult to have a solution.
>> It is also true that "Strings on the Web: Language and Direction Metadata" (https://www.w3.org/TR/string-meta/ <https://www.w3.org/TR/string-meta/>) is still in Draft status.

But that's not relevant. string-meta isn't a technical spec written for 
implementers, it's a meta-spec written for spec writers and similar 
folks. It's also describing a very wide range of approaches, while you 
have already decided on an approach, because you need an approach, but 
not several. You don't want and don't need your implementers to go back 
and see what other approaches you may have taken, because they have to 
implement the approach that you choose, and no other approach.

Please also note that a meta-spec such as string-meta is usually behind 
in the development cycle when compared with real specs. Ideally, it 
would be the other way round, but it often takes time and several 
examples to figure out what needs to go into a meta-spec. In addition, 
language in a meta-spec is more abstract and therefore more difficult to 
write. Also, in particular in I18N, the day-to-day business of reviewing 
actual specifications always takes precedence, and comes with deadlines 
and time pressure (see the example at hand), whereas there 
isn't really any deadline for meta-specs.

[Just to avoid any potential confusion: The meta in string-meta is there 
because string-meta is discussing information about strings; the meta in 
meta-spec is there because a meta-spec discusses stuff about other specs.]


> Hence the informative reference.
> 
>> But neither of these facts should have to influence the specification of Tag 38. [StringMeta] (3.4 What consumers need to do to support direction, https://www.w3.org/TR/string-meta/#what_consumers_do <https://www.w3.org/TR/string-meta/#what_consumers_do>), Harald and I all agree about what the right thing to do is: Use Bidi isolation (in the technical sense of https://www.unicode.org/reports/tr9/#Explicit_Directional_Isolates <https://www.unicode.org/reports/tr9/#Explicit_Directional_Isolates>).
>>
>> So given all the above considerations, what about rewriting the paragraph under consideration along the following lines:
>>
>> [[[[
>> The optional third element, if present, is a Boolean value that
>> indicates a direction, as follows:
>> - false: LTR direction. The text is expected to be displayed
>> with LTR base direction if standalone, and isolated with LTR
>> direction (enclosed in RLI ... PDI or equivalent, see [1]) in
>> the context of a longer string or text.
>> - true: RTL direction. The text is expected to be displayed
>> with LTR base direction if standalone, and isolated with RTL
>> direction (enclosed in LRI ... PDI or equivalent, see [1]) in
>> the context of a longer string or text.
>> - absent: no indication is made about the direction
>> - (explicit) null: no indication is made about the direction,
>> but any directionality context applying to this element (e.g.,
>> base directionality information for an entire CBOR message or
>> part thereof) is ignored.
>> ]]]]
>> [1] Unicode® Standard Annex #9, Unicode Bidirectional Algorithm, Section 2.7 Markup and Formatting Characters, https://www.unicode.org/reports/tr9/#Markup_And_Formatting <https://www.unicode.org/reports/tr9/#Markup_And_Formatting>
> 
> 
> Thank you; I massaged the text slightly in the above-mentioned PR, i.e.:
> 
> ➔
> https://github.com/core-wg/core-problem-details/pull/40/commits/bd588b9 <https://github.com/core-wg/core-problem-details/pull/40/commits/bd588b9>
> 
>> I'm not really sure yet about the 'absent' and 'null' entries, neither if they are really distinct nor whether the specification is good enough (we might want to specify FIRST STRONG ISOLATE semantics).
> 
> We could, but I’m not sure that part of “auto” semantics is as stable as the rest.

In TR #9, the auto semantics is as stable as the others. FSI (first 
strong isolate) was introduced in Unicode 6.3 together with the other 
isolates. And the "first strong" rule was already present from the start 
of the Bidi Algorithm and continues to be there until today for the 
overall paragraph direction (see 
https://www.unicode.org/reports/tr9/#P2). That also means that you get 
exactly these semantics if you just put every Tag 38 text on its own 
line (paragraph) e.g. in Win notepad. That also means that the average 
user of an RTL script is familiar with this behavior and what to do if 
it doesn't do the right thing.

> The first character with strong directionality is often rather random and therefore can lead to surprising results. I would expect implementations to develop stronger heuristics here.

Stronger heuristics might be marginally better, but they are not widely 
used, and I don't expect TR #9 to introduce new ones. One clear 
advantage of the "first strong" rule is that wrong results are easy to 
fix by adding an LRM or RLM character at the start. A fully correct 
decision about what base directionality to use to display a given text 
requires human understanding.

Regards,   Martin.


> Grüße, Carsten
> 
> [1]: a line from “Pirates of the Caribbean”, spoken by a role whose name always reminds me of Bar BOFs :-)