<div dir="ltr">Caroline,<div><br></div><div>Thank you very much for your thoughtful suggestions  </div><div>Here is my first cut.</div><div><br></div><div>Regards,</div><div>Makoto</div><div><br></div><div>---------------------------------------------------------------------</div><div>(The first paragraph, which defines equivalence, is not changed.)</div><div><br></div><div><div>The names of two different parts within a package shall not</div><div>be equivalent.</div><div><br></div><div>[Example: If a package contains a part named "/a", the</div><div>name of another part in that package must not be "/a" or</div><div>"/A". end example]</div><div><br></div><div>For each part name N and string S, let the result of</div><div>concatenating N, the forward slash and S be denoted by</div><div>N[s]. A part name N1 is said to be derivable from another</div><div>part name N2 if, for some string S, N1 is equivalent to</div><div>N2[S].</div><div><br></div><div>[Example: "/a/b" is derivable from "/a", where N is</div><div>"/a" and S is "b". end example]</div><div><br></div><div>The name of a part shall not be derivable from the name of</div><div>another part.</div><div><br></div><div>[Example: Suppose that a package contains a part named</div><div>"/segment1/segment2/…/segmentn".  For it not to be</div><div>derivable, other parts in that package must not have names</div><div>such as "/segment1", "/SEGMENT1",</div><div>"/segment1/segment2", "/segment1/SEGMENT2", or</div><div>"/segment1/segment2/…/segmentn-1".  end example]</div><div><br></div><div>This subclause further introduces recommendations so that</div><div>NFC normalization to part names does not cause part name</div><div>crashes. [Note: Some implementations of the directory</div><div>structure always apply NFC normalization. end note]</div><div><br></div><div>The result of applying Unicode Normalization Form C (NFC)</div><div>to the names of two different parts within a package should</div><div>not be equivalent.</div><div><br></div><div>[Example: If a package contains a part named "/é", where</div><div>é is 'LATIN SMALL LETTER E' (U+0065) followed by 'COMBINING</div><div>ACUTE ACCENT' (U+0301), the name of another part in that</div><div>package should not be "/e", where é is 'LATIN SMALL</div><div>LETTER E WITH ACUTE' (U+00E9), or "/É", where É/ is</div><div>'LATIN CAPITAL LETTER E WITH ACUTE '(U+00C9). end example]</div><div><br></div><div>[Example: If a package contains a part named "/Å", where</div><div>Å is 'ANGSTROM SIGN' (U+212B), the name of another part in</div><div>that package should not "/Å" where Å is 'LATIN CAPITAL</div><div>LETTER A WITH RING ABOVE' (U+00C5) because U+212B and</div><div>U+00C5 are normalized to the same character sequence. end</div><div>example]</div><div><br></div><div>A part name N1 is said to be weakly derivable from another</div><div>part name N2 if, for some string S, the result of applying</div><div>NFC to N1 is equivalent to the result of applying NFC to</div><div>N2[S].</div><div><br></div><div>[Example: Consider a part name "/é", where é is 'LATIN</div><div>SMALL LETTER E WITH ACUTE' (U+00E9).  Another part name</div><div>"/é/a", where é is 'LATIN SMALL LETTER E' (U+0065)</div><div>followed by 'COMBINING ACUTE ACCENT' (U+0301) is weakly</div><div>derivable from "/é".  Yet another part name "/É/a",</div><div>where É is 'LATIN CAPITAL LETTER E' (U+0045) followed by</div><div>'COMBINING ACUTE ACCENT' (U+0301) is also weakly derivable.</div><div>end example]</div><div><br></div><div>The name of a part should not be weakly derivable from the</div><div>name of another part.</div><div><br></div><div>[Example: Suppose that a package contains a part named</div><div>"/é/Å/foo", where é is 'LATIN SMALL LETTER E WITH ACUTE'</div><div>(U+00E9) and Å is 'ANGSTROM SIGN' (U+212B).  For it not to</div><div>be weakly derivable, other parts in that package should not</div><div>have names such as "/É" and "/É/Å", where É is 'LATIN</div><div>CAPITAL LETTER E' (U+0045) followed by 'COMBINING ACUTE</div><div>ACCENT' (U+0301) and Å is 'LATIN CAPITAL LETTER A WITH RING</div><div>ABOVE' (U+00C5).  end example]</div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-01-22 8:10 GMT+09:00 caroline arms <span dir="ltr"><<a href="mailto:caroline.arms@gmail.com" target="_blank">caroline.arms@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div>Thanks for your response.  <br></div><div><br></div><div>I have one substantive question, relating to "in its name"  (in red below).  As I read 9.1.1.4 in the 2012 published version, I would understand the constraint to mean that another part's name should not BEGIN with "/a" or "/A".   And I believe that's what the explanation of derivable says.  So I might change:<br></div><div><br></div><div>If a
package contains a part named “/<span>a”,
another part in that package must not have “/a” or “/A” <span style="background-color:rgb(255,0,0)">in its name</span>.</span></div><div><span>   to</span><br><span>If a
package contains a part named “/<span>a”,
another part in that package must not have a name that begins with “/a” or “/A”<span style="background-color:rgb(255,0,0)"></span>.</span></span></div><div><br></div><div>But perhaps I'm missing something<br></div><div><br></div><div>However my main concern about <span class="m_-962109479932231264gmail-im">§8.2.2.3 is that it is very confusing as to its order of normative text and examples.  It is not obvious what the examples are examples of. Also each of the [Example] blocks holds more than one example, which makes them very hard to read.  <br><br></span></div><span class="m_-962109479932231264gmail-im">I have several possible suggestions that might make the clause more readable.  I've listed them as options.  One or more could be followed.<br><br></span></div><span class="m_-962109479932231264gmail-im">Option 1.  Put everything related to "derivable" before everything related to "weakly derivable."<br><br></span></div><span class="m_-962109479932231264gmail-im">Hence:<br></span><br><span class="m_-962109479932231264gmail-im">
















