|
| 1 | +# 15 July 2024 | MessageFormat Working Group Teleconference |
| 2 | + |
| 3 | +### Attendees |
| 4 | +- Addison Phillips - Unicode (APP) - chair |
| 5 | +- Eemeli Aro - Mozilla (EAO) |
| 6 | +- Mihai Niță - Google (MIH) |
| 7 | +- Luca Casonato - Deno (LCA) |
| 8 | +- Harmit Goswami - Mozilla (HGO) |
| 9 | +- Ujjwal Sharma - Igalia (USA) |
| 10 | +- Richard Gibson - OpenJSF (RGN) |
| 11 | + |
| 12 | +Scribe: LCA, USA |
| 13 | + |
| 14 | +## Topic: Info Share |
| 15 | + |
| 16 | +Nothing |
| 17 | + |
| 18 | +## Topic: Tech Preview |
| 19 | + |
| 20 | +Let’s review the Task List: |
| 21 | + |
| 22 | +https://github.com/unicode-org/message-format-wg/wiki/Things-That-Need-Doing |
| 23 | + |
| 24 | +APP: Added “A specification for a one-to-one mapping between the data model and XLIFF” from our goals doc. |
| 25 | + |
| 26 | +## Topic: PR Review |
| 27 | +Timeboxed review of items ready for merge. |
| 28 | + |
| 29 | +Late breaking PRs: #823 through #828 |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | +APP: asked for review on #826 |
| 34 | + |
| 35 | +Timebox these first: |
| 36 | +### Dropping machine-readable function registry #815 |
| 37 | + |
| 38 | +APP: I have reviewed this, don’t see other reviews, would someone like to review this or should we collectively agree to merge it? |
| 39 | + |
| 40 | +Agreed to merge, with thumbs up from MIH and LCA |
| 41 | + |
| 42 | +### Default formats for :date, :time, and :datetime functions #813 |
| 43 | + |
| 44 | +APP: when I wrote this part of the spec for LDML#45, I used defaults from MDN and it turns out the defaults for DateTimeFormat is not one of the named long, medium, short etc. |
| 45 | + |
| 46 | +APP: what if the default is based on implementation? |
| 47 | + |
| 48 | +EAO: not in favor of default on implementation - would lead to weird things |
| 49 | + |
| 50 | +MIH: both in ICU and JDK the default is medium |
| 51 | + |
| 52 | +APP: does CLDR have a default? |
| 53 | + |
| 54 | +MIH: does not think so |
| 55 | + |
| 56 | +APP: it’s probably for historical reasons, also I’m not personally a huge fan of the enumerated keywords because they’re kind of historical and they’re not consistent across locales so I prefer for people to use skeletons or option bags so we could switch to either options bags or skeletons if we choose to add them later |
| 57 | + |
| 58 | +APP: right now with medium, you sometimes get a shortened month, sometimes you don’t. This is not so great |
| 59 | + |
| 60 | +MIH: Two things: I did something at some point to see if we can create the enums from skeletons, which are the same as options bags, just a different representation. Shane is working on semantic skeletons where they try to address this problem by having enums for each subtype |
| 61 | + |
| 62 | +EAO: the enums are locale specific - in Finnish using abbreviated month names is weird for example. EAO would prefer not getting stuck in a discussion about what is the best way to format dates in general, EAO would prefer we change away from short, is OK with medium, but would prefer long. short is weirdly abbreviated in many languages. Skeletons is beyond the scope of this specific PR |
| 63 | + |
| 64 | +MIH: vote for default (medium) |
| 65 | + |
| 66 | +APP: Do we want to propose medium as a default? |
| 67 | + |
| 68 | +EAO: Proposes long |
| 69 | + |
| 70 | +APP: I have a slight preference for medium |
| 71 | + |
| 72 | +Voting: |
| 73 | +- Long: EAO, USA |
| 74 | +- Medium: LCA, APP, MIH, HGO |
| 75 | +- Short: none |
| 76 | + |
| 77 | +USA and EAO can live with medium |
| 78 | + |
| 79 | +**Action item:** EAO to make change to PR |
| 80 | + |
| 81 | +### Unify input/local in data model #799 |
| 82 | + |
| 83 | +APP: we’ve had some previous discussion. Have we discussed feedback from MIH and and STA |
| 84 | + |
| 85 | +MIH: would prefer to keep as is, this simplification is not useful, STA feels similarly |
| 86 | + |
| 87 | +APP: Could you live with the change to remove that distinction? There’s a set of arguments for detecting the local input when … not sure if it goes too far in terms of oversimplifying. |
| 88 | + |
| 89 | +MIH: I think it goes too far, it’s not just about processing, the problem is that it unifies different concepts. |
| 90 | + |
| 91 | +LCA: I didn’t understand the semantic difference between the two earlier. |
| 92 | + |
| 93 | +MIH: |
| 94 | + |
| 95 | +LCA: What’s really interesting is that you think of them like function arguments, but the problem is that the function attributes is more like a .. if you think it terms of JS for instance you have a function that takes an argument and you still don’t |
| 96 | + |
| 97 | +APP: your mental model is the correct one, none of the input values are needed to be annotated. As programmers, we tend to think of our … |
| 98 | + |
| 99 | +EAO: One concern: building this into the data model has an issue that local variables can’t always be treated as what we consider local variables. So we can’t for .input or .local and change the following annotation and it might not work… the expectations are the same for both. In the data model specifically |
| 100 | +… |
| 101 | + |
| 102 | +MIH: You need to move that as in input or you could do it as a local variable. |
| 103 | + |
| 104 | +APP: You cannot do local for input. |
| 105 | + |
| 106 | +MIH: So they are different things. |
| 107 | + |
| 108 | +LCA: is it correct to assume that you have a linter rule that disallows variables that aren’t declared appropriately? |
| 109 | + |
| 110 | +MIH: if the input is there, it assumes that it came from the developer. It’s a promise that it is coming from outside and that I cannot mess with it. |
| 111 | + |
| 112 | +LCA: I thought input was a type annotation, but it also has a second function. It also creates a new resolved value with the formatting values that you have specified. |
| 113 | + |
| 114 | +APP: I push back to “remember this is the data model”, not the syntax. Will it matter if the internal structural representation in the data model infers input vs local given what the operand is. |
| 115 | + |
| 116 | +EAO: Do I understand right, in your POV, the first line can be expanded to B but not A? |
| 117 | +You have {$x :number} Into either: A) .input {$x :number} {{You have {$x}}} B) .local $y = {$x :number} {{You have {$y}}} |
| 118 | + |
| 119 | +LCA: What a formatting language that isn’t MF2 would turn into the data model? A language that has no semantic distinction between the two… |
| 120 | + |
| 121 | +EAO: When parsing a MF1 message in a MF2 context, we need to make this relatively abstract decision if we need a … and it’s easier not to have to make it at the data model level. |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | +## Key Discussions |
| 126 | + |
| 127 | +### Close out error handling (#816, #804) |
| 128 | + |
| 129 | +MIH: I was unhappy with the discrepancy and I couldn’t find any agreement between us on the subject. |
| 130 | + |
| 131 | +EAO: the part you’re concerned about is the requirement to be able to find out if a message has an error in it. |
| 132 | + |
| 133 | +MIH: what bothers me is that we force programming languages to do error handling a certain way. |
| 134 | + |
| 135 | +APP: we go out of our way to avoid specifying how errors are signaled. |
| 136 | + |
| 137 | +MIH: many systems have existing behaviors for error handling - we can not change them all. we should allow an implementation to have either throwing or fallback behaviour |
| 138 | + |
| 139 | +(There was a long unrecorded conversation about error handling omitted here due to losing our scribe mid-call. The net result was a call for balloting of the issue, to be done before the next telecon) |
| 140 | + |
| 141 | +## If time permits: |
| 142 | +### Whitespace/bidi handling (#811) |
| 143 | + |
| 144 | +APP: Need to consider whitespace interaction with isolates, particularly with regard to syntax validity. Being too strict here could result in user dissatisfaction. |
| 145 | + |
| 146 | + |
| 147 | + |
| 148 | +## Topic: AOB? |
| 149 | + |
| 150 | +Post-call discussion of bidi/whitespace with EAO, APP, MIH, RGN |
0 commit comments