libical: revert r1130 (VTIMEZONE transitions)

Patrick Ohly patrick.ohly at gmx.de
Sun Jun 21 23:52:15 PDT 2015


On Mon, 2015-06-15 at 17:44 -0400, Ken Murchison wrote:
> I haven't been paying attention to this thread. What are we calling exact and interoperable?

The "exact" ones are the ones which are based on reading the libc system
time zone definitions and replicating every single transition defined in
that database without trying to rebuild RRULEs. The result is very
lengthy and IMHO more suitable for local usage (use libical to calculate
times for events) and not so much for exchanging data.

The "interoperable" ones are what libical has done for years before
switching to the "exact" ones: calculate exactly one RRULE for winter
and summer time, based on the current year. The "exact" ones were
introduced to overcome limitations of this approach, like not being
correct when the rules were changed in the past. There were also plain
old bugs in the conversion code; not sure whether those were ever fixed.

I called the simple two-entry VTIMEZONEs "interoperable" because some
(simplistic) software expects that format and tries to match against an
internal time zone based on the offsets inside the VTIMEZONE, in
addition to checking the TZID itself against Olson names.

>  I have patches to my local copy of vzic that creates more
> consolidated VTIMEZONEs using RRULEs rather than RDATEs where
> appropriate. The output of expanding the VTIMEZONE matches what you
> get from zdump using the same source material (unpatched vzic produces
> incorrect data on some edge cases)  I'm not opposed to committing my
> patches but I might have to separate out the timezone distribution
> service (tzdist) specific bits.

Just so that I understand correctly, this is code which takes the Olson
database and turns that into time zone definitions to be shipped with
libical, right?

The Evolution developers and Linux distros moved away from that concept
because it doubled the distros' work required to keep an installation
updated when time zone definitions change: instead if shipping a new
libical and a new tzdata package, only tzdata needs to be updated and
libical will use the new definitions.

Having said that, your code definitely sounds interesting. Perhaps
package maintainers can be convinced to provide the Olson database
updates in two formats, once for libc and once for libical, the latter
generated using your code.

Bye, Patrick





More information about the libical-devel mailing list