QT4CG meeting 106 draft minutes, 21 January 2025

Hello,

Here are the draft minutes from today’s meeting:

   https://qt4cg.org/meeting/minutes/2025/01-21.html

QT4 CG Meeting 106 Minutes 2025-01-21

   [1]Meeting index / [2]QT4CG.org / [3]Dashboard / [4]GH Issues / [5]GH
   Pull Requests

Table of Contents

     * [6]Draft Minutes
     * [7]Summary of new and continuing actions [0/6]
     * [8]1. Administrivia
          + [9]1.1. Roll call [13/13]
          + [10]1.2. Accept the agenda
               o [11]1.2.1. Status so far...
          + [12]1.3. Approve minutes of the previous meeting
          + [13]1.4. Next meeting
          + [14]1.5. Review of open action items [2/6]
          + [15]1.6. Review of open pull requests and issues
               o [16]1.6.1. Blocked
               o [17]1.6.2. Merge without discussion
               o [18]1.6.3. Close without action
               o [19]1.6.4. Substantive PRs
     * [20]2. Technical agenda
          + [21]2.1. PR #1701: Add dedication to MSM (action QT4CG-088-01)
          + [22]2.2. PR #1712: 1706 Drop "else if" and "else" clauses from
            braced conditionals
          + [23]2.3. PR #1686: 1685 Pipeline Operator
          + [24]2.4. PR #1703: 1651 ordered maps
     * [25]3. Any other business
     * [26]4. Adjourned

Draft Minutes

Summary of new and continuing actions [0/6]

     * [ ] QT4CG-082-02: DN to work with MK to come to agreement on the
       fn:ranks proposal
     * [ ] QT4CG-088-04: [Someone] needs to update the processing model
       diagram needs vis-a-vis the static typing feature
     * [ ] QT4CG-097-02: MK to make the XSD schema component references
       into links to XSD
     * [ ] QT4CG-103-01: MK to add an example of showing all the
       properties for an untyped node.
     * [ ] QT4CG-106-01: NW to remove the dead wood from the XSLT build.
     * [ ] QT4CG-106-02: MK to apply the typos changes and then merge this
       PR #1703.
     * [ ] QT4CG-106-03: MK to write the XPath that puts map keys in
       record order as an example.

1. Administrivia

1.1. Roll call [13/13]

     * [X] David J Birnbaum (DB)
     * [X] Reece Dunn (RD)
     * [X] Sasha Firsov (SF)
     * [X] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK) [:05-]
     * [X] Michael Kay (MK)
     * [X] Juri Leino (JLO)
     * [X] John Lumley (JWL)
     * [X] Dimitre Novatchev (DN)
     * [X] Wendell Piez (WP)
     * [X] Ed Porter (EP)
     * [X] Bethan Tovey-Walsh (BTW)
     * [X] Norm Tovey-Walsh (NW). Scribe. Chair.

1.2. Accept the agenda

   Proposal: Accept [27]the agenda.

   Accepted.

1.2.1. Status so far...

   These charts have been adjusted so they reflect the preceding six
   months of work.

   issues-open-2025-01-21.png

   Figure 1: "Burn down" chart on open issues

   issues-by-spec-2025-01-21.png

   Figure 2: Open issues by specification

   issues-by-type-2025-01-21.png

   Figure 3: Open issues by type

1.3. Approve minutes of the previous meeting

   Proposal: Accept [28]the minutes of the previous meeting.

   Accepted.

1.4. Next meeting

   This next meeting is planned for 28 January 2025.

   SF gives regrets.

   MK gives regrets for 4 February.

1.5. Review of open action items [2/6]

   (Items marked [X] are believed to have been closed via email before
   this agenda was posted.)
     * [ ] QT4CG-082-02: DN to work with MK to come to agreement on the
       fn:ranks proposal
     * [ ] QT4CG-088-04: [Someone] needs to update the processing model
       diagram needs vis-a-vis the static typing feature
     * [ ] QT4CG-097-02: MK to make the XSD schema component references
       into links to XSD
     * [X] QT4CG-097-03: DN to proposal an axis for accessing the siblings
       of a node.
          + DN thanks MK for his enthusiastic engagement with the
            proposal.
     * [ ] QT4CG-103-01: MK to add an example of showing all the
       properties for an untyped node.
     * [X] QT4CG-103-02: MK to review other ways of handling namespaces in
       fn:path

