[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