<font size="2"><span style="line-height:115%;font-family:"Calibri",sans-serif">For each part name N and string S, let
the result of concatenating N, the forward slash and S be denoted by N[s].</span><span style="line-height:115%;font-family:"Calibri",sans-serif"> </span><span style="line-height:115%;font-family:"Calibri",sans-serif">A part
name N1 is said to be </span><span class="m_-962109479932231264gmail-Term" style="font-style:italic"><span style="line-height:115%;font-family:"Calibri",sans-serif">derivable</span></span><span style="line-height:115%;font-family:"Calibri",sans-serif"> from another part name N2 if, for some string S,
N1 is equivalent to N2[S].</span><br><br></font></span><font size="2">


















</font><p class="MsoNormal" style="margin:0in 0in 10pt;line-height:115%;font-family:"Calibri",sans-serif"><font size="2"><span>The name of a part
shall not be derivable from the name of
another part.</span></font></p><p class="MsoNormal" style="margin:0in 0in 10pt;line-height:115%;font-family:"Calibri",sans-serif"><font size="2">[<span class="m_-962109479932231264gmail-Non-normativeBracket" style="font-style:italic">Example</span>: If a
package contains a part named “/<span>a”,
another part in that package must not have “/a” or “/A” <span style="background-color:rgb(255,0,0)">in its name</span>. </span>If
<span>a package</span> contains a part named “/segment1/segment2/…/segment<em>n</em><wbr>”,
other parts in that package must not have names such as “/segment1”, <span>“/SEGMENT1”,</span> “<span>/</span>segment1/segment2”, <span>“/segment1/SEGMENT2”,</span>
or “/segment1/segment2/…/segment<em>n</em><wbr>-1”. <span>If a package contains a part named “/</span><span style="font-family:"Cambria Math",serif">Å” </span><span>where </span><span style="font-family:"Cambria Math",serif">Å </span><span>is
'ANGSTROM SIGN' (U+212B), another part in that package should not have <span style="background-color:rgb(255,0,0)"><span style="color:rgb(0,0,0)">in its
name</span></span> “/Å” where Å is 'LATIN CAPITAL LETTER A WITH RING ABOVE'
(U+00C5) because U+212B and U+00C5 are normalized to the same character
sequence. </span><span class="m_-962109479932231264gmail-Non-normativeBracket" style="font-style:italic">end example</span><span>]</span></font></p><font size="2">





