QT4CG meeting 060 draft minutes, 9 January 2024

Hi folks,

Here are the draft minutes from today’s meeting.

  https://qt4cg.org/meeting/minutes/2024/01-09.html

I’ve merged all the PRs except for one editorial PR that wound up having
merge conflicts. (I’ll merge that as soon as it’s fixed.)

QT4 CG Meeting 060 Minutes 2024-01-09

Table of Contents

     * [1]Draft Minutes
     * [2]Summary of new and continuing actions [0/6]
     * [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 [0/6]
          + [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. Proposed for V4.0
     * [17]2. Technical Agenda
          + [18]2.1. PR #874: 878 Proposed extension to subsequence
          + [19]2.2. PR #737: 295: Boost the capability of recursive
            record types
          + [20]2.3. PR #909: 893 fn:compare: Support for arbitrary atomic
            types
     * [21]3. Any other business?
          + [22]3.1. What about PR #880?
          + [23]3.2. Meeting time?
     * [24]4. Adjourned

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

Draft Minutes

Summary of new and continuing actions [0/6]

     * [ ] QT4CG-052-02: NW to consider how to schedule an "editor's
       meeting"
     * [ ] QT4CG-052-06: MK to consider the editorial question of
       "promotion" for the symmetric relations.
     * [ ] QT4CG-055-01: MK to clarify that the return type of the deep
       lookup operator is a flat sequence.
     * [ ] QT4CG-056-04: MK to write a proposal for adding a select
       attribute to xsl:text
     * [ ] QT4CG-058-01: MK to clarify in fn:numeric-compare that -0 and
       +0 are equal.
     * [ ] QT4CG-058-02: MK to consider providing more advice about the
       pitfalls of mixing decimal and double when sorting
     * [ ] QT4CG-060-01: NW to describe why we're closing #899 without
       change
     * [ ] QT4CG-060-02: MK to sketch out a proposal with subsequence and
       subsequence-where.
     * [ ] QT4CG-060-03: MK to review PR and if there are no concerns,
       merge it without discussion next weeks
     * [ ] QT4CG-060-04: CG to make a PR to remove numeric-compare and
       consider other functions

1. Administrivia

1.1. Roll call [10/11]

   Regrets: MSM.
     * [X] Reece Dunn (RD)
     * [X] Sasha Firsov (SF)
     * [X] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK) [:10-]
     * [X] Michael Kay (MK)
     * [X] John Lumley (JL)
     * [X] Dimitre Novatchev (DN)
     * [X] Wendell Piez (WP) [:10-]
     * [X] Ed Porter (EP)
     * [ ] 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-2024-01-09.png

   Figure 1: "Burn down" chart on open issues

   issues-by-spec-2024-01-09.png

   Figure 2: Open issues by specification

   issues-by-type-2024-01-09.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, 16 January 2024.

   Any regrets for the next meeting?

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

     * [ ] QT4CG-052-02: NW to consider how to schedule an "editor's
       meeting"
     * [ ] QT4CG-052-06: MK to consider the editorial question of
       "promotion" for the symmetric relations.
     * [ ] QT4CG-055-01: MK to clarify that the return type of the deep
       lookup operator is a flat sequence.
     * [ ] QT4CG-056-04: MK to write a proposal for adding a select
       attribute to xsl:text
     * [ ] QT4CG-058-01: MK to clarify in fn:numeric-compare that -0 and
       +0 are equal.
     * [ ] QT4CG-058-02: MK to consider providing more advice about the
       pitfalls of mixing decimal and double when sorting

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 [33]#795: 655: fn:sort-with
     * PR [34]#529: 528: revision of json(), and renaming to
       elements-to-maps()

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 [35]#926: 860 Editorial rearrangement of spec for shallow lookup
     * PR [36]#925: 780 Document incompatibility in format-number etc
     * PR [37]#924: 648 Disallow user modifications to schema for FN
       namespace
     * PR [38]#923: 913-new-examples-for-local-name-etc
     * PR [39]#922: 915 function body terminology
     * PR [40]#918: Minor cx through chap. 14
     * PR [41]#914: XQFO minor edits
     * PR [42]#912: XQFO: Minor edits
     * PR [43]#907: 906 fn:deep-equal: unordered -> ordered
     * PR [44]#905: 898 - relax the constraints on document-uri
     * PR [45]#904: 821 Annotations: Make default namespace explicit
     * PR [46]#901: 895 Parameters with default values: allow empty
       sequences

   Proposal: merged without discussion

   Accepted.

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 [47]#899: Simplifying the language - types have behaviour.

   Propocal: close without action
     * MK: We know this is a problem, but no one's come up with a better
       solution. It's an area where adding any additional features will
       just make it more complicated.

   Accepted.

   ACTION QT4CG-060-01: NW to describe why we're closing #899 without
   change

1.6.4. XSLT focused

   The following PRs appear to be candidates for a future XSLT-focused
   meeting.
     * PR [48]#871: Action qt4 cg 027 01 next match

   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 [49]#168: XSLT Extension Instructions invoking Named
       Templates

1.6.5. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
     * PR [50]#927: 861 Rewrite spec of deep lookup operator
     * PR [51]#921: 920 Allow xsl:break and xsl:next-iteration within
       branch of xsl:switch
     * PR [52]#916: 720 Allow methods in maps with access to $this
     * PR [53]#909: 893 fn:compare: Support for arbitrary atomic types
     * PR [54]#880: 872 Symmetry: fn:items-at -> fn:get
     * PR [55]#874: 878 Proposed extension to subsequence
     * PR [56]#832: 77 Add map:deep-update and array:deep-update
     * PR [57]#737: 295: Boost the capability of recursive record types

1.6.6. Proposed for V4.0

   The following issues are labled "proposed for V4.0".
     * Issue [58]#910: Introduce a Kollection object with functions that
       operate on all types of items that can be containers of unlimited
       number of "members"
     * Issue [59]#908: Function identity: documentation still too vague
     * Issue [60]#850: fn:parse-html: Finalization
     * Issue [61]#829: fn:boolean: EBV support for more item types
     * Issue [62]#716: Generators in XPath
     * Issue [63]#689: fn:stack-trace: keep or drop?
     * Issue [64]#583: array:replace(), etc
     * Issue [65]#557: fn:unparsed-binary: accessing and manipulating
       binary types
     * Issue [66]#340: fn:format-number: Specifying decimal format
     * Issue [67]#283: Enumeration types
     * Issue [68]#260: array:index-of
     * Issue [69]#236: map:group-by or map:build with a sequence of keys
     * Issue [70]#33: json parsing number type option
     * Issue [71]#31: Extend FLWOR expressions to maps

2. Technical Agenda

2.1. PR #874: 878 Proposed extension to subsequence

   See PR [72]#874
     * MK: This arises from CG's proposal to rename items-before and
       items-after.
          + ... It goes back to an idea of combining them all into a
            single function with optional parameters.
     * MK: All this PR does is introduce the new function, it would need
       more editorial work if accepted.
     * MK Describes the changes in the fn:subsequence function.
     * RD: In the binding of $temp you've mentioned greater-than-or-equal
       but it's le.
     * MK: This gives the correct, backwards-compatible answer in the NaN
       case.
     * DN: It seems very powerful, and I admire powerful things. At the
       same time, I'd like to see something less complicated. It's very
       easy to get confused. We have two different pairs of
       mutually-exclusive arguments. I think this is the first function
       with mutually-exclusive arguments.
     * MK: The closest analogy is probably fn:slice, which we haven't
       looked at all that much.
          + ... We had four separate functions, we had difficulty finding
            names for them, but the proliferation is an issue. This swings
            the pendulum the other way.
          + ... It gives more functionality than we had before, by using
            $from and $length for example.
     * DN: I'd like to make a parallel with .NET linq where they're kept
       separate. That's much more understandable.
     * MK: I like that kind of API, though it's quite hard to optimize
       statically. It's hard to see how to introduce that into our
       language without mutable iterators and streams.
     * DN: We already have generators and collections on the table. It's
       just an example of an alternative that's simpler.
     * CG: First, i was a bit hesitant about having all the functions in
       fn:subsequence, but we implemented it and showed it to users and it
       was intuitive.
     * RD: It's only $start and $from that are mutally exclusive.
     * MK: No, $length$, $while, and $until are exclusive as well.
     * RD: Oh, then my idea for using a union doesn't help. We already
       have FLOWR based sytnax for working with loops so maybe it makes
       sense to look if anything is required there.
     * MK: That's an alternative, to add clauses to FLOWR expressions. We
       could certainly look at that. I like doing things with functions
       rather than syntax, but that would certainly be an option.
     * RD: We could have both. There are equivalent expressions that are
       supported in the language. We introduced every() and any()
       functions as equivalent to the quantifier expressions.
     * CG: I wonder if there are many use cases. Do folks really want to
       do this?
     * MK: I see lots of questions about this on StackOverflow.
     * DN: Looking a bit more, it seems to me that it can be two
       functions: the existing function and a new function
       subsequence-where that has $from and ~\(while\). I think that would
       be more useful and understandable.
     * NW: That does address a concern I have about making the
       subsequence() function more complicated.
     * MK: I can sketch that out.

   ACTION QT4CG-060-02: MK to sketch out a proposal with subsequence and
   subsequence-where.

2.2. PR #737: 295: Boost the capability of recursive record types

     * PR [73]#737
     * MK reviews the background for the issue.
     * MK: John Snelson first proposed an idea like this in a blog post
       and pointed me to the relevant literature. These are iso-recursive
       types.
     * MK: That's about it really, there are no special operators. There's
       nothing that enables you to create infinite instances.
     * DN: This is another example of something I really like. I have one
       question. There are some conditions to prevent infinite/circular
       reference. Is there an guarantee that infinite/circular reference
       involving multiple types can happen, or do we need explicitly to
       specify such conditions? I would like to see a separate chapter
       about records in the final spec.
     * MK: There are two questions. Can you create an infinite data
       structure? No. That's a question of what operators we provide. You
       can only create them with the map constructor and such. We don't
       have pointers. Do the rules ensure that it is always possible to
       construct an instance? It doesn't really matter if you allow users
       to construct types that have no instances. That's already true in a
       few places. They aren't useful, but they don't do any harm. The
       rules, like it has to be an optional field, are a bit paternal. It
       means the system will reject some useless types.
     * DN: To refine the question: is it possible to have two record
       types, each of which references the other type?
     * MK: Yes.
     * DN: Then we should have an example or prose telling us if creating
       such a chain of references is infinite.
     * RD: I have three questions. One is, should we remove the
       self-reference in the record declarations we have?
     * MK: Yes, this is supposed to replace that.
     * RD: Two, in the bit where iso-recursive is described, we should
       refer to the expanded QName because if we're just doing a simple
       name match.
     * MK: Yes, I may have just overlooked that because I thought it was
       obvious.
     * MK: One thing that occurred to me is that we're starting to treat
       named record types as being a bit more than just names for things.
          + ... They're no longer just aliases, they're introducing a new
            capability.
          + ... One thing I wanted to bounce of people was whether we can
            get rid of named item types in general and only having named
            record types.
     * RD: I think named item types are useful for things like a binary
       type locally.
     * MK: Unions and enumerations are another example.
     * RD: Do we list the named item types as a possibility in the atomic
       types and should we?
     * MK: I think we do.

   Some discussion of what it would mean for named item types to be only
   allowed as record types.
     * JL: I could see a case where you want to use a named item type as
       shortcut for something you didn't want to have to write over and
       over.
     * JL: Are these all global?
     * MK: In XSLT, I don't think we've fully developed it. But I think
       they should be subject to the package level visibility. They're not
       local. In XQuery they might be module level.
     * RD: Should the named item type be with the functions and variables
       that have public/private scope in XQuery then?

   MK attempts to check what we've actually done.
     * MK: Item type declarations do have annotations so they can be
       declared public or private. I'm not sure if that's fully developed.
     * DN: Is it possible to declare a record type with no fixed fields?
       If it's possible then every map is a record that has zero keys. I
       think that would be good.
     * MK: You can define record(*) which is everything at all.
     * DN: Then we can stop talking about maps and only talk about records
       with no fields.

   Proposal: merge this PR?

   ACTION QT4CG-060-03: MK to review PR and if there are no concerns,
   merge it without discussion next week

2.3. PR #909: 893 fn:compare: Support for arbitrary atomic types

     * PR [74]#909

   CG discusses the background of the proposal.
     * CG: This is a simpler proposal. It generalizes the compare function
       to take any atomic type.
          + ... For all types, the rules are defined using the existing
            rules for comparisons.
          + ... The most significant differences are in strings and URIs.
     * DN: Don't we already have a op:keys-equal function (not exposed),
       isn't that the same? If it isn't, then we should describe how
       they're different.
     * CG: Are you thinking of atomic-equal?
     * DN: No, in XPath 3.0 there's something like op:keys-equal
     * MK: Maps are compared with atomic-equal which only cares about
       equality. This has a lot of similarities to atomic-equal but it
       handles context sensitivity and comparisons (for sorting, for
       example).
          + ... We have lots of comparison functions, but they all have a
            rationale for existence.
          + ... I support bundling the functionality like this into a
            single function.
     * MK: Does this make numeric-compare redundant?
     * RD: I was going to make the same comment.
     * DN: If these are so closely related, will this allow us to
       eliminate the other comparison functions?
     * MK: We could consider getting rid of the op: versions and putting
       it all here, but it doesn't effect users. It would be interesting
       to see how that looks.
     * CG: I'd like to drop numeric-compare and include it in this
       function.
     * NW: I like that.
     * JK: I support this proposal too.

   Proposal: accept this PR

   Accepted.

   ACTION QT4CG-060-04: CG to make a PR to remove numeric-compare and
   consider other functions

3. Any other business?

3.1. What about PR #880?

     * NW: What should we do about scheduling continuing discussion of PR
       #880?
     * MK: It's all tied up with what we do about subsequence.
     * NW: Ok, I'll just let it float along in the agenda for a bit.

3.2. Meeting time?

     * JL: What's going on with moving the time?
     * NW: I haven't had enough replies yet. The replies I have received
       don't seem likely to move us. I'll try to nudge folks.

4. Adjourned

References

   1. https://qt4cg.org/meeting/minutes/2024/01-09.html#minutes
   2. https://qt4cg.org/meeting/minutes/2024/01-09.html#new-actions
   3. https://qt4cg.org/meeting/minutes/2024/01-09.html#administrivia
   4. https://qt4cg.org/meeting/minutes/2024/01-09.html#roll-call
   5. https://qt4cg.org/meeting/minutes/2024/01-09.html#agenda
   6. https://qt4cg.org/meeting/minutes/2024/01-09.html#so-far
   7. https://qt4cg.org/meeting/minutes/2024/01-09.html#approve-minutes
   8. https://qt4cg.org/meeting/minutes/2024/01-09.html#next-meeting
   9. https://qt4cg.org/meeting/minutes/2024/01-09.html#open-actions
  10. https://qt4cg.org/meeting/minutes/2024/01-09.html#open-pull-requests
  11. https://qt4cg.org/meeting/minutes/2024/01-09.html#blocked
  12. https://qt4cg.org/meeting/minutes/2024/01-09.html#merge-without-discussion
  13. https://qt4cg.org/meeting/minutes/2024/01-09.html#close-without-action
  14. https://qt4cg.org/meeting/minutes/2024/01-09.html#xslt-focused
  15. https://qt4cg.org/meeting/minutes/2024/01-09.html#substantive
  16. https://qt4cg.org/meeting/minutes/2024/01-09.html#proposed-40
  17. https://qt4cg.org/meeting/minutes/2024/01-09.html#technical-agenda
  18. https://qt4cg.org/meeting/minutes/2024/01-09.html#pr-874
  19. https://qt4cg.org/meeting/minutes/2024/01-09.html#pr-737
  20. https://qt4cg.org/meeting/minutes/2024/01-09.html#pr-909
  21. https://qt4cg.org/meeting/minutes/2024/01-09.html#any-other-business
  22. https://qt4cg.org/meeting/minutes/2024/01-09.html#discuss-880
  23. https://qt4cg.org/meeting/minutes/2024/01-09.html#meeting-time
  24. https://qt4cg.org/meeting/minutes/2024/01-09.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/2024/01-09.html
  31. https://qt4cg.org/meeting/minutes/2023/12-19.html
  32. https://qt4cg.org/meeting/agenda/2024/01-16.html
  33. https://qt4cg.org/dashboard/#pr-795
  34. https://qt4cg.org/dashboard/#pr-529
  35. https://qt4cg.org/dashboard/#pr-926
  36. https://qt4cg.org/dashboard/#pr-925
  37. https://qt4cg.org/dashboard/#pr-924
  38. https://qt4cg.org/dashboard/#pr-923
  39. https://qt4cg.org/dashboard/#pr-922
  40. https://qt4cg.org/dashboard/#pr-918
  41. https://qt4cg.org/dashboard/#pr-914
  42. https://qt4cg.org/dashboard/#pr-912
  43. https://qt4cg.org/dashboard/#pr-907
  44. https://qt4cg.org/dashboard/#pr-905
  45. https://qt4cg.org/dashboard/#pr-904
  46. https://qt4cg.org/dashboard/#pr-901
  47. https://github.com/qt4cg/qtspecs/issues/899
  48. https://qt4cg.org/dashboard/#pr-871
  49. https://github.com/qt4cg/qtspecs/issues/168
  50. https://qt4cg.org/dashboard/#pr-927
  51. https://qt4cg.org/dashboard/#pr-921
  52. https://qt4cg.org/dashboard/#pr-916
  53. https://qt4cg.org/dashboard/#pr-909
  54. https://qt4cg.org/dashboard/#pr-880
  55. https://qt4cg.org/dashboard/#pr-874
  56. https://qt4cg.org/dashboard/#pr-832
  57. https://qt4cg.org/dashboard/#pr-737
  58. https://github.com/qt4cg/qtspecs/issues/910
  59. https://github.com/qt4cg/qtspecs/issues/908
  60. https://github.com/qt4cg/qtspecs/issues/850
  61. https://github.com/qt4cg/qtspecs/issues/829
  62. https://github.com/qt4cg/qtspecs/issues/716
  63. https://github.com/qt4cg/qtspecs/issues/689
  64. https://github.com/qt4cg/qtspecs/issues/583
  65. https://github.com/qt4cg/qtspecs/issues/557
  66. https://github.com/qt4cg/qtspecs/issues/340
  67. https://github.com/qt4cg/qtspecs/issues/283
  68. https://github.com/qt4cg/qtspecs/issues/260
  69. https://github.com/qt4cg/qtspecs/issues/236
  70. https://github.com/qt4cg/qtspecs/issues/33
  71. https://github.com/qt4cg/qtspecs/issues/31
  72. https://qt4cg.org/dashboard/#pr-874
  73. https://qt4cg.org/dashboard/#pr-737
  74. https://qt4cg.org/dashboard/#pr-909

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 9 January 2024 18:37:44 UTC