<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:Calibri">Mark,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">You raise several good points. Since you would be basically OK with these changes in a new VOTable version, I think most of the concerns you raise center around the scope of what errata can/should do.
That's an interesting discussion to have, both in general and specifically for this arraysize issue.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">For me and this specific erratum, the bottom line is one of practicality. There is benefit in encouraging VOTable writers to comply with this interpretation of the spec. The most effective means of that
may actually be adding the warning to validators like votlint. Beyond that, the erratum just seems like the most sensible place to make the clarification official.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">Since this is an erratum, I was thinking in terms of putting the wording there that we would have put in the original if we had realized the lack of clarity. In that frame of mind, the use of “must” makes
sense. That is what the spec should have said. (I do see this as a clarification rather than a change. Section 4.1 does already say, “The arraysize attribute exists when the corresponding table cell contains more than one…”. )<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">In this case, I don’t see much practical difference between “should” and “must”. Either way, some services may update to remove arraysize, and some won’t. We won’t be any less interoperable either way.
Clients, as always, can exercise flexibility to maximize their usefulness. <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">I may be missing some of the practical reasons why it’s bad to declare existing services noncompliant. Although there has historically been a stigma attached to noncompliance, that is certainly not an intent
here. Instead the hope is that noncompliance would be a mechanism for informing providers and encouraging change where practical.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">So again, the bottom line for me is that I’ll be happy to see validators updated, and will agree to pretty much any consensus wording in the erratum itself.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri">Tom<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Calibri"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-family:Calibri;color:black">From:
</span></b><span style="font-family:Calibri;color:black"><apps-bounces@ivoa.net> on behalf of Markus Demleitner <msdemlei@ari.uni-heidelberg.de><br>
<b>Date: </b>Monday, February 12, 2018 at 4:10 AM<br>
<b>To: </b>Applications WG <apps@ivoa.net><br>
<b>Subject: </b>Re: Proposed erratum to clarify arraysize="1"<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Hi Mark,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">On Sat, Feb 10, 2018 at 12:13:34AM +0000, Mark Taylor wrote:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">[on <a href="http://wiki.ivoa.net/twiki/bin/view/IVOA/VOTable-1_3-Err-3">
http://wiki.ivoa.net/twiki/bin/view/IVOA/VOTable-1_3-Err-3</a>]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-right:0in" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal" style="margin-left:.5in">On Fri, 9 Feb 2018, Markus Demleitner wrote:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> I would, however, argue that in order to have a clear standard, we<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> should upgrade the shoulds to musts, i.e., for sect. 2.2:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> Note: the arraysize attribute must be present if, and only if,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> each table cell for the FIELD is intended to be treated as an<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> array. Hence, arraysize="1" must not be used except in the unusual<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> case that the table cells contain single values that are<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> intended to be understood as single-value arrays.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> And for sect. 4.1:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> The arraysize attribute must be omitted unless the corresponding<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> table cell contents is intended to be understood as an array.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This seems to me to be going beyond what's reasonable for an Erratum.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Software and existing VOTable documents that were written in good<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">faith in accordance with (at least a plausible reading of) the standard<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">would go from being legal to illegal if these MUSTs were introduced.<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">True. I claim that's within what an Erratum might need to do, but<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">that's for another (DocStd) discussion.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">For this concrete problem, I'd just like to have clear rules in the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">future in order to fix the current mess, where two of the most popular<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">VOTable consumers disagree, making very common use cases work on one<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">and break on others (see below). However, ...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-right:0in" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal" style="margin-left:.5in">> Applied to arraysize="1" this would mean that VOTable parsers would<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> probably need to let users override the behaviour that arraysize="1"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> are arrays, and I'd argue that's not something we should impose on<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">> implementors.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This erratum already (of necessity) imposes the suggestion to<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">"exercise flexibility" on implementors:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> "However, clients may still wish to exercise flexibility<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> there since not all services are compliant with these<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> clarified semantics."<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">In practice, as this advice acknowledges, many clients will have<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">to cope with both corrected and uncorrected behaviours.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Otherwise, it's very likely things will break. I certainly<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">don't plan to 'fix' STIL/STILTS/TOPCAT so that all arraysize="1"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">values it encounters will turn into 1-element arrays.<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">...that's a clear statement. And I have a lot of sympathy for that,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">having been scolded for fixing (arguably) broken behaviour in<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">deployed systems just very recently. Now, writing an erratum that<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">makes the (arguably) most widely used implementation invalid for the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">forseeable future is silly. So, I retract my previous proposition.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Still, I'd like this erratum to make it very clear that if you're<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">producing arraysize="1" scalars, you should stop doing that as fast<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">as possible.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">How would everyone feel about the following wording?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Section 2.2 - append the following text to end of the section:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Note: VOTable parsers should interpret any FIELD with an<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> arraysize attribute such that each table cell is treated as an<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> array. Hence, arraysize="1" SHOULD be interpreted as declaring<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> single-value arrays. VOTable writers MUST NOT add arraysize="1"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> to FIELD elements except in the unusual case that all table cells<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> are to be understood as single-value arrays.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> And for sect. 4.1:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> On writing, the arraysize attribute must be omitted unless the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> corresponding table cell contents is intended to be understood as<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> an array.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This would let parsers be lenient if their authors so desire, but<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">would provide sufficient leverage to dissuade people from further<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">producing "bad" VOTables -- because:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-right:0in" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal" style="margin-left:.5in">that the behaviour of that software, rather than the content of the<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">standard, ought to be changed. Does anybody know which software<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">does in fact interpret arraysize="1" as a 1-element array?<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Astropy does, for instance, and the incompatiblity between TOPCAT and<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">astropy, two major consumers of VOTables for Joe Astronomer, is what<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">made me complain in the first place.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">But then there's the question of principle:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-right:0in" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal" style="margin-left:.5in">But to invalidate existing legal services and documents with an<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">erratum looks questionable to me. I wouldn't oppose a SHOULD here<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I'd say that at least depends on how "obvious" the error is. If we<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">forbade errata from changing validation criteria, I'd argue they<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">would be rather pointless. Sometimes, they will make valid things<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">that were previously invalid, sometimes it's the other way round. I<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">think the more interesting question is whether or not the error is<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">"obvious". Marks argument about the provenance of this feature (FITS<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">binary tables) and this:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #B5C4DF 4.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-right:0in" id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE">
<div>
<p class="MsoNormal" style="margin-left:.5in">which could be strengthened to a MUST in future VOTable revisions.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">(Though I feel that even a SHOULD might be an abuse of the Erratum<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">process; it's not really clear that this is a "clarification" of<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">the original intention rather than finally deciding which side of<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">a long-standing fence to come down on).<o:p></o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">are valid points to make the error non-"obvious". Or make it not an<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">error at all.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Rats. But, Mark, suppose I'd like to fix the horrible user<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">experience that something that works in STILTS breaks as soon as<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">people move it to (or interface it with) astropy as quickly as possible<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-- assuming you don't like the wording above, what's the strongest<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">wording you could live with?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> -- Markus<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
</div>
</body>
</html>