1.6. Review of open pull requests and issues

1.6.1. Blocked

   The following PRs are open but have merge conflicts or comments which
   suggest they aren't ready for action.
     * PR [29]#1587: 557 Add fn:binary-resource
     * PR [30]#1296: 982 Rewrite of scan-left and scan-right
     * PR [31]#1283: 77b Update expressions
     * PR [32]#1062: 150bis revised proposal for fn:ranks
     * PR [33]#1227: 150 PR resubmission for fn ranks

1.6.2. Merge without discussion

   The following PRs are editorial, small, or otherwise appeared to be
   uncontroversial when the agenda was prepared. The chairs propose that
   these can be merged without discussion. If you think discussion is
   necessary, please say so.
     * PR [34]#1711: 1705 Say that max precision is implementation-defined
     * PR [35]#1710: 1709 Updated type diagrams
     * PR [36]#1700: Remove some dead .DS_Store files

   Proposal: merge these PRs without discussion.

   Accepted.
     * MK: All the SVG stuff in the XSLT part of the build is dead wood.

   ACTION QT4CG-106-01: NW to remove the dead wood from the XSLT build.

1.6.3. Close without action

   It has been proposed that the following issues be closed without
   action. If you think discussion is necessary, please say so.
     * Issue [37]#1606: Drop named item types other than named record
       types
     * Issue [38]#1494: Records: Introduction?
     * Issue [39]#1176: Use fn:parse-uri to check whether a filepath is
       relative or absolute

   Proposal: close these without further action.

   Accepted.

1.6.4. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
     * PR [40]#1686: 1685 Pipeline Operator
     * PR [41]#1701: Add dedication to MSM (action QT4CG-088-01)
     * PR [42]#1703: 1651 ordered maps
     * PR [43]#1708: 1485 Add xsl:record-type declaration
     * PR [44]#1712: 1706 Drop "else if" and "else" clauses from braced
       conditionals

2. Technical agenda

2.1. PR #1701: Add dedication to MSM (action QT4CG-088-01)

   See PR [45]#1701.
     * NW explains the motivation behind his PR.
     * JWL: The first sentence of the second paragraph, could we make it
       clear how long he's been involved?

   Proposal: Accept this PR.

   Accepted.

2.2. PR #1712: 1706 Drop "else if" and "else" clauses from braced
conditionals

   See PR [46]#1712.
     * MK: There's been some discussion, but I think I like this solution
       for its simplicity. The language is simpler and we haven't lost any
       functionality.
     * MK: Unfortunately there are some rogue diffs in here.

   MK describes the changes in 4.14, Conditional Expressions.
     * CG: Maybe it would be helpful to add an example that has else if
       with the last else branch omitted.
     * MK: That's not allowed.
     * CG: Can we look at issue 1706?
          + I think this is valid: if (A) then ( ... ) else if (B) { ... }
     * MK: Yes, I'm not sure I'd recommend it.
     * MK: What an endif or fi. I think that's confusing.
     * DN: If this is accepted then we'll be able to have just one braced
       action following an if without another intermediate if?
     * MK: If I've understood you, then I think the answer is yes.
     * JWL: When you've got the braced bit, if you've got an inner one, is
       it an empty map?
     * MK: Yes.
     * JLO: If we need to use this mixed kind of syntax, but we don't want
       to recommende it, do we want to allow it?
     * MK: It's allowed by orthogonality.
     * CG: I think it would be difficult to disallow it. Any expression
       can be used at that place.
          + ... My personal preference would be to make the else branch
            optional everywhere but we've discussed that.

   Proposal: Accept this PR.

   Accepted.

