Subject: #1416 Injection-Date - Summary of options

From: "Charles Lindsey" <[email-masked]>
Date: Tue, 20 Mar 2007 13:51:24 GMT

I think we have now said everything that is to be said on this, so I have
produced a summary of where I think we have got to.

It lists rules for what various agents are supposed to do with
Injection-Date in various situations. Most of these are, I think, agreed
(and they differ quite a bit from our starting point in the two versions
of USEPRO and in assumptions made at the start of this thread, so that at
least indicates some progress).

There still remains the two conflicting possibilities (labelled IC and IR
in this summary) that we have to choose between, though I think we
understand the consequences of each better than we did.

So please can we read this summary and agree (or not) that it fairly
represents what we are agreed and disagreed on, and maybe tune it if it
doesn't. Hopefully, we can then choose between IC and IR and move on.

-------------------------------------------------------------------------

The following rules are mostly agreed (and indeed some are already in the
present USEPRO). They are all included to give a complete picture. Note that
these are indications of what is supposed to happen, and not wordings ready
for use in the document.

The chief issue is to choose between Rules IC and IR, for which the several
"Good/Bad News" paragraphs need to be studied. Neither Rule is perfect. It
is a question of whether a little pain should be endured for the benefit of
an ultimate gain. In either case, the Sky will not Fall In - the worst is
that an occasional article might be seen twice at some server.

Posting agents:
---------------

P1. MAY omit various headers from proto-articles (specifically Message-ID,
Date, Path).

P2. But should (with a small 's') not omit Date (because we are following
the RFC 2822 idea that Date reflects time of composition).

   NOTE P2: This practice is already widespread, and growing, but it works
   against the man whose injections are significantly delayed after
   composition time; hence P5 below.

P3. MUST include Message-ID and Date if article is to be injected at
multiple injecting agents (and the same at each injecting agent, of course).

P4. MAY include Injection-Date indicating time of actual injection (as
opposed to composition).

P5. SHOULD/should include Injection-Date if injection time is significantly
later than composition time.

   Good News P5: A certain cure for the man with delayed injection problems;

   Bad News P5: Posting agents tend not to get upgraded with such
   new-fangled ideas until long after servers have adopted them. But at
   least this man has a strong incentive to upgrade (once he is aware of the
   possibility).

P6. When injecting at multiple injecting agents, MUST include Injection-Date
which MUST then indicate time of earliest injection at any such agent.

Injecting Agents:
-----------------

I1. MUST insert Date and Message-ID when absent and insert/extend PATH.

I2. MUST/SHOULD remove/rename Injection-Info (plus NNTP-Posting-*, X-Trace,
etc.) and SHOULD provide fresh Injection-Info. MAY reject (reinjected)
articles already containing those headers.

I3. MUST/SHOULD insert Injection-Date when Injection-Date is absent AND
(either Date OR Message-ID is absent).

   NOTE I3: But see IC and IR below for further details.

I4. MUST NOT insert (or alter or delete) Injection-Date if it is already
present.

   NOTE I4: That is to prevent re-acceptance problems arising from
   unanticipated (and unpreventable) "leaks" between small private networks
   and major networks such as Usenet. But see E1 for how a gateway might do
   such tricks.
 
We disagree on the following two possibilities:
 
IC. Injecting agents MUST insert Injection-Date when it is absent (unless
it is apparent that this is a reinjection).

   Good News IC: This provides immediate beneffit to the posting agent which
   has delayed injection, even if P5 is not implemented.

   Bad News IC: Until multi-injecting sites can be assumed to have
   implemented P6 this can cause re-acceptance of articles at later relaying
   agents if one of the multi-injected versions suffers substantial delay en
   route. So the existing behaviour is changed to that extent.
 
IR. Injecting agents MUST NOT insert Injection-Date if both (Date AND
   Message-ID are already present).

   Good News IR: Inverse of the Bad News IC.

   Bad News IR: Posting agents with delayed injection see no benefit
   unless/until they implement P5.

Relaying and Serving Agents:
----------------------------

R1. MUST discard incoming articles whose Injection-Date (or Date if
Injection-Date is absent) predates the earliest articles of which it keeps
record (or if more than 24 hours into the future, etc.).

That "earliest articles of which it keeps record" might be reworded (see my
reply to Frank on March 1st). The essential question is "if this article had
arrived X days ago, would I still be recording that fact?" (which allows for
different retentions for different groups, etc). And maybe it records the
time of arrival, or the original Date header, or whatever (about which I
don't think we care).

Gateways:
---------

And especially Gateways from one Netnews system A to another one B, in
particular from small private one-node networks into Usenet:

G1. MUST retain all headers as received (including in particular Date and
Injection-Date), unless some EXCEPTION applies, as listed below.

G2. MUST hand article to an injecting agent, or else perform all the duties
on an injecting agent (except perhaps insertion of Injection-Date)
themselves and then relay.

EXCEPTIONs:
-----------

These are the tricky bits

E1. An existing Injection-Date MAY be removed, but ONLY IF

a) There is no possibility that another Gateway (direct or indirect) between
those networks exists (which includes all manner of "leaks" by other nodes
in A over which the gatewayer has no control).

b) The article had not been previously gatewayed from B into A (i.e. it had
been originally posted by a user of A).

   NOTE: That covers the man who carries his private server around on a
   laptop, and other users of suck/rpost, but if covers very little else.

   NOTE: It is safer to allow gateways (which hopefully understand the
   circumstances of the particular article) to do any tinkering with
   Injection-Date than for injecting agents to do it; Hence Rule I4.

E2. Other evidence of injection within network A (e.g. Injection-Info,
NNTP-Posting-*, etc) MAY be removed, but ONLY IF

a) The gatewaying is to use an injecting agent which would not otherwise
allow reinjection.

   NOTE: That screams of "cheating", "horrible hacking", etc. So be it.
   Perhaps it is better not mentioned.

E3. Are there any other exceptions we need to mention explicitly?

-- 
Charles H. Lindsey ---------At Home, doing my own thing------------------------
Tel: +44 161 436 6131 Fax: +44 161 436 6133   Web: http://www.cs.man.ac.uk/~chl
Email: [email-masked]      Snail: 5 Clerewood Ave, CHEADLE, SK8 3JU, U.K.
PGP: 2C15F1A9      Fingerprint: 73 6D C2 51 93 A0 01 E7 65 E8 64 7E 14 A4 AB A5