Subj : alternative DateTime (ref: fts-0001.016)
To   : Alexey Vissarionov
From : Rob Swindell
Date : Fri Dec 18 2020 09:14 pm

 Re: alternative DateTime (ref: fts-0001.016)
 By: Alexey Vissarionov to Maurice Kinal on Sat Dec 19 2020 06:48 am

> Good ${greeting_time}, Maurice!
>
> 18 Dec 2020 06:36:54, you wrote to Andrew Leary:
>
>  MK> proposed DateTime = a string 19 bytes long.
>  MK> Format = "YYYY-MM-DD hh:mm:ss" where,
>  MK> YYYY = four digit year
>  MK> MM   = two digit month ranging from 01 to 12
>  MK> DD   = two digit day ranging from 01 to 31
>  MK> hh   = two digit hour ranging from 00 to 23
>  MK> mm   = two digit minute ranging from 00 to 59
>  MK> ss   = two digit second ranging from 00 to 59
>  MK> Since there is no room for the UTC offset DateTime should be set to
>  MK> UTC in order to avoid confusion. This format will ensure that the
>  MK> packed message is exactly the same byte length as specified in
>  MK> fts-0001.016 not counting the ASCII null charater that terminates the
>  MK> string as per packed MSG header specification for all header strings
>  MK> (eg To, From, subj, etc).
>
> I've only one question: how would the software distinguish that from older
> (legacy) date format?

That may be possible for *newer* software to make sense of multiple formats, including a new one, but there's option for *older* software to recognize a new format. There in lies the rub.

> Even if we want everyone migrating to the new software, there should be some
> transition period, while we _must_ (as in FTA-1006) maintain compatibility.

I think that transition period, for FidoNet, is: forever. :-)

> Given that, here's my proposal.
>
> The "Date:" kludge containing the date and time in RFC-3339 format with one
> variation - allow the space between the time and UTC offset. The "datestr"
> format for that would be "%F %T %:z" (try `date '+%F %T %:z'`).
>
> Rules:
> 0. The "Date:" kludge _must_ contain valid time in either "%F %T %:z" or "%F
> %T%:z" format.
> 1. Once the "Date:" kludge is present in a received message, the compatible
> software (that's aware of the "Date:" kludge) _must_ use the time from the
> kludge.
> 2. When composing a message, the compatible software _must_ fill the "Date:"
> kludge and _should_ fill the legacy header with the valid time (considering
> precision limitation) or it _may_ fill the legacy header with all zero
> bytes.

"all zero bytes" is not a backwards compatible date value, most likely causing the packet to be discarded as corrupted or just really old, by existing or old FidoNet software. I would mandate that the FTS-1 date field be set as defined in FTS-1.

> This would allow us to get rid of ancient software without breakind almost
> everything.
>
> Also, the example of the "Date:" kludge can be found in this my message :-)

I didn't see a "Date:" kludge in your message (I looked).