From: Oren Ben-K. <or...@be...> - 2003-12-05 17:31:48
|
I just went through the types specs, by way of preparing them for the coming-soon-now release candidate draft. I'd like to suggest the following two changes: - Rename 'special' keys to 'yaml' keys. That's a better capturing of their intent - the value associated with each such key is a YAML "thing" (a tag, an alias or an anchor). So the example becomes: # The following node should NOT be serialized this way. encoded YAML node : !yaml '!' : '!type' !yaml '&' : 12 = : value # The proper way to serialize the above node is as follows: node : !!type &12 value - Change the semantics of a timestamp without a time part to 00:00 UTC instead of 12:00 UTC. The current spec puts it at noon UTC of that date, on the grounds that no matter what time zone is applied to it, it remains within the same date. It turns out this isn't quite correct - there are both +12 and -12 time zones, believe it or not. So it only _almost_ works (though personally I feel that whoever lives at time zone +12 deserves all the time-related software bugs he gets. I mean, what were they *thinking*?). The main problem with the current interpretation is that it isn't how most code is written; people are used to truncating timestamp to obtain dates, which works fine, but to multiply dates by 24h to obtain time - which doesn't. Of course, this gets them into trouble with time zones... But time zones are a pain whatever we do. (Side rant: I was discussing date/time formats with a friend the other day and I hit upon the following format: yyyy-mm-dd[+hh:mm:ss[+tz]] For example: 2003-12-05+18:33:00+02 Using a "+" makes the timestamp a "single thing" again and is rather readable. It is also tempting to look at the result as an expression for computing the time in seconds in UTC: <day> + <time-of-day> + <time-zone>. Alas, the time zone sign is reversed... It always bugged me to write <time>+<tz>. You never add the <time> and the <tz>, it makes no sense. You have to compute <time> *minus* <tz> to get the UTC time. I guess having a standard, sensible date format has been a lost cause for decades. Given that we already promote a non-standard format (using white space), adding another non-standard format (using '+') is useless - an uncomfortable compromise between being standard and being readable. Oh well. But deciding on the interpretation of a date-only timestamp _is_ important. We'll be freezing things soon and I'd much rather not freeze it the wrong way. OK, off the soap box... :-) Thoughts, feedback, anything else you don't like in the spec? Have fun, Oren Ben-Kiki |