Skip to content

Commit 960f800

Browse files
authored
Change standard/optional to required/recommended (#946)
* Change standard/optional to required/recommended Per 2024-11-18 teleconference * Update design to (mostly) match
1 parent d7b5580 commit 960f800

File tree

2 files changed

+30
-30
lines changed

2 files changed

+30
-30
lines changed

exploration/maintaining-registry.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ _What is this proposal trying to achieve?_
2020

2121
Describe how to manage the registration of functions and options under the
2222
auspices of MessageFormat 2.0.
23-
This includes the Standard Functions which are normatively required by MF2.0,
23+
This includes the REQUIRED Functions which are normatively required by MF2.0,
2424
functions or options in the Unicode `u:` namespace,
2525
and functions/options that are recommended for interoperability.
2626

@@ -35,7 +35,7 @@ The terms "registry" and "default registry" suggest machine-readbility
3535
and various relationships between function sets that the working group decided
3636
was not appropriate.
3737

38-
MessageFormat v2 includes a standard set of functions.
38+
MessageFormat v2 includes a REQUIRED set of functions.
3939
Implementations are required to implement all of the _selectors_
4040
and _formatters_ in this set,
4141
including _operands_, _options_, and option values.
@@ -45,7 +45,7 @@ runtimes in a wholly consistent manner.
4545
Because we want broad adoption in many different programming environments
4646
and because the capabilities
4747
and functionality available in these environments vary widely,
48-
this standard set of functions must be conservative in its requirements
48+
this REQUIRED set of functions must be conservative in its requirements
4949
such that every implementation can reasonably implement it.
5050

5151
Promoting message interoperability can and should go beyond this.
@@ -56,15 +56,15 @@ Another way to say this is that, ideally, there should be only one way to
5656
do a given formatting or selection operation in terms of the syntax of a message.
5757

5858
This suggests that there exist a set of functions and options that
59-
extends the standard set of functions.
59+
extends the REQUIRED set of functions.
6060
Such a set contains the "templates" for functions that go beyond those every implementation
6161
must provide or which contain additional, optional features (options, option values)
6262
that implementations can provide if they are motivated and capable of doing so.
6363
These specifications are normative for the functionality that they provide,
6464
but are optional for implementaters.
6565

6666
There also needs to be a mechanism and process by which functions in the default namespace
67-
can be incubated for future inclusion in either the standard set of functions
67+
can be incubated for future inclusion in either the REQUIRED set of functions
6868
or in this extended, optional set.
6969

7070
### Examples
@@ -183,29 +183,29 @@ a _selector_,
183183
or both.
184184

185185
The specification will indicate if the _formatting function_,
186-
the _selector function_, or, where applicable, both are `Standard` or `Optional`.
186+
the _selector function_, or, where applicable, both are `REQUIRED` or `RECOMMENDED`.
187187
The specification must describe operands, including literal representations.
188188

189189
The specification includes all defined _options_ for the function.
190190
Each _option_ must define which values it accepts.
191-
An _option_ is either `Standard` or `Optional`.
191+
An _option_ is either `REQUIRED` or `RECOMMENDED`.
192192

193-
_Functions_ or _options_ that have an `Optional` status
193+
_Functions_ or _options_ that have an `RECOMMENDED` status
194194
must have a maturity level assigned.
195195
The maturity levels are:
196196
- **Proposed**
197197
- **Accepted**
198198
- **Released**
199199
- **Deprecated**
200200

201-
_Functions_ and _options_ that have a `Standard` status have only the
201+
_Functions_ and _options_ that have a `REQUIRED` status have only the
202202
`Released` and `Deprecated` statuses.
203203

204-
* An _option_ can be `Standard` for an `Optional` function.
204+
* An _option_ can be `REQUIRED` for an `RECOMMENDED` function.
205205
This means that the function is optional to implement, but that, when implemented, must include the option.
206-
* An _option_ can be `Optional` for a `Standard` function.
206+
* An _option_ can be `RECOMMENDED` for a `REQUIRED` function.
207207
This means that the function is required, but implementations are not required to implement the option.
208-
* An _option_ can be `Optional` for an `Optional` function.
208+
* An _option_ can be `RECOMMENDED` for an `RECOMMENDED` function.
209209
This means that the function is optional to implement and the option is optional when implementing the function.
210210

211211
A function specification describes the functions _operand_ or _operands_,
@@ -215,19 +215,19 @@ its formatting behavior (if any),
215215
its selection behavior (if any),
216216
and its resolved value behavior.
217217

218-
`Standard` functions are stable and subject to stability guarantees.
218+
`REQUIRED` functions are stable and subject to stability guarantees.
219219
Such entries will be limited in scope to functions that can reasonably be
220220
implemented in nearly any programming environment.
221221
> Examples: `:string`, `:number`, `:datetime`, `:date`, `:time`
222222
223223

224-
`Optional` functions are stable and subject to stability guarantees once they
224+
`RECOMMENDED` functions are stable and subject to stability guarantees once they
225225
reach the status of **Released**.
226-
Implmentations are not required to implement _functions_ or _options_ with an `Optional` status
226+
Implmentations are not required to implement _functions_ or _options_ with an `RECOMMENDED` status
227227
when claiming MF2 conformance.
228-
Implementations MUST NOT implement functions or options that conflict with `Optional` functions or options.
228+
Implementations MUST NOT implement functions or options that conflict with `RECOMMENDED` functions or options.
229229

230-
`Optional` values may have their status changed to `Standard`,
230+
`RECOMMENDED` values may have their status changed to `REQUIRED`,
231231
but not vice-versa.
232232

233233
> Option Examples `:datetime` might have a `timezone` option in LDML46.
@@ -251,7 +251,7 @@ In such cases, the `u:` namespace version is retained, but deprecated.
251251
> but it is not universally available and could represent a barrier to adoption
252252
> if normatively required.
253253
254-
All `Standard`, `Optional`, and Unicode namespace function or option specifications goes through
254+
All `REQUIRED`, `RECOMMENDED`, and Unicode namespace function or option specifications goes through
255255
a development process that includes these levels of maturity:
256256

257257
1. **Proposed** The _function_ or _option_, along with necessary documentation,
@@ -260,12 +260,12 @@ a development process that includes these levels of maturity:
260260
During this period, changes can still be made.
261261
3. **Released** The _function_ or _option_ is accepted as of a given LDML release that MUST be specified.
262262
4. **Deprecated** The _function_ or _option_ was previously _released_ but has been deprecated.
263-
Implementations are still required to support `Standard` functions or options that are deprecated.
263+
Implementations are still required to support `REQUIRED` functions or options that are deprecated.
264264
5. **Rejected** The _function_ or _option_ was considered and rejected by the MF2 WG and/or the CLDR-TC.
265265
Such items are not part of any standard, but might be maintained for historical reference.
266266

267267
A proposal can seek to modify an existing function.
268-
For example, if a _function_ `:foo` were an `Optional` function in the LDMLxx release,
268+
For example, if a _function_ `:foo` were an `RECOMMENDED` function in the LDMLxx release,
269269
a proposal to add an _option_ `bar` to this function would take the form
270270
of a proposal to alter the existing specification of `:foo`.
271271
Multiple proposals can exist for a given _function_ or _option_.

spec/registry.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# MessageFormat 2.0 Default Function Registry
22

3-
This section defines the **standard** _functions_ which are REQUIRED for conformance with this specification,
4-
along with **optional** _functions_ that SHOULD be implemented to support
3+
This section defines the **REQUIRED** _functions_ which are REQUIRED for conformance with this specification,
4+
along with **RECOMMENDED** _functions_ that SHOULD be implemented to support
55
additional functionality.
66

77
To **_<dfn>accept</dfn>_** a function means that an implementation MUST NOT
@@ -16,16 +16,16 @@ Implementations MAY emit an _Unsupported Operation_ error for _options_
1616
or _option_ values that they cannot support.
1717

1818
_Functions_ can define _options_.
19-
An _option_ can be **standard** or **optional**.
19+
An _option_ can be **REQUIRED** or **RECOMMENDED**.
2020

21-
Implementations MUST _accept_ each **standard** _function_ and
22-
MUST _accept_ all _options_ defined as **standard** for those _functions_.
21+
Implementations MUST _accept_ each **REQUIRED** _function_ and
22+
MUST _accept_ all _options_ defined as **REQUIRED** for those _functions_.
2323

24-
Implementations SHOULD _accept_ each **optional** _function_.
24+
Implementations SHOULD _accept_ each **RECOMMENDED** _function_.
2525
For each such _function_, the implementation MUST accept all _options_
26-
listed as **standard** for that _function_.
26+
listed as **REQUIRED** for that _function_.
2727

28-
Implementations SHOULD _accept_ _options_ that are marked as **optional**.
28+
Implementations SHOULD _accept_ _options_ that are marked as **RECOMMENDED**.
2929

3030
Implementations MAY _accept_ _functions_ not defined in this specification.
3131
In addition, implementations SHOULD provide mechanisms for users to
@@ -35,15 +35,15 @@ an implementation-defined or user-defined _namespace_.
3535

3636
Implementations MAY implement additional _options_ not defined
3737
by any version of this specification
38-
for **standard** and **optional** functions.
38+
for **REQUIRED** and **RECOMMENDED** functions.
3939
Such _options_ MUST use an implementation-specific _namespace_.
4040

4141
Implementations MAY _accept_, for _options_ defined in this specification,
4242
_option_ values which are not defined in this specification.
4343
However, such values might become defined with a different meaning in the future,
4444
including with a different, incompatible name
4545
or using an incompatible value space.
46-
Supporting implementation-specific _option_ values for **standard** or **optional** functions is NOT RECOMMENDED.
46+
Supporting implementation-specific _option_ values for **REQUIRED** or **RECOMMENDED** functions is NOT RECOMMENDED.
4747

4848
Implementations MAY _accept_, for _operands_ or _options_ defined in this specification,
4949
values with implementation-defined types.

0 commit comments

Comments
 (0)