2.3. PR #1686: 1685 Pipeline Operator

   See PR [47]#1686.

   CG introduces the proposal.
     * CG: It's basically the same as last week, but motivated by David
       I've revised the examples.

   CG describes through the revised examples in 4.22, Pipeline operator.
     * JLO: This is the first time I'm seeing this. Can't we remove the
       other arrow operator?
     * MK: We can't get rid of it, it already exists.
     * CG: Yes, the fact that users are already used to the "fat arrow" is
       potentially confusing for users.
          + ... If we started over, we probably would think differently
            about the operators.
     * DN: There probably needs to be more exposition about when to use =>
       and when to use ->.
          + ... I think using . as the context value is going to be
            confusing as well.
     * NW: Did any of the other potential symbols meet with favor?
     * MK: .> is ambiguous. Tilde would work.
     * SF: There are two points I want to emphasis, if we are going to
       have a schema definition for XPath and XSLT which will be
       transparent to existing parsers, then many things can be moved from
       the standards to consumers. If we could allow operator overloading,
       then users could try things out. This is a "polyfill" in
       Javascript.
          + ... This would allow us to try alternate syntaxes. But it
            requires the schemas to be available for the parsers.
     * DN: I wanted to point out something that I'm concerned about: all
       of these syntaxes can very easily be mistyped. In order to avoid
       this, I would prefer having a longer operator like --->> to avoid
       the possibility of mistyped operators.
     * JLO: From what I understand, I'm in favor of a mechanism that would
       allow polyfills, but not everything in Javascript is polyfillable.
       Maybe this could be, because it can be expressed as a for
       expression. I also think that | and the tilde would work. I'm still
       really in favor of this operator.
     * JWL: Is the full width greater than symbol supported in this one?
       For support in constructors?
     * MK: I think for consistency, it would have to be.
     * CG: I'll add it to the list.
     * NW: I have real reservations about that use of the full-width
       greater than.
     * RD: Polyfills are hard to do. In JavaScript, it's done with
       external tools like Bablefish that convert from the version with
       the syntax extensions to a version that doesn't use them. We don't
       have something like that in XQuery so it would be difficult to get
       up and running.
     * SF: The root cause of the difficulties in experimentation is that
       the parser does not have the API to access to the schema
       definitions. And the language isn't schema driven. Once we can
       introduce schema-driven parsers, then the new operator is easy to
       do.
     * RD: But different vendors have different approaches to parsing the
       language implementing the grammar. Telling BaseX or Saxon to use a
       different parser grammar isn't really practical.
     * SF: This is about pre-release capabilities for experimentation.
     * NW: Do you have a proposal for this kind of schema design?
     * RD: Usually this is hidden behind compiler flags.

   Some discussion of how implementations might approach this problem.
     * SF: Let's take this to email.
     * MK: The issues that SF has raised are important. They're equally
       relevant to all the proposals. We need to distinguish two seperate
       issues: community feedback and review is one and incremental
       delivery of features is the other. I don't think we should try to
       standardize the latter.
          + ... The point about review of the specs is something we need
            to put on our agenda. When should we put out a spec for
            review? And can we get informal agreement between implementors
            that they'll have something users can play with.
     * NW: Yes, I think steering this ship towards a final spec is
       something we should talk about soon.
     * JK: I think SF's idea is a good one. I think one issue is that you
       might not get the feedback you expect because the environment might
       not be right for getting meaningful data.
          + ... You could also find that users like a syntax that
            introduces ambiguities.
          + ... We also need to pick a specific syntax.
          + ... Happy to discuss.
     * SF: The mechanism for making it real already exists in the
       JavaScript community. It's not always the case that the most
       popular choice is the best but it's a metric.

   Proposal: Accept this PR.

   Accepted.

2.4. PR #1703: 1651 ordered maps

   See PR [48]#1703.
     * MK: I think this is a reduced version of previous proposals. It
       effects all of the specs.
     * MK: In the Data Model it changes the definition of a map item and
       the functions that operate on them.
     * MK: In XPath, a map now has an "entry order" which we say a few
       things about.
          + ... We say that the order doesn't effect matching against the
            type.
          + ... Map constructors now return a map in which the order of
            entries is retained.
          + ... Lookup operators are defined to return results in entry
            order.
     * JWL: If I use the record constructor, then they'll be in the order
       the record is defined.
          + But what happens if I do map puts in the "wrong" order?
     * MK: If you use a record constructor that uses latitude and
       longitude, they'll be in that order. But if you put them in the
       other order, they'd still match the type.

   You can work out the order by iterating over the entries.
     * MK: The order is primarily for users, you can use it for semantic
       information but that's not the primary reason.
     * MK: In Functions and Operators, mostly there are notes about when
       and how the entries are ordered.
          + ... In deep-equal, maps are compared without order.
          + ... json-to-xml and xml-to-json both retain order.
          + ... parse-json is defined to retain the oreder of maps.
          + ... Basically, ever function that returns a map has to say
            something about the ordering.
     * MK: And in the serialization spec, we say that the json output
       method returns order.
     * CG: This looks like a complete proposal. I've noted some minor
       typos.

   ACTION QT4CG-106-02: MK to apply the typos changes and then merge this
   PR.
     * WP: I'm a little concerned about transparency of expectations. A
       function that puts maps that are records into the "right" order
       might be useful.
          + ... In general, I think it's great.
     * JWL: I think that function can be written in XPath itself.
     * MK: Oh, yes.

   ACTION QT4CG-106-03: MK to write the XPath that puts map keys in record
   order as an example.
     * JWL: One example of when you'd need this is when your interpolating
       coordinates in multiple maps.
     * MK: Yes, we had a separate issue on sorted maps and this allows you
       to do it for retrieval but not to retain sorted order on insertion.

   Proposal: Accept this PR.

   Accepted.

