-
Notifications
You must be signed in to change notification settings - Fork 244
Description
Previous discussion: #4889, #6227 (comment)
Current open issues/PRs related to this:
- Remove
Hijri<AstronomicalSimulation>simulation code #7301 - Use an any-calendar without simulated Hijri in FFI #7314
- Avoid claiming that HijriSimulated corresponds to islamic-rgsa #7311
- Add
JuliantoAnyCalendar#7224
(please, please, add links to more if you remember them. IME these are really annoying to find when you need to)
Most recent ICU4X WG discussion: #7301 (comment)
We've been having a lot of discussions lately about AnyCalendar and what goes into it. I'm filing this issue to have a searchable place to discuss this, and consolidate discussion across these issues.
The history and status quo
Currently, AnyCalendar contains all ICU4X supported calendars except Julian, including HijriSimulated (Mecca) and JapaneseExtended.
This type was primarily designed to support FFI, browsers, and in general users wanting to write calendar-agnostic code. We wanted to focus on i18n-usable calendars, there was a discussion early on whether Julian should be a part of it and we decided it shouldn't. By "i18n-usable" I mean things that people would actually want to use on their systems, for e.g. date formatting.
JapaneseExtended was based on the initial CLDR era set, but discussions in Temporal and elsewhere showed that that era set isn't actually that usable. We initially planned on removing it, but we moved away from that decision (I no longer agree with my position there), and for 2.0 still had it in AnyCalendar.
Henri talks a bit about islamic-rgsa's history here. From ICU4X's side, we initially adopted it because ECMA and CLDR seemed to consider it a real calendar, but further investigation showed that while islamic-rgsa was intended to mean something when originally designed, it never really took off so as far as computer behavior is concerned it's basically meaningless. It took a while for Temporal to settle on this, but at this point we're in a state where we really should not be including this calendar with the others in AnyCalendar.
Policywise there is general consensus that the bar for including calendars in icu_calendar is low1 (really, more of a maintainence question than anything else), and the actual careful bar is for AnyCalendar, but there's no clear consensus on what AnyCalendar should have.
Open questions
(All tied together and should be considered together)
- AnyCalendar is a stable type. What is its future? What is the bar for inclusion in AnyCalendar? What should we exclude from AnyCalendar?
- Should
icu_calendarexport multiple AnyCalendar-like types with different purposes? What should they be? What are the policies for inclusion there?- What happens to the AnyCalendarKind enum? Do we have multiple per-aggregate enums?
- Should
icu_calendarexport a way to cobble together your own AnyCalendar (Addmake_any_calendarmacro #7312)
Useful terminology for this discussion: We've been using GoodCalendar and AllCalendars to distinguish between AnyCalendar impls that are restricted to "good" calendars vs ones that contain every supported calendar. Whether or not AnyCalendar is one of these (or neither!) is a part of that discussion, but the names help.
Footnotes
-
Though now that Hijri and EastAsianTraditional are parametrized, we might want to revisit that policy for those calendars, as a part of stabilizing https://github.com/unicode-org/icu4x/issues/6962 ↩