[prev in list] [next in list] [prev in thread] [next in thread]
List: kolab-format
Subject: timezones, question of
From: Till Adam <till () kdab ! net>
Date: 2009-02-04 20:04:57
Message-ID: 200902042104.59159.till () kdab ! net
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Folks,
while implementing support for native timezones on Windows in Kontact, I've
come across the fact that the spec (2.0rc7) specifies that all times shall be
UTC, without timezone information. Now, this is clearly a simple and
interoperable choice, and it works fine, so far. It does lead to a bit of lost
information, in some use cases, though, some of which happen to be used by me,
which got me thinking.
If, for example, I make an appointment "at 10 a.m. in Chicago", I very much
like the fact that Kontact (in 4.x) lets me specify a timezone along with the
meeting time, and then shows me that meeting relative to my current timezone
correctly. Once I've arrived in Chicago and change my timezone, the meeting is
again in the right place. When I select it, it shows the date and time along
with the timezone. That works great, as long as I use one of the other
backends, namely ics files, and not the Kolab backend. In the Kolab backend I
can still select the timezone when creating the event, but that timezone is
not explicitly saved with the event. Instead, it is converted to UTC on write.
The next time I open Kontact and the event is read, it shows in the right
place, but tells me it's an event in UTC, which I can now no longer map to a
place. Yes, there is a location in the event, and I'll likely know anyhow,
from what the event is, but still, information has been lost that I find
convenient to have around.
Assuming we actually wanted to solve this, and I'm not fully convinced we
should, we'd run into the interoperability problem of how to encode the time
zone information. RFC 2445 uses TZID, referencing the Olson timezone database,
but that isn't used in Windows, for example. ICAL solves this by allowing any
timezone id to be used and the description of that timezone to be shipped
along with the even as a VTIMEZONE component. That can then be reconstructed
on the other side. We could do the same in the Kolab format. Alternatively we
could standardize on the Olson format and map on read, on Windows. That'd be a
bother at least for Kontact on Windows, but I imagine also for the Outlook
connectors.
So I see three options, which I'd like your feedback on, dear interested
public:
1) leave things as is, and don't bother
2) implement the ical approach of a timezone description that is shipped along
3) come up with a standard timezone id format and map to local/native
representations on the client
Thanks for taking the time to read this and parse it,
Till
--
Till Adam
KDAB - platform independent software services
[Attachment #5 (text/html)]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" \
"http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" \
content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Monaco'; font-size:10pt; font-weight:400; \
font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Folks,</p> \
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">while implementing support for native timezones on Windows in \
Kontact, I've come across the fact that the spec (2.0rc7) specifies that all times \
shall be UTC, without timezone information. Now, this is clearly a simple and \
interoperable choice, and it works fine, so far. It does lead to a bit of lost \
information, in some use cases, though, some of which happen to be used by me, which \
got me thinking. </p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">If, for example, I make an appointment "at 10 \
a.m. in Chicago", I very much like the fact that Kontact (in 4.x) lets me specify a \
timezone along with the meeting time, and then shows me that meeting relative to my \
current timezone correctly. Once I've arrived in Chicago and change my timezone, the \
meeting is again in the right place. When I select it, it shows the date and time \
along with the timezone. That works great, as long as I use one of the other \
backends, namely ics files, and not the Kolab backend. In the Kolab backend I can \
still select the timezone when creating the event, but that timezone is not \
explicitly saved with the event. Instead, it is converted to UTC on write. The next \
time I open Kontact and the event is read, it shows in the right place, but tells me \
it's an event in UTC, which I can now no longer map to a place. Yes, there is a \
location in the event, and I'll likely know anyhow, from what the event is, but \
still, information has been lost that I find convenient to have around.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Assuming we actually wanted \
to solve this, and I'm not fully convinced we should, we'd run into the \
interoperability problem of how to encode the time zone information. RFC 2445 uses \
TZID, referencing the Olson timezone database, but that isn't used in Windows, for \
example. ICAL solves this by allowing any timezone id to be used and the description \
of that timezone to be shipped along with the even as a VTIMEZONE component. That can \
then be reconstructed on the other side. We could do the same in the Kolab format. \
Alternatively we could standardize on the Olson format and map on read, on Windows. \
That'd be a bother at least for Kontact on Windows, but I imagine also for the \
Outlook connectors.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">So I see three options, which I'd like your \
feedback on, dear interested public:</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">1) leave things as is, and \
don't bother</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">2) implement the ical approach of a timezone \
description that is shipped along</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">3) come up with a standard \
timezone id format and map to local/native representations on the client</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Thanks for taking the time to \
read this and parse it,</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Till</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">-- </p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Till Adam</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">KDAB - platform independent \
software services</p></body></html>
_______________________________________________
Kolab-format mailing list
Kolab-format@kolab.org
https://kolab.org/mailman/listinfo/kolab-format
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic