Below are copies of a couple of 1989 letters on the history of the time zone software.
Below is the version from my archive, which may be a bit easier to read: ============================================================== Date: Thu, 20 Apr 89 09:54:08 EDT From: uunet!ncifcrf.gov!elsie!ado (Arthur David Olson) Message-Id: <8904201354.AA15704@elsie> To: bostic@okeeffe.berkeley.edu, ncifcrf!bootme.auspex.com!guy Subject: Re: machine independence
Speaking of "the original ... work", how did this all get started, anyway?
The ultimate impetus was the legislation that changed the start of U. S. Daylight Saving Time from the last Sunday in April to the first Sunday in April. The proximate impetus was a mod.std.unix discussion on the subject. I've attached some of the early electronic mail. By 1/11/86 the format looked much as it does today. The "hard part" not dealt with in the 1/13/86 "distribution" was the text-format-to-binary-format converter (today's zic). --ado
From ado Mon Jan 6 10:28:48 1986 To: cbosgd!mark Subject: Daylight Savings Time Cc: seismo!philabs!linus!encore!necis!geo Status: O
Well, I'll admit that my first reaction to the idea of something on the order of "/etc/dstcap" was a smiley face. But over the weekend I thought about the matter some more. The result of the thinking was a sheet of paper with this on it:
eastern:\ :st=EST:\ :dt=EDT:\ :os=-21000:\ ... Now regardless of the way the above information is encoded, the questions are: Is there enough information present above to deal with the various Daylight Saving Time schemes that currently exist? Would the information be enough to deal with anything that US (or foreign) legislators are likely to dream up? Or does one *really* need to have something on the order of "/etc/dstinfo" (with a stack and arithmetic and such)?
--ado
From cbosgd!cbpavo.cbosgd.ATT.UUCP!mark Fri Jan 10 16:19:08 1986 remote from seismo Received: from cbosgd.UUCP by seismo.CSS.GOV with UUCP; Fri, 10 Jan 86 16:05:29 EST Received: from cbpavo.cbosgd.ATT.UUCP (cbpavo.ARPA) by cbosgd.ATT.UUCP (4.12/UUCP-Project/11.09.85) id AA17523; Fri, 10 Jan 86 15:04:29 est Received: by cbpavo.cbosgd.ATT.UUCP (4.24/3.14) id AA03218; Fri, 10 Jan 86 15:04:20 est Date: Fri, 10 Jan 86 15:04:20 est From: seismo!cbpavo.cbosgd.ATT.UUCP!mark (Mark Horton) Message-Id: <8601102004.AA03218@cbpavo.cbosgd.ATT.UUCP> To: elsie!ado, harvard!encore!encore!necis!geo Subject: Re: Daylight Savings Time
While I like your semantics, the format is horrible. I'd much prefer to see each year (or year range) in one place rather than have it scattered over 14 different days of the week. The format has to be something the average non-guru can understand. Termcap is a bit much for such people. Something easy like
Year Key Parm Time GMT offset 1970 3-sun 4 0200 -0400 1970 3-sun 10 0200 -0500 1971 3-sun 4 0200 -0400 1971 3-sun 10 0200 -0500 1972 3-sun 4 0200 -0400 1972 3-sun 10 0200 -0500 1973 3-sun 4 0200 -0400 1973 3-sun 10 0200 -0500 1974 julian 120 0200 -0400 1974 julian 306 0200 -0500 1975 julian 0 0200 -0400 1975 julian 366 0200 -0500 1976 3-sun 4 0200 -0400 1976 3-sun 10 0200 -0500
This could probably be translated into a handy binary format for ctime to use quickly. The parm is either the month number (for things like "3rd Sunday") or the Julian date on which to make the change. The above numbers are probably all wrong but you get the idea. You could have any number of changes in a year, although 2 would be common.
Mark
From ado Sat Jan 11 12:42:16 1986 To: cbosgd!mark Subject: DST Status: O
An alternate approach to allow for multiple time zones. Make the rules look like:
Rule Year(s) Month Day Time ST offset String MostUS -1973 Apr last-Sun 2:00 1:00 D MostUS -1973 Oct last-Sun 2:00 0 S MostUS 1974 Jan last-Sun 2:00 1:00 D MostUS 1974 Nov last-Sun 2:00 0 S MostUS 1975 Feb last-Sun 2:00 1:00 D MostUS 1975 Oct last-Sun 2:00 0 S MostUS 1976- Apr last-Sun 2:00 1:00 D MostUS 1976- Oct last-Sun 2:00 0 S Patron 1969- Apr last-Sun 2:00 1:00 D Patron 1969- Jul last-Sun 2:00 2:00 DD Patron 1969- Aug last-Sun 2:00 1:00 D Patron 1969- Oct last-Sun 2:00 0 S
and the Time Zone information look like
Name GMT offset Rule Abbreviation Eastern -5:00 MostUS E%sT Central -6:00 MostUS C%sT Pacific -8:00 MostUS P%sT Alaskan ? MostUS A%sT Hawaiian ? MostUS H%sT Patronian ? Patron P%sT
--ado
From ado Mon Jan 13 21:04:01 1986 To: cbosgd!mark Subject: The easy part of ctime() Status: O
The next letter from me should be a shell archive containing five files: Makefile timezone.h ctime.c try.c fake.c The important files are "timezone.h" which gives the format of "binary time zone information files," and "ctime.c" which makes use of the files. . .
From uunet!ncifcrf.gov!elsie!ado Thu Apr 20 17:43:40 1989 Return-Path: <uunet!ncifcrf.gov!elsie!ado> Received: from uunet.UUCP by auspex.com (4.0/SMI-4.0) id AA17457; Thu, 20 Apr 89 17:43:39 PDT Received: from FCS280S.NCIFCRF.GOV by uunet (5.61/1.14) with SMTP id AA12868; Thu, 20 Apr 89 20:07:19 -0400 Received: by fcs280s.ncifcrf.gov (4.0/NCIFCRF-1.0) id AA13367; Thu, 20 Apr 89 20:03:39 EDT Received: by elsie (4.0/SMI-4.0) id AA00691; Thu, 20 Apr 89 20:03:31 EDT Date: Thu, 20 Apr 89 20:03:31 EDT From: uunet!ncifcrf.gov!elsie!ado (Arthur David Olson) Message-Id: <8904210003.AA00691@elsie> To: guy@auspex.com Subject: Re: machine independence Status: RO
So do you remember how the rest of us (Elz, me, Bob Device, Bradley White, etc.) got involved?
I don't, but the computer does. (One advantage of working on image processing is big disks and lots of tapes.) There was a fair amount of mod.std.unix posting in early '86, kicked off by Mark Horton's original "How best to handle time conversion?" posting. Bob Devine responded since he'd been responsible for time stuff with an earlier employer; he was person who knew that astrologers had the best information about DST in the past. Robert Elz was motivated by the fact that the Australian government fiddled the DST rules down there for a visit by the Queen in March of '86. He boldly installed the early code just before the visit. Robert's changes to "date" to work with the new functions showed up in mod.sources in June of '86. Robert knew of your work before I did:
From munnari!kre Tue Aug 26 13:10:08 1986 remote from seismo . . . To: elsie!ado . . . Did Guy Harris (sun!guy) ever send you his mods to this stuff? He has made the compiled timezone files be in "standard" format so they can reside on one host on a net, and have others access them (by NFS or whatever), regardless of whether there's a mixture of Sun's vaxen, etc, with different byte orders & such.
Clearly the mods had been sent by the time that the "timezone mailing list" was announced in late '86:
From ado Mon Nov 24 19:58:54 1986 . . . To: tz Subject: seismo!elsie!tz ; new versions of time zone stuff
Now that we've moved from 4.1BSD to 4.3BSD here at elsie, I've set things up so that mail sent to seismo!elsie!tz will go to folks who've expressed an interest in time zone matters. . . Currently on the list: ado@elsie.UUCP chris@umcp-cs.UUCP mark@cbosgd.ATT.COM kre@munnari.OZ dlm@cuuxb.ATT.COM devine@vianet.UUCP bob@anvil.UUCP rgt@hpfcdg.UUCP guy@sun.UUCP . . . And now the real news: new versions of the time zone compiler, the ctime et al. library, and the time zone data are available. Guy Harris provided the bulk of the ideas and work that went into the new versions, but should be held innocent of any blame for errors since I've tinkered with Guy's work (in part to try for more compatibility with System V and the work of rgt@hpfcdg.UUCP, who's the time zone person at Hewlett-Packard). . . .
(How it is that I forgot after then how to spell compatibility is beyond me.) The mailing list saw a flurry of activity in December of '86, with an upcoming P1003 meeting due to try to figure out how to standardize time conversion; H-P was preparing an alternative proposal to "P.55," which was based on the table-driven stuff. As part of the flurry, John S. Quarterman (who carried the banner before P1003) got involved at kre's behest:
From seismo!munnari!kre Sun Dec 7 06:57:42 1986 . . . To: elsie!tz Cc: jsq@sally.utexas.edu Subject: timezone proposals for P1003 . . . I think things are getting way too complicated.
All P1003 needs (and all it should have) is a spec of the interface that programs should have to time conversions. . . . Robert Elz seismo!munnari!kre
ps: I have added a cc to John Quarterman, who I guess is as close as anyone to being my representative on P1003, given that I'm a usenix member... John, this is in response to some discussions over the HP proposals and other replated issues. elsie!ado can fill you in on what's been going on I think. There's a mailing list at elsie for tz discussions.
Bradley White first appears (at least in my back mail files) in early '87: (presumably after the P1003 meeting?); he was referred by. . .
From seismo!sun!guy Thu Feb 19 06:56:54 1987 ... To: elsie!ado Subject: Could you send him the latest version when it's ready? Cc: bww@k.cs.cmu.edu Status: RO
From: Bradley White <bww@k.cs.cmu.edu> Subject: Re: diffs for ctime.c for new DST rules, v7 systems To: guy@Sun.COM
Guy,
If you could send me (or point me at) a copy of Arthur Olson's "ctime" I will have it installed in CMU Mach/Unix. Hopefully this will aid in its dissemination. ...
--ado