Subject: Re: Adrian Farrel's Discuss on status-change-http-status-code-308-ps-01: (with DISCUSS)

From: Julian Reschke <[email-masked]>
Date: Tue, 30 Dec 2014 11:19:32 +0100

On 2014-12-30 10:58, Adrian Farrel wrote:
> Adrian Farrel has entered the following ballot position for
> status-change-http-status-code-308-ps-01: Discuss
>
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
>
>
>
> The document, along with other ballot positions, can be found here:
> http://datatracker.ietf.org/doc/status-change-http-status-code-308-ps/
>
>
>
> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
>
> I'd make an argument that the Standards Track version of this work
> should be an Update of 7231 since it changes a statement made in that
> RFC.
>
> ---
>
> 7238 says...
>
>     Therefore, initial use of status code 308 will be restricted to cases
>     where the server has sufficient confidence in the client's
>     understanding the new code or when a fallback to the semantics of
>     status code 300 is not problematic.
>
> How is this text valid in the Standards Track revision of this document?

It reflects reality, so it is valid, no matter how the document is 
published.

If the spec was revised for publication as Proposed Standard, we'd 
likely keep this information.

> ...

Best regards, Julian

---

From: Julian Reschke <[email-masked]>
Date: Tue, 30 Dec 2014 11:32:51 +0100

It's not supposed to. Could you please elaborate?

Best regards, Julian

---

From: Julian Reschke <[email-masked]>
Date: Tue, 30 Dec 2014 11:46:17 +0100

On 2014-12-30 11:31, Adrian Farrel wrote:
> Thanks Julian,
> So I'm wondering what "initial" means in this context. For an experimental RFC I interpret it as "while this is an experimental extension". For a PS it sounds like "when you first deploy this do foo, but after you've been running your network for 6 months you can transition to something else."
>
> I don't think you mean that. In a PS, I think you mean to delete "initial" from this text.

I don't think so.

Whether we change the status of RFC 7238 doesn't change deployment 
reality at all. Whatever we wrote in it depends on what deployed 
software does, not on the classification of the document.

Best regards, Julian

---

From: Julian Reschke <[email-masked]>
Date: Tue, 30 Dec 2014 11:53:29 +0100

On 2014-12-30 11:43, Adrian Farrel wrote:
> Sure thing...
>
> As noted in section 1 of 7238
>
>     Section 6.4.7 of [RFC7231] states that HTTP does not define a
>     permanent variant of status code 307; this specification adds the
>     status code 308, defining this missing variant (Section 3).
>
> I think you are defining 308 as part of HTTP. So 7231 is now wrong to say that HTTP does not define a permanent variant of 307.

It doesn't say that.

<http://greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.7.p.3> says:

"... This specification defines no equivalent counterpart for 301 (Moved 
Permanently) ([RFC7238], however, defines the status code 308 (Permanent 
Redirect) for this purpose)."

That is still true.

> Furthermore, I think you would hope that new implementations of HTTP 1.1 (i.e. 7231) also include support for 308.
>
> That's an update IMHO.

No, it's not. HTTP status codes are an extension point, that's why we 
have a registry. Adding new status codes doesn't require updating the 
core documents.

> Adrian
>
> PS This is just a Metadata change in the same way as Exp->PS is a Metadata change, so it should be possible to handle it in the same way.

That may be true, but it would be an incorrect update.

Best regards, Julian

---

From: Julian Reschke <[email-masked]>
Date: Tue, 30 Dec 2014 17:08:31 +0100

On 2014-12-30 17:00, Adrian Farrel wrote:
> At the risk of spending more cycles on a single word than is really valuable even to a pedant, and observing that I am not trying to block anything, but am trying to get what is published to be right...
>
> - The document was Experimental
> - We are told that the experiment is done
> - We are told that there are now implementations and deployments
> - We are trying to make this  a Proposed Standard and a PS defines what you build and how you use it.
>
> So, the text in 7238 says "Therefore, initial use of status code 308 will be restricted to cases..."
>
> Note "initial" and "will be."
>
> I asked what "initial means in this context" and I read your response as saying "this is what initial deployments do." That makes the use of the future tense suspect.
>
> But, in a PS I expect to be told what to do not to read reportage of what initial use will comprise. A PS is supposed to tell me what to build and how to deploy it, and I have no way of knowing (from this text) when "initial" ends and when we enter the post-initial world. It sounds to me that this initial period has completed, but maybe it hasn't - how could I know from reading this spec? Who would I ask? It's a small thing, and it is an unclear specification.

I don't know when "initial" ends, either. It requires that all 
components that are relevant will know what 308 is, and that certainly 
is not true today. I can't predict when that will be the case.

Best regards, Julian

---

From: Julian Reschke <[email-masked]>
Date: Tue, 30 Dec 2014 17:15:03 +0100

On 2014-12-30 17:00, Adrian Farrel wrote:
> Hi Julian,
>
> Hmmm, so maybe the quoted text from 7238 is misleading and should s/HTTP/[RFC7231]/ since the quote you give from 7231 quite clearly says "This specification" and not "HTTP". But that is not the main point.
>
> I will attempt to reason this once more by asking you a question:
> If I build an HTTP v1.1 implementation today, should I include support for 308 or not?

Yes, as it is a registered HTTP status code, and we want it to be 
broadly implemented.

> I know I *can* make a free choice, but what is the expectation? What would you consider a correct implementation of HTTP v1.1?

HTTP/1.1 is a collection of specifications, plus a number of registries. 
This makes the question hard to answer.

If you don't implement 308, but do implement all unknown 3xx codes the 
way RFC 7231 requires, you will be compliant to RFC 7231, which defines 
redirect handling in general.

Best regards, Julian