3. Any other business

   None heard.

4. Adjourned

References

   1. https://qt4cg.org/meeting/minutes/
   2. https://qt4cg.org/
   3. https://qt4cg.org/dashboard
   4. https://github.com/qt4cg/qtspecs/issues
   5. https://github.com/qt4cg/qtspecs/pulls
   6. https://qt4cg.org/meeting/minutes/2025/01-21.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/01-21.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/01-21.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/01-21.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/01-21.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/01-21.html#so-far
  12. https://qt4cg.org/meeting/minutes/2025/01-21.html#approve-minutes
  13. https://qt4cg.org/meeting/minutes/2025/01-21.html#next-meeting
  14. https://qt4cg.org/meeting/minutes/2025/01-21.html#open-actions
  15. https://qt4cg.org/meeting/minutes/2025/01-21.html#open-pull-requests
  16. https://qt4cg.org/meeting/minutes/2025/01-21.html#blocked
  17. https://qt4cg.org/meeting/minutes/2025/01-21.html#merge-without-discussion
  18. https://qt4cg.org/meeting/minutes/2025/01-21.html#close-without-action
  19. https://qt4cg.org/meeting/minutes/2025/01-21.html#substantive
  20. https://qt4cg.org/meeting/minutes/2025/01-21.html#technical-agenda
  21. https://qt4cg.org/meeting/minutes/2025/01-21.html#pr-1701
  22. https://qt4cg.org/meeting/minutes/2025/01-21.html#pr-1712
  23. https://qt4cg.org/meeting/minutes/2025/01-21.html#pr-1686
  24. https://qt4cg.org/meeting/minutes/2025/01-21.html#pr-1703
  25. https://qt4cg.org/meeting/minutes/2025/01-21.html#any-other-business
  26. https://qt4cg.org/meeting/minutes/2025/01-21.html#adjourned
  27. https://qt4cg.org/meeting/agenda/2025/01-21.html
  28. https://qt4cg.org/meeting/minutes/2025/01-14.html
  29. https://qt4cg.org/dashboard/#pr-1587
  30. https://qt4cg.org/dashboard/#pr-1296
  31. https://qt4cg.org/dashboard/#pr-1283
  32. https://qt4cg.org/dashboard/#pr-1062
  33. https://qt4cg.org/dashboard/#pr-1227
  34. https://qt4cg.org/dashboard/#pr-1711
  35. https://qt4cg.org/dashboard/#pr-1710
  36. https://qt4cg.org/dashboard/#pr-1700
  37. https://github.com/qt4cg/qtspecs/issues/1606
  38. https://github.com/qt4cg/qtspecs/issues/1494
  39. https://github.com/qt4cg/qtspecs/issues/1176
  40. https://qt4cg.org/dashboard/#pr-1686
  41. https://qt4cg.org/dashboard/#pr-1701
  42. https://qt4cg.org/dashboard/#pr-1703
  43. https://qt4cg.org/dashboard/#pr-1708
  44. https://qt4cg.org/dashboard/#pr-1712
  45. https://qt4cg.org/dashboard/#pr-1701
  46. https://qt4cg.org/dashboard/#pr-1712
  47. https://qt4cg.org/dashboard/#pr-1686
  48. https://qt4cg.org/dashboard/#pr-1703

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 21 January 2025 17:49:34 UTC