[tz] TZDB use cases

Paul Eggert eggert at cs.ucla.edu
Sat Oct 2 02:08:03 UTC 2021

Thanks for starting this discussion. I looked at your email’s subject 
line and wrote up some thoughts about the stated topic, as I figured 
it’d be good to think independently at first so that we could see two 
fresh approaches. Here are those thoughts. (I will comment on your email 
more directly in a followup message.)


Knowing one’s users is important when thinking about use cases, so I’ll 
start by listing tzdb users, as follows. This list is in no particular 
order and is surely incomplete.

* End users who don’t want to worry about timestamp conversion. They 
want conversion between UT and local time to work correctly with a 
minimum of fuss.

* Administrators who set up default timezones for sets of devices under 
their administration.

* Users or downstream projects that care only about leap seconds 
(notably, NTP users consuming the leap-seconds.list file).

* Downstream projects that package TZif files for delivery to their 
users as part as OS releases or patches.

* Downstream projects that communicate TZif files or other TZDB-derived 
data to their users via TZDIST (Internet RFC 7808) or other network 

* Downstream projects that translate TZif files into some other format, 
that is then communicated to their users.

* Downstream projects that translate tzdb source files into some 
non-TZif format, which is then communicated to their users somehow.

* Downstream projects that produce timezone choosers (programs that let 
user choose a timezone setting), either via global positioning, or 
selecting from a map, or selecting via a textual interface.

* Downstream projects that produce fancier interfaces, such as 
extracting timezone histories, comparing two timezone histories, and 
examining tzdb’s own history.

* Downstream projects that infer metadata from the tzdb source code, 
metadata that are not explicit in the source.

* Downstream projects that use tzcode.

* Governments that change timezone rules and need to have tzdb updated.

* Humans reading tzdb source files, for understanding of timezone history.

* Timezone historians who might find corrections to old data, or who 
might find old data not currently present in the database.

* Activists who want governments to change timezone rules.

* Activists who want tzdb to highlight their concerns.

* Researchers who study the timezone data and its evolution as 
interesting objects in their own right.

* Maintainers who have limited resources to accommodate all the above.

Given the above, here are some use cases. This list also is in no 
particular order and is surely incomplete.

* Convert near-future or near-past timestamps.

* Convert far-future or distant-past timestamps.

* Select which timezone to use, either by default or for an individual 

* Determine what the conversion rules are, e.g., what rules are used for 
spring-forward and fall-back.

* Assess conversion accuracy.

* Determine the source of the data used for conversions.

* Assess the consensus level of timezone data, since in some cases the 
rules were significantly disputed by the people in charge of clocks at 
the time. Also, rules may be disputed now by timezone historians.

* Patch a distributed tzdb for use further downstream.

* Update a local copy of tzdb because of a new tzdb release or patchset.

* Respond to queries about why tzdb is the way it is.

* Update conversion of previously-converted timestamps after tzdb changes.

* Update tzdb because governments changed the rules.

* Update tzdb because errors were found.

* Update tzdb because data entries are dubious or disputed.

* Update tzdb because it unfairly discriminates (or appears to 
discriminate) in favor of some countries, ethnic groups, etc.

* Update downstream code from tzcode, even if the downstream code has 
been patched.

* Update a downstream database that contains tzdb data, perhaps in a 
different form and perhaps with a superset of a subset of tzdb, and 
perhaps patched in its own way.

* Derive different versions of timezone data for different needs.

More information about the tz mailing list