[tz] A simple solution to have zones merge into another zone

Paul Eggert eggert at cs.ucla.edu
Mon Jun 14 20:28:13 UTC 2021

On 6/14/21 6:42 AM, Alois Treindl wrote:

> The reason is my experience with the Shanks database in its software 
> version (not the book variant, which is nearly flat). > That one is full of jumps from one table to the other and back. It is
> extremely complicated to follow this as a human

I have never used Shanks's software and didn't know that it exposed its 
tables to users.

And although Shanks's books typically use "follow" only at the end of a 
time table, they sometimes use it earlier to good effect. For example, 
the Shanks International Atlas (6th edition) has a table for Melbourne 
which essentially says "use Sydney's table with these few exceptions", 
and the exceptions are not all at the start which means the Melbourne 
table has multiple "follow"s.

> Readability for humans has to be kept in mind.

Yes, but I expect that readability would be helped by having "follow" 
within tables so long as it's done reasonably, as the Shanks book does 
for Melbourne.

Part of the issue here is: what is the typical use case? For Shanks's 
books, the main idea is to present the illusion of a complete set of 
data for everywhere on the planet, and to make it easy to look up a 
timestamp history from a location. These books were 
automatically-generated from more-compact tables that are easier to 
maintain but harder to read.

For tzdb, we don't present the illusion of a complete timezone history 
for every location; instead the goal is merely to record histories since 
1970. Also, the tzdb source consists of easier-to-maintain but 
harder-to-read compact tables, with the idea that downstream software 
like 'zdump' can make the tables easier to read as needed. So the goals 
for tzdb's tables differ from the goals of Shanks's books.

In particular, a common scenario in tzdb is for two zones to split: 
formerly they were identical before 1970, but now they're different. For 
example, Pacific/Bougainville split from Pacific/Port_Moresby in 2014i. 
If we had had "follow" back then, I would have wanted to use it to say 
the equivalent of "Pacific/Bougainville is like Pacific/Port_Moresby 
before 2014-12-28 02:00, and here's what it looks like afterwards". But 
I couldn't do that if "follow" is only at the end.

Anyway, thanks for contributing the code to implement "follow" at the 
end; it's provided food for thought and perhaps we can see our way to 
implementing something along those lines. (Of course at first it would 
be used only in vanguard format.)

More information about the tz mailing list