QT4CG Draft Minutes 049, 10 October 2023

Hello,

Here are the draft minutes from today’s meeting:

    https://qt4cg.org/meeting/minutes/2023/10-10.html

QT4 CG Meeting 049 Minutes 2023-10-10

Table of Contents

     * [1]Draft Minutes
     * [2]Summary of new and continuing actions [0/7]
     * [3]1. Administrivia
          + [4]1.1. Roll call [10/11]
          + [5]1.2. Accept the agenda
               o [6]1.2.1. Status so far...
          + [7]1.3. Approve minutes of the previous meeting
          + [8]1.4. Next meeting
          + [9]1.5. Review of open action items [6/12]
          + [10]1.6. Review of open pull requests and issues
               o [11]1.6.1. Blocked
               o [12]1.6.2. Merge without discussion
               o [13]1.6.3. Close without action
               o [14]1.6.4. XSLT focused
               o [15]1.6.5. Substantive PRs
               o [16]1.6.6. Requires confirmation
               o [17]1.6.7. Proposed for V4.0
     * [18]2. Technical Agenda
          + [19]2.1. Issue #397: Type names
          + [20]2.2. Issue #283: Enumeration types
          + [21]2.3. PR 659: 647: schema location hints
          + [22]2.4. PR #691: 688 Semantics of local union types,
            enumeration types, etc
     * [23]3. Any other business?
     * [24]4. Adjourned

   [25]Agenda index / [26]QT4CG.org / [27]Dashboard / [28]GH Issues /
   [29]GH Pull Requests

Draft Minutes

