- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Mon, 29 Mar 2010 17:23:00 +0200
- To: Chris Newman <Chris.Newman@Sun.COM>
- CC: julian.reschke@greenbytes.de, ietf-http-wg@w3.org, Ned Freed <ned.freed@mrochek.com>, IETF Apps Discuss <apps-discuss@ietf.org>
On 23.03.2010 00:32, Chris Newman wrote: > RFC 2231 did not allow two parameters with the same name but different > languages, at least in the context of continuations that was impossible. > Absent continuations, RFC 2231 was otherwise silent on that topic. > > So section 4.3 adds a new feature over and above what RFC 2231 did. It's > a feature that will make implementations significantly more complex and > is likely to cause interoperability problems. > > Much of the experience with deployment of both language tagging and > language variants in the IETF seems to result in unnecessary complexity. > While there are good abstract arguments for language tagging in theory, > it seems more often than not that the parties in the exchange are unable > to put anything useful in the field in which case it falls into the > realm of unnecessary complexity. In addition, we have experience where > we attempted to allow language variants (multipart/alternative) and not > only did that usage not deploy, it is actively broken despite being an > explicit example in RFC 1766. > > The one place where I've seen language variants mostly work is when the > language tag is actually included in the attribute name (LDAP does this) > and the "search" mechanism allows wildcarding of languages. But having > two attributes with the same name seems dangerous. > > My recommendation is to remove this feature as I believe it will not be > used in practice and will add unnecessary complexity that is likely to > create interoperability problems. > > - Chris Yes, this is indeed a problem. Proposal: - state the issue - rephrase 4.2 accordingly - remove 4.3 This would change Section 4 to: -- snip -- 4. Guidelines for Usage in HTTP Header Field Definitions Specifications of HTTP header fields that use the extensions defined in Section 3.2 should clearly state that. A simple way to achieve this is to normatively reference this specification, and to include the ext-value production into the ABNF for that header field. For instance: foo-header = "foo" LWSP ":" LWSP token ";" LWSP title-param title-param = "title" LWSP "=" LWSP value / "title*" LWSP "=" LWSP ext-value ext-value = <see RFCxxxx, Section 3.2> [[rfcno: Note to RFC Editor: in the figure above, please replace "xxxx" by the RFC number assigned to this specification.]] Note: The Parameter Value Continuation feature defined in Section 3 of [RFC2231] makes it impossible to have multiple instances of extended parameters with identical parmname components, as the processing of continuations would become ambiguous. Thus, specifications using this extension are RECOMMENDED to disallow this case for compatibility with RFC 2231. 4.1. When to Use the Extension Section 4.2 of [RFC2277] requires that protocol elements containing text are able to carry language information. Thus, the ext-value production should always be used when the parameter value is of textual nature and its language is known. Furthermore, the extension should also be used whenever the parameter value needs to carry characters not present in the US-ASCII ([USASCII]) character set (note that it would be unacceptable to define a new parameter that would be restricted to a subset of the Unicode character set). 4.2. Error Handling Header field specifications need to define whether multiple instances of parameters with identical parmname components are allowed, and how they should processed. It is recommended that a parameter using the extended syntax takes precedence. This could be used by producers to use both formats without breaking recipients that do not understand the extended syntax yet. Example: foo: bar; title="EURO exchange rates"; title*=utf-8''%e2%82%ac%20exchange%20rates In this case, the sender provides an ASCII version of the title for legacy recipients, but also includes an internationalized version for recipients understanding this specification -- the latter obviously should prefer the new syntax over the old one. Note: at the time of this writing, many implementations failed to ignore the form they do not understand, or prioritize the ASCII form although the extended syntax was present. -- snip -- Best regards, Julian
Received on Monday, 29 March 2010 15:23:36 UTC