[LEAPSECS] RIP dmr, -893400000 to 1318100000

Poul-Henning Kamp phk at phk.freebsd.dk
Thu Oct 13 18:32:14 EDT 2011



I guess I need to cut it out of thicker cardboard if want
to avoid Rob overinterpreting and twisting things to his
Campaign For Real Time:

I met Dennis Richie over breakfast the june 18th 1998 during
the USENIX ATC conference in New Orleans.

He specifically sought me out because somebody had slipped him a
copy of my "Malloc Revisited" paper, and I quite frankly had no
idea who I was breakfasting with, until at good five minutes into
the conversation.

Once I realized who I was talking to, I sought clarification of the
origin of a number of UNIX arcanae, such as the origin of the device
nodes hack (I had written DEVFS), the choice of epoch, the lack of
leapseconds (I was busy writing timecounters) and so on.

With respect to time(_t) he told me that the first UNIX clock was
only 16 bits and kept time in seconds relative to boot ("with plenty
of bits to spare since the machine had no address-space protection"),
and a blackboard usually had an approximate boot-time written in
chalk.

After some intermediate experiements with 32 bit milliseconds,
they went with 32 bit seconds and nailed epoch at a nice round
date, far enough in the past to contain all their existant
file timestamps: 1970-01-01 00:00:00 local time.

Some weeks later they realized the timezone/DST issue, and
changed the definition to ...00:00 UTC, and yes, he said "UTC"
and I asked if the said "UTC" or "GMT" back then, and he said
"It was always UTC".

The wrist-watch time ("Usually Kens, since he came into office
before me") went into the computer instead of on the black-board.

The computer RTC was driven by the mains frequency, and as long as
the clock were accurate to within some minutes, nobody cared about it.

Leap seconds were not even mentioned until the Sys V timeframe,
with the comodization and documentation of the UNIX system, from
where the current rationale in the POSIX/Open Group standard comes:

"However, not only do most systems not keep track of leap
seconds, but most systems are probably not synchronized to
any standard time reference."

The fact that they called the function gmtime() has more to do with
programmer humor and the limitations of the symbol table in the
compiler toolchain, than it has with any deeper cultural understanding
of timekeeping history, of which Dennis assured me neither of them
had any.

And that's all there is to that...

RIP.

--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.


More information about the LEAPSECS mailing list