Paul Eggert wrote:
I like Zefram's suggestion for allowing a multitier structure for the tz database. One way to do that would be to add a cutoff year to the Makefile. It'd default to 1970.
If this is a popular idea, I think I should expand a bit on how to deal with it. I alluded earlier to a problem in manual zone selection, where the user may be forced to choose between zones that are equivalent for eir purposes. The same approach really addresses both issues, and it's worth generalising. The essential process is to winnow a set of timezones so that only inequivalent zones remain. Equivalence is in general defined by the user, specifically by the user indicating a range of years that is of interest. The kind of cutoff discussed so far describes the lower end of the range; some applications would also benefit from being able to specify an upper end. From among the full set of zones we group together those that have the same behaviour within the user's year range, and the winnowed zone set is made up of one representative zone from each equivalence class. Following the principles that we already use to select a representative location for each zone, the representative zone for each class should normally be the one whose principal location has the greatest population. We therefore need to store these population figures, for this use as preference values. Once we've got this winnowing operation implemented, there are multiple places where we should use it. First (both most important and the best testbed) in manual zone selection, under tzselect and the like. tzselect should (optionally) accept a year range from the user, and as the final stage of selection offer the user a choice between only the representative inequivalent zones. In a multi-level selection process, such as the tzselect method involving selecting an ISO 3166 region and then a zone from those associated with that region, the winnowing would be applied to the limited set of zones remaining after the earlier stages of selection. To support different kinds of installation, we'd want to apply equivalence winnowing at build/install time. The sysadmin/packager specifies a year range, and only the representative inequivalent zones for that range get installed as distinct files. We'd want to install links for the equivalent zones that were winnowed out. Desktop/server OS builds will probably want to install everything; embedded devices can get a smaller set that only covers the actual application needs.
# Attic data
Thanks for posting this. -zefram