IMO it would have been ideal if UTS 35 and ICU had adopted Factory from the outset.
But ICU changing to Factory now after many years of Etc/Unknown would have significant compatibility issues. Many ICU callers expect "Etc/Unknown" to be returned by ICU for time zones that are not in CLDR. Callers could have used ICU's
getUnknown() method to avoid hardcoding, but judging by the
12.5K GitHub results for Etc/Unknown, not every developer got the memo. :-(
ICU generally avoids breaking changes like this. Given that ICU is UTS 35's largest implementation, it's unlikely that the Unicode folks would change the standard to something that ICU wouldn't be able to adopt.
Speaking of standards, for the last few years I've been helping to clarify parts of the ECMAScript spec that deal with time zones. Much of this
new spec text is documenting how CLDR uses and adapts TZDB data. I've been meaning to post here on the TZ list to share this link in case folks are curious how JS engines use TZDB. Also, thanks so much for maintaining TZDB! JS developers are grateful.
One unresolved issue in the ECMAScript spec is what to do about Etc/Unknown, because there's text in
ECMA-402 that all browsers violate:
No String may be an available named time zone identifier unless
it is a Zone name or a Link name in the IANA Time Zone Database
Although that language is from a PR of mine, I'm only describing existing behavior that has been in ECMAScript for
ten years. To finally get browsers into compliance with the spec, I was planning to document Etc/Unknown as a special case in ECMA-402, but before proposing that change I wanted to check if there was interest in adding Etc/Unknown to TZDB instead.