[LEAPSECS] [time-nuts] Leap Quirks

Michael Sokolov msokolov at ivan.Harhan.ORG
Mon Jan 5 01:22:32 EST 2009


Hello all,

This discussion about the meaning of UNIX and POSIX time_t in terms of
UTC/TAI/whatnot that has just moved here from the time-nuts list has
pushed some of my religious hot buttons, so I feel the rhetorical
imperative to state my position.

But first a disclaimer: I absolutely do not care about POSIX because it
is a standard which I refuse to bow down to. I only care about UNIX,
the operating system that predates POSIX by at least a decade and a half.
I use Ancient UNIX systems which predate POSIX and will never-ever-ever
convert, so everything I say about UNIX time_t specifically applies to
non-POSIX, pre-POSIX and POSIX-defying UNIX systems, not to anything
POSIX-compliant. Examples of systems I'm talking about are UNIX
Version 7 from 1979, UC Berkeley's 4.3BSD from 1986 and my own
4.3BSD-Quasijarus from which I send this E-mail in the present.

All that talk about whether UNIX time_t is supposed to track UTC or TAI
or whatever is totally wrong. It has nothing to do with any kind of
precision timekeeping whatsoever, nor even with time itself in the
strict definition of that term. Instead it is defined as a rotation
angle of a wall clock. One good way to define Classic UNIX time_t would
be "the number of second marks by which the hands of a civil time clock
in Phoenix, Arizona have rotated since they displayed 1969-12-31T17:00:00".
(Or replace Phoenix, Arizona with any other civil jurisdiction that is
free of DST and adjust the time zone offset accordingly.)

The point is, it has everything to do with clocks in the non-precision
civil sense and nothing to do with time as seen by physicists and
metrologists. Once again, UNIX time_t measures the rotation of clock
hands on some city tower in Phoenix, Arizona, *not* time. If the hands
of a wall clock turn too slow or too fast relative to precision time,
time_t speeds up and slows down accordingly. Angle, not time!

And while we are at it, in my definition a clock has absolutely nothing
to do with time. A clock is a *civil* device (not a metrological one)
that tells people when to get up, when to go to bed, when to expect
meetings, phone calls, etc. and when to catch a bus to go to work or
school. It has *absolutely nothing* to do with time as defined by
physicists. (To be fair, it has nothing to do with Earth orientation
either, but the latter is a convenient reference to set clocks to in
the absence of a trusted higher civilisation.)

Of course those of you who choose to obey POSIX or whatever will probably
define time_t in some different way that takes precision timekeeping
into account and thus has some connection to time scales such as
UTC/TAI/whatever, but please realize that there are still non-POSIX
UNIX systems in the world and whenever you receive any kind of
communication over any network protocol from a non-POSIX UNIX system
under my control that contains a time_t value, that value will measure
the rotation angle of a clock in Phoenix, AZ, *NOT* time of any kind.
Nothing whatsoever to do with SI seconds or UTC or TAI, the units of my
time_t are tick marks on the round face of a Big Ben-style clock, not
SI seconds. (Unfortunately Big Ben itself doesn't qualify because they
probably muck with it for DST; same story with the Kremlin tower clock
in Moscow. Hence we need a civil clock of similar stature in a place
like Arizona where there's no DST abomination.)

MS


More information about the LEAPSECS mailing list