Summary of new and continuing actions [0/7]

     * [ ] QT4CG-045-02: RD to address comments on HTML namespaces in
       another PR
     * [ ] QT4CG-046-01: MK to continue the work on #129 for the other
       specs (we accepted #703)
     * [ ] QT4CG-046-04: CG to flesh out changes related to annotations in
       other parts of the specs
     * [ ] QT4CG-046-05: NW to updated parse-uri to use decode-from-uri
       (issue #566)
     * [ ] QT4CG-048-01: MK - to identify what happens with the mode
       default rule behaviours.
     * [ ] QT4CG-048-02: MK to clean up the proposal for adding @as to
       xsl:sequence and elsewhere
     * [ ] QT4CG-049-01: MK to make sure CastTarget is defined locally
     * [ ] QT4CG-049-02: NW to sort out what has made the dashboard so
       unwieldy

1. Administrivia

1.1. Roll call [10/11]

   Regrets JL
     * [X] Reece Dunn (RD)
     * [X] Sasha Firsov (SF)
     * [X] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK) [:15-]
     * [X] Michael Kay (MK)
     * [ ] John Lumley (JL)
     * [X] Dimitre Novatchev (DN)
     * [X] Wendell Piez (WP)
     * [X] Ed Porter (EP)
     * [X] C. M. Sperberg-McQueen (MSM)
     * [X] Norm Tovey-Walsh (NW). Scribe. Chair.

1.2. Accept the agenda

   Proposal: Accept [30]the agenda.

   Accepted.

1.2.1. Status so far...

   issues-open-2023-10-10.png

   Figure 1: "Burn down" chart on open issues

   issues-by-spec-2023-10-10.png

   Figure 2: Open issues by specification

   issues-by-type-2023-10-10.png

   Figure 3: Open issues by type

1.3. Approve minutes of the previous meeting

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

   Accepted.

1.4. Next meeting

   The next meeting [32]is scheduled for Tuesday, 17 October 2023.

   JL gave regrets for the 17th as well. EP gives regrets.

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

     * [X] QT4CG-029-07: NW to open the next discussion of #397 with a
       demo from DN
          + See PR [33]#449. Discussion planned for meeting 049, 10
            October 2023.
     * [ ] QT4CG-045-02: RD to address comments on HTML namespaces in
       another PR
     * [ ] QT4CG-046-01: MK to continue the work on #129 for the other
       specs (we accepted #703)
     * [X] QT4CG-046-02: RD to draft the specification changes to allow
       record(*)
     * [X] QT4CG-046-03: MK to roll back the changes related to default
       namespaces for elments and types (issue #372)
     * [ ] QT4CG-046-04: CG to flesh out changes related to annotations in
       other parts of the specs
     * [ ] QT4CG-046-05: NW to updated parse-uri to use decode-from-uri
       (issue #566)
     * [X] QT4CG-047-01: MK to make a PR that renames break-when to
       split-when
     * [ ] QT4CG-048-01: MK - to identify what happens with the mode
       default rule behaviours.
     * [ ] QT4CG-048-02: MK to clean up the proposal for adding @as to
       xsl:sequence and elsewhere
     * [X] QT4CG-048-03: MK 5.4. - the section on type patterns - replace
       3rd paragraph - belongs with predicate patterns. Fix cut-and-paste
       issues.
     * [X] QT4CG-048-04: MK to use xs: prefix

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 [34]#635: 451: Schema compatibility
     * PR [35]#538: 480: Attempt to allow xs:string to be 'promoted to'
       xs:anyURI
     * PR [36]#529: 528: revision of json(), and renaming to xdm-to-json()
     * PR [37]#412: 409, QT4CG-027-01: xsl:next-match

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 [38]#732: 731 Capturing accumulators: Add error conditions,
       revise streaming rules
     * PR [39]#728: 52 Allow record(*)
     * PR [40]#727: 725 Add clarification note for load-xquery-module
     * PR [41]#715: 372 Rollback the default namespace changes
     * PR [42]#650: 649: fix an xsl:fallback problem

   Accepted.

1.6.3. Close without action

   It has been proposed that the following issues be [43]closed without
   action. If you think discussion is necessary, please say so.

   None this week.

1.6.4. XSLT focused

   The following PRs appear to be candidates for a future XSLT-focussed
   meeting.
     * PR [44]#470: 369 add fixed-prefixes attribute in XSLT

   These issues identify the XSLT-focused changes that have been made to
   the specifications but which have not been established by the community
   group as the status quo.
     * Issue [45]#169: Handling of duplicate keys in xsl:map Enhancement
     * Issue [46]#168: XSLT Extension Instructions invoking Named
       Templates

1.6.5. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
     * PR [47]#737: 295 Boost the capability of recursive record types
     * PR [48]#736: 730: Clarify (and correct) rules for maps as instances
       of function types
     * PR [49]#734: 517: fn:chain
     * PR [50]#719: 413: Spec for CSV-related functions
     * PR [51]#691: 688 Semantics of local union types, enumeration types,
       etc
     * PR [52]#659: 647: schema location hints

1.6.6. Requires confirmation

   These issues identify changes that have been made to the specifications
   but which have not been established by the community group as the
   status quo.
     * Issue [53]#571: XSLT: xsl:for-each-group/@break-when
          + Resolved in [54]meeting 047
     * Issue [55]#372: Separate default namespace for elements from the
       default namespace for types
          + Resolved in [56]meeting 046, abandon this change
     * Issue [57]#283: Enumeration types
          + TBD
     * Issue [58]#233: Declare the result type of a mode, via @as
          + Resolved in [59]meeting 048
     * Issue [60]#172: Record Tests
          + Resolved in [61]meeting 048

1.6.7. Proposed for V4.0

   The following issues are labled "proposed for V4.0".
     * Issue [62]#716: Generators in XPath
     * Issue [63]#479: fn:deep-equal: Input order
     * Issue [64]#340: fn:format-number: Specifying decimal format
     * Issue [65]#260: array:index-of
     * Issue [66]#238: Support Invisible XML
     * Issue [67]#130: New super/union type xs:binary?
     * Issue [68]#129: Context item -> Context value?
          + Resolved in [69]meeting 045

2. Technical Agenda

2.1. Issue #397: Type names

   See [70]#397

   We'll begin this week with a demo by DN and a discussion of this issue.
     * DN begins with a description of an XPath function library
          + ... A function returns a map that from strings to (usually)
            functions
          + ... Could be constants or other variables
          + (Scribe fails to copy and paste the examples; the repository
            isn't public)
          + ... DN describes a few of the functions shown
          + ... We begin with a function to load function libraries
          + ... When passed a path, it loads the document and evaluates it
          + ... (DN shows an example of id, flip, and compose functions)
          + ... A lot of functions and operators are defined in
            operators.xpath
          + ... (DN demostrates a bunch of operator tests)
          + ... The next example shows a function library that loads other
            function libraries. The special-folds.xpath library loads
            folds.xpath and operators.xpath.
          + ... This library defines and, or, etc.
          + ... This demonstrates that libraries can be loaded by other
            libraries.
          + ... (DN demonstrates the special folds test results)
     * NW: Thank you, DN.
     * NW: Trying to relate this back to issue 397, I think there was some
       concern about how multiple expressions would share an environment.
       Am I correct, that all of your examples are "single expressions" so
       this isn't at all like the case of different XPath expressions on
       different XSLT attributes.
     * DN: I think that there should be no concern about separate XPath
       expressions, it's very simple to do this.

   Some discussion of whether or not multiple expressions is "easy".
     * RD: This is similar to what JavaScript libraries when classes
       weren't a feature; they'd define a function that returns a map.

   (MSM asks about the repository; it's not public.)
     * DN: I did many experiments; the code needs to be cleaned up.
     * MK: Have you attempted to integrate this into some capability to do
       tree construction.
     * DN: I can't immediately recall. Node construction for example in
       the multi-compose function, can construct any nodes.
          + ... Higher order functions aren't necessarily deterministic
            because the functions passed as parameters can be
            nondeterministic.
     * DN: I will try to produce an example that produces nodes.

2.2. Issue #283: Enumeration types

   See [71]#283.
     * MK: Enumeration types allow you to define a type as a list of
       strings. #283 attempts to describe the motivation.
          + ... Enumerations are useful. They exist in most other
            languages.
          + ... Restrict to strings to keep it simple.
          + ... We could make them more strongly typed, but let's see what
            limitations they have first.
          + ... Since this was written, the subtyping rules have been
            tightened up which clarifies some things.
          + ... Could enumerations be made a restriction of xs:string?
               o ... Maybe. The subtyping is done by making an enumeration
                 a union of singleton rules. That let's you piggy-back on
                 the rules of union types.

   MK walks us through the spec prose in 3.6.2.2 and following.

   The type system isn't a hierarchy around this area.
     * DN: Is it possible to have an enumeration of "green", "green",
       "blue"?
     * MK: I don't think I ruled it out. We could be more paternalistic.
       You don't need the rule, but it might be useful for catching things
       the user didn't intend.
     * DN: We could have a much more general type, a member of a set for
       example.
          + ... We already have a proposal for adding sets to the
            language. That would subsume this.
     * MK: One reason to restrict it to strings is to keep very simple
       equality semantics. So we don't have to debate if something is a
       member of a set or not depending on how you compare it.
          + ... One could have an enumeration of dates or URIs but this
            seems to cover the use cases.
     * DN: Having any kind of types would be more useful.
     * MK: Yes, it gets complicated but we could use the same comparisons
       we use for maps.
     * DN: It would be much better if it was not just strings.
     * JK: What do we get out of an enum constructor that we don't get out
       of binding to a global parameter or variable?
     * MK: More expressive function parameters, mostly. You can express
       that a parameter must be "ascending" or "descending" for example.

   General agreement that more examples would be good.
     * RD: This is currently used in a couple of places in the XPath
       functions, especially the newer functions. It would be useful to go
       through the functions and see which would benefit from it.
          + ... On DN's point, the HTML function takes a predefined set of
            HTML versions a lot of which are a fixed enumeration of
            numbers. That would benefit from extending enumerations to
            support xs:decimal.
     * RD: Thinking JK's point, as well as being useful for static
       checking, it would be useful in IDEs and editors to provide things
       like auto-completion and checking.

   Accept the current prose as the status quo?

   No objections.

   Should we extend it in some way(s)?
     * RD: If we do extend it, then it would make sense to keep the enum,
       but how would we resolve the resulting types.
     * MK: The subtyping rules become more complicated.
     * RD: I think the easiest would be to say that the underlying type is
       the simplest union.
     * MK: It's better not to ask what type is it, but instead to ask what
       instances does it match. There's no type label on a string that
       says it's a member of an enumeration.

   Some further discussion of the subtyping rule. MK asserts that the
   current rule could be extended.
     * DN: Should we introduce a special type, "membership of" that would
       solve the problem.
     * MK: A new kind of expression?
     * DN: Yes. What can be put on the right hand side of the test.

   There were assertions that other things should be on the list of items
   that require consensus, among them the item type syntax and something
   that MK spotted in XSLT. Please create issues and mark them
   appropriately!

2.3. PR 659: 647: schema location hints

   Just to take the substantive PRs in "the other" order this week...

   See PR [72]#659
     * MK: This attempts to define a bit more precisely what import schema
       means with multiple hints.

   (There seems to be an issue with the diff build of 659, skipping...)

2.4. PR #691: 688 Semantics of local union types, enumeration types, etc

   See PR [73]#691
     * MK reviews the PR.
     * MK: This PR modifies enumeration types to add more semantics,
       including the parallel with union types.
          + ... Putting it in the generalized atomic type makes it useful
            in more places.
     * MSM: Observe that the words here answer the question about the
       meaning of "green", "green", "blue". At the type level you have a
       union type with two members, not three. (Not three, two of which
       are the same.)
          + ... No, I take it back. Unions are sequential not symmetric.
     * MK: That's true if you cast to one.
     * MSM: The effect is clear, there are two strings that match, not
       three. I withdraw the claim that this answers the question!

   MK proposes to press on and review the rest of the changes.
     * MK: Enumerations are now in the general rules for atomic types.
          + ... A rule is added for coercion with union types and how
            downcasting works.
          + ... This fills in the gaps with union types (more than about
            enumeration types).
          + ... An instance of test doesn't allow casting or conversion
            which sometimes leads to counter-intuitive results!
          + More changes in casting and castable.
          + Constructor functions are automatically created for
            union/enumeration types.
     * RD: Where is cast target defined in that syntax?
     * MK: It's only in the appendix, but it should be defined locally.

   ACTION QT4CG-049-01: MK to make sure CastTarget is defined locally
     * MK: An example of a type alias for a constructor function is added.
          + ... Error conditions have been added for duplicate names for
            the types or constructor functions.

   Proposal: Accept this PR.

   Accepted.

3. Any other business?

   None heard.

4. Adjourned

References

   1. https://qt4cg.org/meeting/minutes/2023/10-10.html#minutes
   2. https://qt4cg.org/meeting/minutes/2023/10-10.html#new-actions
   3. https://qt4cg.org/meeting/minutes/2023/10-10.html#administrivia
   4. https://qt4cg.org/meeting/minutes/2023/10-10.html#roll-call
   5. https://qt4cg.org/meeting/minutes/2023/10-10.html#agenda
   6. https://qt4cg.org/meeting/minutes/2023/10-10.html#so-far
   7. https://qt4cg.org/meeting/minutes/2023/10-10.html#approve-minutes
   8. https://qt4cg.org/meeting/minutes/2023/10-10.html#next-meeting
   9. https://qt4cg.org/meeting/minutes/2023/10-10.html#open-actions
  10. https://qt4cg.org/meeting/minutes/2023/10-10.html#open-pull-requests
  11. https://qt4cg.org/meeting/minutes/2023/10-10.html#blocked
  12. https://qt4cg.org/meeting/minutes/2023/10-10.html#merge-without-discussion
  13. https://qt4cg.org/meeting/minutes/2023/10-10.html#close-without-action
  14. https://qt4cg.org/meeting/minutes/2023/10-10.html#xslt-focused
  15. https://qt4cg.org/meeting/minutes/2023/10-10.html#substantive
  16. https://qt4cg.org/meeting/minutes/2023/10-10.html#requires-confirmation
  17. https://qt4cg.org/meeting/minutes/2023/10-10.html#proposed-40
  18. https://qt4cg.org/meeting/minutes/2023/10-10.html#technical-agenda
  19. https://qt4cg.org/meeting/minutes/2023/10-10.html#type-names
  20. https://qt4cg.org/meeting/minutes/2023/10-10.html#h-0612CA13-7474-4617-8818-6AB4F722679E
  21. https://qt4cg.org/meeting/minutes/2023/10-10.html#schema-location-hints
  22. https://qt4cg.org/meeting/minutes/2023/10-10.html#local-union-types
  23. https://qt4cg.org/meeting/minutes/2023/10-10.html#any-other-business
  24. https://qt4cg.org/meeting/minutes/2023/10-10.html#adjourned
  25. https://qt4cg.org/meeting/minutes/
  26. https://qt4cg.org/
  27. https://qt4cg.org/dashboard
  28. https://github.com/qt4cg/qtspecs/issues
  29. https://github.com/qt4cg/qtspecs/pulls
  30. https://qt4cg.org/meeting/agenda/2023/10-10.html
  31. https://qt4cg.org/meeting/minutes/2023/10-03.html
  32. https://qt4cg.org/meeting/agenda/2023/10-17.html
  33. https://qt4cg.org/dashboard/#pr-449
  34. https://qt4cg.org/dashboard/#pr-635
  35. https://qt4cg.org/dashboard/#pr-538
  36. https://qt4cg.org/dashboard/#pr-529
  37. https://qt4cg.org/dashboard/#pr-412
  38. https://qt4cg.org/dashboard/#pr-732
  39. https://qt4cg.org/dashboard/#pr-728
  40. https://qt4cg.org/dashboard/#pr-727
  41. https://qt4cg.org/dashboard/#pr-715
  42. https://qt4cg.org/dashboard/#pr-650
  43. https://github.com/qt4cg/qtspecs/labels/Propose%20Closing%20with%20No%20Action
  44. https://qt4cg.org/dashboard/#pr-470
  45. https://github.com/qt4cg/qtspecs/issues/169
  46. https://github.com/qt4cg/qtspecs/issues/168
  47. https://qt4cg.org/dashboard/#pr-737
  48. https://qt4cg.org/dashboard/#pr-736
  49. https://qt4cg.org/dashboard/#pr-734
  50. https://qt4cg.org/dashboard/#pr-719
  51. https://qt4cg.org/dashboard/#pr-691
  52. https://qt4cg.org/dashboard/#pr-659
  53. https://github.com/qt4cg/qtspecs/issues/571
  54. https://qt4cg.org/meeting/minutes/2023/09-26.html#iss-571
  55. https://github.com/qt4cg/qtspecs/issues/372
  56. https://qt4cg.org/meeting/minutes/2023/09-19.html#issue-372
  57. https://github.com/qt4cg/qtspecs/issues/283
  58. https://github.com/qt4cg/qtspecs/issues/233
  59. https://qt4cg.org/meeting/minutes/2023/10-03.html#h-2476E3A4-7AB9-474C-8122-04FA7CDC9551
  60. https://github.com/qt4cg/qtspecs/issues/172
  61. https://qt4cg.org/meeting/minutes/2023/10-03.html#h-2A975F7E-9A4C-469B-9102-16E450DC8B88
  62. https://github.com/qt4cg/qtspecs/issues/716
  63. https://github.com/qt4cg/qtspecs/issues/479
  64. https://github.com/qt4cg/qtspecs/issues/340
  65. https://github.com/qt4cg/qtspecs/issues/260
  66. https://github.com/qt4cg/qtspecs/issues/238
  67. https://github.com/qt4cg/qtspecs/issues/130
  68. https://github.com/qt4cg/qtspecs/issues/129
  69. http://localhost:8132/meeting/minutes/2023/09-12.html#h-D8A3B62B-C816-4F24-A3F5-26A39109E0FC
  70. https://github.com/qt4cg/qtspecs/issues/397
  71. https://github.com/qt4cg/qtspecs/issues/283
  72. https://qt4cg.org/dashboard/#pr-659
  73. https://qt4cg.org/dashboard/#pr-691

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 10 October 2023 16:47:03 UTC