</font><p class="MsoNormal" style="margin:0in 0in 10pt;line-height:115%;font-family:"Calibri",sans-serif"><font size="2"><span>A part </span>name <span>N1 is said to be </span><span class="m_-962109479932231264gmail-Term" style="font-style:italic">weakly
derivable</span> from another part name <span>N2 if, for some string S, the result of applying NFC to N1 is
equivalent to the result of applying NFC to N2[S]. </span></font></p><font size="2">




























<span style="line-height:115%;font-family:"Calibri",sans-serif">The name of a part should not be weakly derivable from the name of another part.<br><br></span>





















</font><p class="MsoNormal" style="margin:0in 0in 10pt;line-height:115%;font-family:"Calibri",sans-serif"><font size="2"><span>[</span><span class="m_-962109479932231264gmail-Non-normativeBracket" style="font-style:italic">Example</span><span>: Given N[s] equal to “/a/b” where N is “/a” and S
is “b”, then “/a/b” is derivable from “/a”. A part named </span>“<span>/é/a”, where é is</span> <span>'LATIN SMALL LETTER E' (U+0065) followed by
'COMBINING ACUTE ACCENT' (U+0301) is weakly derivable from </span>“<span>/é”, where é is 'LATIN SMALL LETTER E
WITH ACUTE' (U+00E9). </span><span> </span>A part
named “/É/a”, where é is 'LATIN CAPITAL LETTER E' (U+0045) followed
by 'COMBINING ACUTE ACCENT' (U+0301) is also weakly derivable. <a><span><span class="m_-962109479932231264gmail-Non-normativeBracket" style="font-style:italic">end example</span></span></a><span><span class="m_-962109479932231264gmail-MsoCommentReference"><span style="line-height:115%"><a class="m_-962109479932231264gmail-msocomanchor" id="m_-962109479932231264gmail-_anchor_1" href="#m_-962109479932231264__msocom_1" name="m_-962109479932231264__msoanchor_1"></a></span></span></span><span></span><span>]</span></font></p><p class="MsoNormal" style="margin:0in 0in 10pt;line-height:115%;font-size:11pt;font-family:"Calibri",sans-serif"><span><font size="2">Option 2.</font>  Break the text in the [Example] blocks into the independent examples.<br></span></p> <font size="2">[<span class="m_-962109479932231264gmail-Non-normativeBracket" style="font-style:italic">Example</span>: <br>If a
package contains a part named “/<span>a”,
another part in that package must not have “/a” or “/A” <span style="background-color:rgb(255,0,0)">in its name</span>. </span><br><br>If
<span>a package</span> contains a part named “/segment1/segment2/…/segment<em>n</em><wbr>”,
other parts in that package must not have names such as “/segment1”, <span>“/SEGMENT1”,</span> “<span>/</span>segment1/segment2”, <span>“/segment1/SEGMENT2”,</span>
or “/segment1/segment2/…/segment<em>n</em><wbr>-1”. <span><br><br>If a package contains a part named “/</span><span style="font-family:"Cambria Math",serif">Å” </span><span>where </span><span style="font-family:"Cambria Math",serif">Å </span><span>is
'ANGSTROM SIGN' (U+212B), another part in that package should not have in its
name “/Å” where Å is 'LATIN CAPITAL LETTER A WITH RING ABOVE'
(U+00C5) because U+212B and U+00C5 are normalized to the same character
sequence. </span><span class="m_-962109479932231264gmail-Non-normativeBracket" style="font-style:italic">end example</span><span>]<br><br></span></font></div><font size="2"><span>Option 3.  Explain what the examples are about at the beginning of the block -- which might require dividing the first example block into two, since the third example is related to NFC and is a "should not"  whereas the first two are about derivability and case-insensitive matching.<br><br></span></font></div><font size="2"><span>       To be continued, no doubt ...<span class="HOEnZb"><font color="#888888"><br><br></font></span></span></font></div><span class="HOEnZb"><font color="#888888"><font size="2"><span>       Caroline<br></span></font><div><div><div><span class="m_-962109479932231264gmail-im"></span></div></div></div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 20, 2018 at 4:34 PM, MURATA Makoto <span dir="ltr"><<a href="mailto:eb2m-mrt@asahi-net.or.jp" target="_blank">eb2m-mrt@asahi-net.or.jp</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Caroline,<div><br></div><div>Thank you for your careful reviewing!<br><div class="gmail_extra"><br><div class="gmail_quote"><span>2018-01-21 5:53 GMT+09:00 caroline arms <span dir="ltr"><<a href="mailto:caroline.arms@gmail.com" target="_blank">caroline.arms@gmail.com</a>></span>:<br></span><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div>Murata-san, Rex, et al.<br><br></div>I have started to go through the draft.  Rather than wait to the teleconference, I thought I would send emails on issues that are not simply fixing typos or grammar as I come across them.  <br><br>Clause §8.3.5 includes<br>"The path components are equivalent part names, as specified in §8.2.2 [M7.3]"<br><br>Should this point instead to §8.2.2.3 Part Name Equivalence and Integrity in a Package?<br></div></div></div></blockquote><div><br></div></span><div>"equivalent" is defined in 8.2.2.3, but "part names" is defined </div><div>in  8.2.2.1 and 8.2.2.2.</div><span><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><br>I find §8.2.2.3 rather confusing and as I read it carefully, I realized that "equivalence" as meant in §8.3.5 might need to incorporate more than ASCII case-insensitive matching -- as equivalence is defined in the first paragraph of §8.2.2.3.  In particular, I wondered whether equivalence after application of NFC was also relevant.  <br></div></div></div></blockquote><div><br></div></span><div>No, they are not.  Microsoft never does NFC to part names.</div><span><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><br>Perhaps someone more expert than me can weigh in here.<br><br>I realize that §8.2.2.3 mixes "shall" and "should" -- presumably deliberately.  That probably adds complexity here.<br></div></div></div></blockquote><div><br></div></span><div>Yes, it is confusing.  But I believe that Microsoft and Apple do different </div><div>things here.  Microsoft never normalizes file names.  Apple always </div><div>does.  Part name crashes by Apple (and possibly others) should </div><div>be avoided.  That's why we have a number of "should" in 8.2.2.3.</div><div><br></div><div>Regards,</div><div>Makoto</div><span><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><br>I have some other concerns about §8.2.2.3, but I would need clarification on what "equivalence" needs to be for §8.3.5 before I could make useful suggestions.<br><br></div>    Caroline<br><br></div>PS:  Given the government shutdown, please be sure to send important emails to my gmail account (or to the WG4 list).  I'm afraid the shutdown may play havoc with my schedule, just as the threat of a shutdown has been leading to inefficiency over the last few weeks.<br><div><div><br><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 9, 2018 at 3:46 PM, Rex Jaeschke <span dir="ltr"><<a href="mailto:rex@rexjaeschke.com" target="_blank">rex@rexjaeschke.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US"><div class="m_-962109479932231264m_-5974214387516116543gmail-m_-2586343505769044150gmail-m_1789019331301166543WordSection1"><p class="MsoNormal">Attached is WD3.3 of the OPC Spec.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Once I got it back from Murata-san, here’s what I did:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ol style="margin-top:0in" start="1" type="1"><li class="m_-962109479932231264m_-5974214387516116543gmail-m_-2586343505769044150gmail-m_1789019331301166543MsoListParagraph" style="margin-left:0in">I adopted all edits from WD3.2 and prior that had been resolved, so they no longer show as tracked changes.<u></u><u></u></li><li class="m_-962109479932231264m_-5974214387516116543gmail-m_-2586343505769044150gmail-m_1789019331301166543MsoListParagraph" style="margin-left:0in">I kept all the comments that do not appear to have been resolved.<u></u><u></u></li><li class="m_-962109479932231264m_-5974214387516116543gmail-m_-2586343505769044150gmail-m_1789019331301166543MsoListParagraph" style="margin-left:0in">All Murata-san’s edits proposed since WD3.2 are shown as tracked changes.<u></u><u></u></li></ol><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I propose that at the March F2F meeting, we walk through this document and accept/reject the proposed edits, and resolve the issues raised in comments.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Our most-recent discussion of a time line for this spec was to have a complete version at the end of the March 2018 meeting, and after minor changes from the F2F meeitng, to send it out for a 2-month CD ballot, closing before the June F2F. I now think this is quite unrealistic. There is a lot of work to do yet, and the decisions we make in March will need to be applied to the spec and then reviewed in the following teleconferences. We migth have a shot at getting a near-final draft for review of the June meeting.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Murata-san has long pushed to get rid of informative Annex <a name="m_-962109479932231264_m_-5974214387516116543_m_-2586343505769044150_m_1789019331301166543__Ref194213939">G </a><span>[formerly H]<a name="m_-962109479932231264_m_-5974214387516116543_m_-2586343505769044150_m_1789019331301166543__Toc379265880"></a><a name="m_-962109479932231264_m_-5974214387516116543_m_-2586343505769044150_m_1789019331301166543__Toc385397170"></a><a name="m_-962109479932231264_m_-5974214387516116543_m_-2586343505769044150_m_1789019331301166543__Toc391632752"></a><a name="m_-962109479932231264_m_-5974214387516116543_m_-2586343505769044150_m_1789019331301166543__Toc503272968"><span><span><span>, “Guidelines for Meeting Conformance</span></span></span></a></span>”, while I pushed for keeping it. And while we agreed to keep it, it still needed serious work to make it complete. Unfortunately, in its current state, many of its links and bookmarks are now badly broken, and will be non-trivial to reconstruct. So, reluctantly, I am dropping my objection to removing this Annex. As such, I have *<b>not</b>* done any work on repairing/updating this annex. If we drop this annex, we’ll need to decide what to do about all the [M], [O], and [S] markers spread throughout the normative text.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">In DR 13-0002, Murata-san proposed the addition of a new informative Annex, “Guidelines for Format Designers” (see <a href="https://goo.gl/gzIX9y)" target="_blank">https://goo.gl/gzIX9y)</a>”. As I cannot access this link, I have not added this annex. Murata-san, can you please circulate this proposed text?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">As Caroline will likely not attend the March meeting, I’d like to give her time to review and submit feedback before then. Likewise for Aarti’s experts (who likely will not attend that meeting).<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">We’ll have a big job in March resolving all the open issues, so the more preparation you can do before then, the better. And, of course, we can do serious work on this on our January 31 teleconference.<span class="m_-962109479932231264m_-5974214387516116543gmail-m_-2586343505769044150gmail-HOEnZb"><font color="#888888"><u></u><u></u></font></span></p><span class="m_-962109479932231264m_-5974214387516116543gmail-m_-2586343505769044150gmail-HOEnZb"><font color="#888888"><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Rex<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></font></span></div></div></blockquote></div><br></div></div></div></div>
</blockquote></span></div><br><br clear="all"><span><div><br></div>-- <br><div class="m_-962109479932231264m_-5974214387516116543gmail_signature"><br>Praying for the victims of the Japan Tohoku earthquake<br><br>Makoto</div>
</span></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><br>Praying for the victims of the Japan Tohoku earthquake<br><br>Makoto</div>
</div>