|
| 1 | +# 17 February 2025 | MessageFormat Working Group Teleconference |
| 2 | + |
| 3 | +Attendees: |
| 4 | + |
| 5 | +- Addison Phillips \- Unicode (APP) \- chair |
| 6 | +- Eemeli Aro \- Mozilla (EAO) |
| 7 | +- Mark Davis \- Google (MED) |
| 8 | +- Mihai Nita \- Google (MIH) |
| 9 | +- Richard Gibson \- OpenJSF (RGN) |
| 10 | +- Shane Carr \- Google (SCA) |
| 11 | +- Manish मनीष Goregaokar |
| 12 | + |
| 13 | + |
| 14 | +**Scribe:** RGN |
| 15 | + |
| 16 | + |
| 17 | +## Topic: Info Share, Project Planning |
| 18 | + |
| 19 | +## Topic: PR Review |
| 20 | + |
| 21 | +*Timeboxed review of items ready for merge.* |
| 22 | + |
| 23 | +| PR | Description | Recommendation | |
| 24 | +| ----- | ----- | ----- | |
| 25 | +| \#1016 | Require select option to be set by a literal value | Discuss; Merge | |
| 26 | +| \#1015 | Drop the notation, compactDisplay and numberingSystem options | Discuss; Merge | |
| 27 | +| \#1014 | Drop the u:locale option | Discuss | |
| 28 | +| \#1013 | Require digit size option to support values 0-99 | Discuss | |
| 29 | +| \#1012 | Define optionality separately for each u: option | Discuss; Merge | |
| 30 | +| \#1011 | Require prioritizing syntax and data model errors | Defer to 48 | |
| 31 | +| \#1010 | Fix normative language in Notes | Merge | |
| 32 | +| \#1008 | Rationalize name-char | Discuss; Merge | |
| 33 | +| \#1007 | Preparing the specification for LDML47 release | Discuss; Merge | |
| 34 | + |
| 35 | +## Topic: Housekeeping Issues from PR List |
| 36 | + |
| 37 | +*\#1007 modifies the stability policy by removing an item. Let’s discuss that change before approving. Let’s also discuss the chair’s proposal to punt \#1011 to v48.* |
| 38 | + |
| 39 | +### Activating the stability policy (\#1007) |
| 40 | + |
| 41 | +\> Updates to this specification will not remove any syntax provided in this version. |
| 42 | + |
| 43 | +APP: I propose removing it because it is ill-defined and already subsumed by other text. It could otherwise cause problems later. |
| 44 | + |
| 45 | +APP: Any objections? |
| 46 | + |
| 47 | +\[no objections\] |
| 48 | + |
| 49 | +### Require prioritising syntax & data model errors (\#1011) |
| 50 | + |
| 51 | +EAO: Would we be able to change SHOULD to MUST in the future? If so, then I’m comfortable deferring, otherwise not. |
| 52 | + |
| 53 | +MED: Because this is a runtime concern, that should be fine. |
| 54 | + |
| 55 | +## Topic: Status of u:locale (\#1014) |
| 56 | + |
| 57 | +*Questions have been raised about keeping u:locale in the specification. Let’s discuss options (keep as-is, make Draft, remove, etc.)* |
| 58 | + |
| 59 | +APP: I think it makes sense to keep this in draft, allowing it to follow our normal process. |
| 60 | + |
| 61 | +## EAO: For historical reasons, the design doc is “expression-attributes”. |
| 62 | + |
| 63 | +MIH: Do we still \_need\_ attributes? |
| 64 | + |
| 65 | +EAO: Yes. |
| 66 | + |
| 67 | +APP: And with an independent design doc. |
| 68 | + |
| 69 | +APP: Any objections to retracting specifically u:locale? |
| 70 | + |
| 71 | +\[no objections\] |
| 72 | + |
| 73 | +## EAO: PR \#1014 has relevant test changes. |
| 74 | + |
| 75 | +MED: I think the tests need annotation corresponding with the feature’s status. |
| 76 | + |
| 77 | +EAO: In past discussion, we wanted identifying keys for optional features. |
| 78 | + |
| 79 | +MED: That’s going beyond what I’m talking about here. |
| 80 | + |
| 81 | +APP: I’ll make an issue. |
| 82 | + |
| 83 | +MED: Tests can go later than Wednesday. Drafts don’t need to be marked as MAY, SHOULD, MUST, since that status is irrelevant (and can be changed) |
| 84 | + |
| 85 | +## Define optionality separately for each u: option (\#1012) |
| 86 | + |
| 87 | +EAO: Would anyone object to making u:dir a MUST? |
| 88 | + |
| 89 | +APP: That \_seems\_ fine to me. |
| 90 | + |
| 91 | +MED: Maybe not right now? |
| 92 | + |
| 93 | +EAO: PR \#1012 sets separate requirement levels for u:id, u:dir, and u:locale. It seems like u:dir should be required. |
| 94 | + |
| 95 | +MED: I’d like more time to explore the consequences of changing to MUST. |
| 96 | + |
| 97 | +EAO: u:dir ends up not on functions, but on the implementation. |
| 98 | + |
| 99 | +APP: The change would require that every function annotation supports u:dir. |
| 100 | + |
| 101 | +EAO: OK, let’s not require u:dir support right now. |
| 102 | + |
| 103 | +## Topic: Unquoted Literal Syntax (\#1008) |
| 104 | + |
| 105 | +## *Mark has proposed a change to the unquoted set of chars. Let’s see if we can close this.* |
| 106 | + |
| 107 | +## EAO: I’m fine with this, but don’t see the point of including ZWSP in \`name\`. |
| 108 | + |
| 109 | +MED: The name of that format character is misleading; it’s not really a space. |
| 110 | + |
| 111 | +APP: Is there a possible exploit because it’s invisible? |
| 112 | + |
| 113 | +MED: Both XML and MessageFormat allow invisible characters. |
| 114 | + |
| 115 | +EAO: The only such confusion is that it allows for name-char to visually appear at the start of a name. |
| 116 | + |
| 117 | +MED: ZWSP is not the only such character. Omitting it would not actually protect from that. |
| 118 | + |
| 119 | +EAO: I wanted to raise the concern, but now we can move on. |
| 120 | + |
| 121 | +RGN: I support stable identifiers. Seems like a reasonable spot to draw the line for cutting off future debate. |
| 122 | + |
| 123 | +APP: Possibly relevant to external discussions as well. |
| 124 | + |
| 125 | +EAO: If \<ZWSP, DIGIT NINE\> is a valid identifier, then why not just \<DIGIT NINE\>? |
| 126 | + |
| 127 | +MED: Tradition. |
| 128 | + |
| 129 | +EAO: We probably already have a superset of what any surrounding environment supports; making the superset even wider seems inconsequential. Even dot is probably fine because of the surrounding context. |
| 130 | + |
| 131 | +MED: Such an expansion could be made in the future. |
| 132 | + |
| 133 | +## Topic: LDML47 Release Finalization, Approval, and Balloting |
| 134 | + |
| 135 | +*The LDML47 release is upon us. The PRs necessary to release v47 will be considered in this call. We will also discuss whether/how to approve the release. ICU-TC has proposed that we stabilize the specification and the functions :string, :number, and :integer and **not** stabilize the other functions.* |
| 136 | + |
| 137 | +\[agreement to close PR Require digit size to support values 0-99 \#1013; its typo fix will be incorporated into \#1007\] |
| 138 | + |
| 139 | +## Topic: ICU4X Objections to option=$variable (\#1006) |
| 140 | + |
| 141 | +*The ICU4X Technical Committee has concerns about assigning option values using variables in certain instances. They have produced a document explaining their position \[[here](https://docs.google.com/document/d/1ZJ2v8URmNuJh5E5w_CdLwk0hqOkK8pVUe44YFQuc1nY/edit?usp=sharing_eip&ts=67af6b78)\]. Reserving time to discuss MFWG’s reaction to this. Please read their document prior to the call.* |
| 142 | + |
| 143 | +*Manish suggests:* |
| 144 | +*For the purposes of the meeting today I think it is worth getting answers to two questions:* |
| 145 | + |
| 146 | +* *For the options ICU4X listed, does MFWG believe there are genuine use cases for allowing them to be set at run time via external input?* |
| 147 | +* *If not, does it make sense to disallow them being set in such a way, or will that be confusing to users?* |
| 148 | + |
| 149 | +Manish: ICU4X is particular about loading data. The options are good, but being able to affect them at runtime is not aligned with our philosophy. |
| 150 | + |
| 151 | +APP: Your technical reasoning is good, but have generally been liberal about options. |
| 152 | + |
| 153 | +APP: We already have a PR regarding :number/:integer selection. |
| 154 | + |
| 155 | +APP: notation and compactDisplay are indeed a concern. |
| 156 | + |
| 157 | +APP: I think we can address everything you have raised, possibly without special pleading. |
| 158 | + |
| 159 | +MIH: For u:locale, I can imagine relevance to users speaking multiple languages, which would not be known at design time. |
| 160 | + |
| 161 | +MIH: Could this be chosen per-function? |
| 162 | + |
| 163 | +MED: I don’t find MIH’s use case to be compelling. |
| 164 | + |
| 165 | +MED: Number selection could apply to arabic vs. native number forms. Maybe this should be marked as draft for LDML47? |
| 166 | + |
| 167 | +MED: But selector should not be dynamic. |
| 168 | + |
| 169 | +EAO: There are very necessary use cases for continuing to support variables as option values. |
| 170 | + |
| 171 | +EAO: PR Require select option to be set by a literal value \#1016 is a concrete fix. |
| 172 | + |
| 173 | +EAO: Runtime dependencies are not limited to variables in option values, but also e.g. host objects. |
| 174 | + |
| 175 | +APP: I think the spec should note that some options might not support variable values. |
| 176 | + |
| 177 | +Manish: Tooling is a good analogy, because it can nudge translators in the right direction vs. the wrong direction. |
| 178 | + |
| 179 | +Manish: We have not encountered use cases that go against our document, though we would definitely like to know about any that exist because it will also affect non-MessageFormat ICU4X applications. |
| 180 | + |
| 181 | +EAO: Imagine formatting a datetime object that encompasses some options. |
| 182 | + |
| 183 | +EAO: Regarding APP’s suggestion, it would not be incorrect but is not necessary to note that functions can distinguish and reject variable option values. |
| 184 | + |
| 185 | +RGN: So this PR \#1016 is providing a new requirement that functions can observe that difference? |
| 186 | + |
| 187 | +EAO: Yes. |
| 188 | + |
| 189 | +MED: Going back to APP’s question, I think the main spec should make clear that a MessageFormat implementation provides functions with that information. |
| 190 | + |
| 191 | +EAO: I can do that in a \[non-normative\] followup to \#1016. But I would like to merge this PR ahead of that. |
| 192 | + |
| 193 | +MED: The indirect introduction of normative requirements should be avoided. This must be more prominent than some implication in the functions section. |
| 194 | + |
| 195 | +EAO: Can we agree on provisional acceptance? |
| 196 | + |
| 197 | +MED: A followup seems fine to me as long as the point is addressed. |
| 198 | + |
| 199 | +APP: Are there objections to merging \#1016? |
| 200 | + |
| 201 | +\[no objections\] |
| 202 | + |
| 203 | +RGN: Specifically, implementations must provide functions with information allowing them to distinguish literals vs. variables and alter their behavior accordingly (including, in some cases, rejecting one of those classes with an error). |
| 204 | + |
| 205 | +EAO: I may need to iterate on the followup text for things like \`.local $a \= …\` with \`.local $b \= $a\` and eager vs. lazy concerns. |
| 206 | + |
| 207 | +## Drop the notation, compactDisplay, & numberingSystem options (\#1015) |
| 208 | + |
| 209 | +MED: These could be dropped entirely, or marked as draft. There seems to be no preference in the group, so I think the chair gets to decide. |
| 210 | + |
| 211 | +SFC: This is not a concern for LDML 47, but there is a question about options vs. functions. |
| 212 | + |
| 213 | +APP: NumberFormat and DateTimeFormat have historically been jammed with options, but over time we have tended to move in the other direction. But it should be considered carefully, because we might end up with a lot of utility functions. |
| 214 | + |
| 215 | +EAO: I have a preference to remove these options for a clean slate. |
| 216 | + |
| 217 | +MED: \[agrees\] |
| 218 | + |
| 219 | +\[no objections\] |
| 220 | + |
| 221 | +## Topic: Remaining ICU4X concerns |
| 222 | + |
| 223 | +SFC: The proposal is still allowing variable references in options. Bringing in the now-deferred drafts in LDML 48 or later would result in an inconsistency between options that allow variables vs. those that don’t. |
| 224 | + |
| 225 | +APP: That’s now already the case because of \`select\`. But there is a further question about divergent support across \*implementations\*. |
| 226 | + |
| 227 | +EAO: The current text for [Digit Size Options](https://github.com/unicode-org/message-format-wg/blob/2727a5a7a7223b622f3b4755593258ca392515b3/spec/functions/number.md#digit-size-options) already allows implementations to not support variable values. |
| 228 | + |
| 229 | +MED: I think that’s reading too much into it. This goes back to RGN’s point… without the information to distinguish variables vs. literals, a variable whose contents were valid… |
| 230 | + |
| 231 | +EAO: But implementations were not \*forbidden\* from passing along that information. |
| 232 | + |
| 233 | +RGN: I don’t think that text supports a reading that interacts in any way with literal vs. variable input. |
| 234 | + |
| 235 | +EAO: The original intent here was to remain untyped. |
| 236 | + |
| 237 | +SFC: I think this relates entirely to draft functionality, but for the record: if something is a MAY or RECOMMENDED, ICU4X is unlikely to implement it. |
| 238 | + |
| 239 | +MED: The things that we want everyone to be able to depend upon need to be MUSTs. |
| 240 | + |
| 241 | +APP: We do have a few MAYs, but I’m pretty sure that ICU4X will allow them. |
| 242 | + |
| 243 | +SFC: I laid out some rules of thumb in my document and in issue comments. |
| 244 | + |
| 245 | +APP: Would you object to inclusion of your document in our repository? |
| 246 | + |
| 247 | +SFC: Let’s work it out over email, but in general I do support that. |
| 248 | + |
| 249 | +MED: It would be interesting to have a companion document providing some general context about the specification. |
| 250 | + |
| 251 | +EAO: The MAY text regarding digit size options would probably be better as SHOULD. If an implementation supports e.g. integer types, those should really be acceptable as digit size options. |
| 252 | + |
| 253 | +## Fix normative language in notes (\#1010) |
| 254 | + |
| 255 | +MED: I have some comments. |
| 256 | + |
| 257 | +EAO: I’m fine with accepting the suggestions and then merging. |
| 258 | + |
| 259 | +## Topic: Issue review |
| 260 | + |
| 261 | +[https://github.com/unicode-org/message-format-wg/issues](https://github.com/unicode-org/message-format-wg/issues) |
| 262 | + |
| 263 | +Currently we have 40 open (was 38 last time). |
| 264 | + |
| 265 | +* 13 are tagged for 47 |
| 266 | +* 12 are tagged for 48 |
| 267 | +* 3 are tagged “Seek-Feedback-in-Preview” |
| 268 | +* 6 are tagged “Future” |
| 269 | +* 14 are `Preview-Feedback` |
| 270 | +* 5 are `resolve-candidate` and proposed for close. |
| 271 | +* 4 are `Agenda+` and proposed for discussion (see below) |
| 272 | +* 0 are ballots |
| 273 | + |
| 274 | +| Issue | Description | Recommendation | |
| 275 | +| ----- | ----- | ----- | |
| 276 | +| [935](https://github.com/unicode-org/message-format-wg/issues/935) | Well-formed vs. valid (particularly [https://github.com/unicode-org/message-format-wg/issues/935\#issuecomment-2529306693](https://github.com/unicode-org/message-format-wg/issues/935#issuecomment-2529306693)) | Discuss | |
| 277 | +| [724](https://github.com/unicode-org/message-format-wg/issues/724) | Message Format Unquoted Literals | Discuss | |
| 278 | +| \#866 | CLDR semantic datetime skeleton spec is nearly ready and MF2 should use it | Discuss | |
| 279 | +| | | | |
| 280 | + |
0 commit comments