> On Mar 26, 2025, at 13:24, Robert Elz <k...@munnari.oz.au> wrote:
> 
> You're totally misunderstanding the problem.   The tzcode part is almost
> 100% irrelevant in all of this, updates to that are rarely all that
> important, and no-one much cares when downstream distributions incorporate
> them, typically there is a delay of several years between when some new
> feature there is added, and when it might start being used.

I mentioned it only because it's not uncommon for release-related timing to be 
complicated by data cohabitating with code. It's great if that's not an issue 
for tzdb, as it definitely has been an issue for other, perhaps more 
complicated projects. By asking that question, I was fishing for the historical 
perspective that Paul provided, not making an assertion.


>  | But I'm of the opinion that the decision of whether to accumulate
>  | changes or release them immediately as updates/patches should rest
>  | with those consumers.
> 
> It is all in publicly available git as I understand it, anyone able and
> willing to use git (which excludes me, I hate it) can fetch and update
> any time they want to.   Few do.

Putting my OS package maintainer hat back on, I can offer up a few reasons that 
can explain why few pull in updates external to any official tzdb release.

First, more effort and attention must be paid to track and maintain such 
out-of-release (OOR) changes and these OOR changes must be periodically 
reconciled. In some orgs, releasing packages with OOR changes can be harder to 
justify, take a longer approval track to implement, allot testing time, and 
release. In the case of tzdb, the process tends to get a lot smoother once the 
production of a patch is predicated on a tangible versioned release from 
upstream.

Taking in OOR changes also introduces a situation of version mismatch with 
upstream. For example, if I ship tzdb 1234a in my OS, and a country commits to 
a timezone change following that the release of 1234a, I have two options:

1. I can immediately pull in the new tzdb change from git and add it to my 
product's existing 1234a code, essentially creating a "1234a+" release of my 
own. I then run that through approvals, testing, and release; getting it into 
the hands of downstream customers and users as an update.

2. Wait, for a possibly unknown amount of time, until 1234b is released. The 
only delta between 1234b and 1234a may be just that one timezone change. I 
would then issue an update versioned as 1234b.

The problem with (1) is that I've put myself into a package management 
quandary. When 1234b comes out, it may be functionally indistinguishable from 
what I've created on my own, yet the versions will be mismatched due to my 
creation being based on 1234a + an OOR change. My more astute customers/users, 
especially ones in any area affected by the tzdb change, will see that I'm 
shipping "1234a", not the "1234b" that (officially) has their timezone's 
changes in it. This will introduce doubts that I must then make an effort to 
explain. When 1234b arrives, do I issue another patch that, essentially, 
changes nothing but can cause operational disruption? Or, do I true it all up 
when a presumed 1234c arrives, whenever that might happen?

The problem with (2) is the 1234b release, which would have the desired change, 
may come later than it could have. This shortens the amount of time available 
to integrate, test, and produce an update, and for users to plan out the 
patching of their systems. Despite not being in total control of how much lead 
time there is between a decree and when it comes into effect, as much time as 
possible is always, always appreciated.

Overall, I think life would be simpler if tzdb were rev'd as soon as a timezone 
change is known about, verified, and the relevant zone files updated in 
accordance with section 3 of BCP 175/RFC 6557. Months-long wait times so that 
any additional unrelated changes can be accumulated shouldn't really be a 
thing; it penalizes an entity who has already made their own decisions. 
Downstream consumers can choose to skip a release or not. Because it would be a 
proper release that's tagged, has a proper change log and announcement, the 
reference is not just some git commit hash. In the end, users can make the 
final decision whether to apply an update based on information that's traceable 
back to the very source.

In fact, delaying a tzdb release to accumulate unrelated timezone changes could 
give the wrong impression to the general public, as there is now the 
/appearance/ of some countries or locales having a different priority than 
others. I know that isn't the case at all, but the impression would be 
understandable and the tzdb team would be in a position of having to explain 
something that is kind of arbitrary in nature to folks who probably don't care 
for such details. The worst case would be if one country's updates are delayed 
being officially published due to another country's tz change decision being 
awaited, and those two countries happen to not be on the best of terms. 
Improbable, but not impossible, and easily avoidable. Failure of a government 
entity to notify IANA, and people here often resorting to scouring the news for 
timezone changes, is much more defensible reason for a late update. But, once 
we're aware of it and it's verified as fact, then I think it's definitely on 
"us" to get the change published, not just queued up for whenever.

Historical corrections/additions to the database can /probably/ have a more lax 
approach and be accumulated for the next release, perhaps with a timeout that 
triggers a release if something more pressing doesn't induce one first. Same 
with tooling/code changes short of a major bug that must be corrected.


/dale

Reply via email to