@@ -387,6 +387,46 @@ Some identifiers are specific to given room versions, please refer to
387
387
the [ room versions specification] ( /rooms ) for more
388
388
information.
389
389
390
+ ### Standard Identifier Format
391
+
392
+ Throughout the specification some identifiers will mention they use the
393
+ "Standard Identifier Format", which is a common definition for how
394
+ identifiers are to be represented. Identifiers which are not explicitly
395
+ listed in this specification or do not use the Standard Identifier Format
396
+ have undefined grammar.
397
+
398
+ The requirements of identifiers using this format are:
399
+
400
+ * An identifier may not be less than one character or more than 255 characters
401
+ in length.
402
+ * Identifiers must start with one of the characters ` [a-z] ` , and be entirely
403
+ composed of the characters ` [a-z] ` , ` [0-9] ` , ` - ` , ` _ ` and ` . ` .
404
+ * Identifiers starting with the characters ` m. ` are reserved.
405
+ * Identifiers which are not described in the specification should follow the
406
+ Java Package Naming Convention to namespace their identifier. This is typically
407
+ a reverse DNS format, such as ` com.example.identifier ` .
408
+
409
+ This identifier format is intended for solely non-user-visible identifiers.
410
+
411
+ {{% boxes/note %}}
412
+ Identifiers which are accepted into the specification through the proposal process
413
+ are assumed to use this Standard Identifier Format unless explicitly mentioned
414
+ otherwise in the proposal.
415
+ {{% /boxes/note %}}
416
+
417
+ {{% boxes/note %}}
418
+ Identifiers can and do inherit grammar from this specification. For example, "this
419
+ identifier uses the Standard Identifier Format, though without the namespacing
420
+ requirements" - this means that ` m. ` is still reserved, but that implementations
421
+ do not have to use the reverse DNS scheme to namespace their custom identifier.
422
+ {{% /boxes/note %}}
423
+
424
+ {{% boxes/rationale %}}
425
+ ASCII characters do not have issues with homoglyphs or alternative encodings which
426
+ might interfere with the identifier's purpose. Additionally, using lowercase
427
+ characters prevents concerns about case sensitivity.
428
+ {{% /boxes/rationale %}}
429
+
390
430
### Server Name
391
431
392
432
A homeserver is uniquely identified by its server name. This value is
0 commit comments