On Wed, 5 Mar 2014, Qebui Nehebkau wrote: > On Tue, Mar 4, 2014 at 11:41 PM, Ian Hickson <i...@hixie.ch> wrote: > > I think the arguments you've presented so far suggest "address-levelN" > > for N=1..4, with 4=region and 3=locality, is probably the simplest > > thing to do. I was hoping there might be other people with opinions, > > to give us different perspectives on this, but it seems nobody else > > cares. :-( > > Since you asked, I think the whole endeavour (of trying to tokenise an > address) is pointless and should be abandoned outright. :)
In principle I agree, but in practice I think we have to work with the reality that that is what people are doing. > Short of my ideal of *only* offering the full address (as used on a > label) as an opaque string, I think it would be most reasonable to > consider the 'locality' field itself to be a fully-specified opaque > string, including whatever information is necessary to completely > identify the location from the region level (such as the prefecture and > district), rather than a single level. > > Failing all that, I would at least prefer for the fields to have names > instead of abstract numbering, because people are likely to be confused > about the order, no matter which end is the 'widest'. It also seems more > intuitive, to me, for the 'locality', as, after all, 'local', to be the > most specific level. Would people not be confused by names in the same way? On Wed, 5 Mar 2014, Qebui Nehebkau wrote: > > Right, "impose", certainly not. But, perhaps, (one hopes,) "encourage"? > Or at least "refuse to explicitly support anything else". Does > autocomplete *need* to support people who are already doing it wrong? > But I'm probably just being too utopian; it happens. Well if we don't support pretty much every form out there, the feature isn't particularly useful. On Tue, 4 Mar 2014, Kevin Marks wrote: > > > > > > > > > > > > > > > > "address-line1" | > > > > > > > > "address-line2" |- "street-address" > > > > > > > > "address-line3" | > > > > > > > > "address-level4" > > > > > > > > "address-level3" > > > > > > > > "address-level2" / "locality" > > > > > > > > "address-level1" / "region" > > > > > > > > "country-name" > > > > > > > > > > > > This could work. It has the synonym issue (having multiple fields > > > > > > that mean the same thing is often the source of confusion). > > > > > > > > > > > > > > Or we could do: > > > > > > > > > > > > > > > > "address-line1" | > > > > > > > > "address-line2" |- "street-address" > > > > > > > > "address-line3" | > > > > > > > > "subsublocality" > > > > > > > > "sublocality" > > > > > > > > "locality" > > > > > > > > "region" > > > > > > > > "country-name" > > > > > > > > > > > > This could work. It avoids the synonym problem. > > > > > > > > > > Yes, this alternative works, but in my opinion is not preferable. > > > Because these words don't really mean anything. Nor do numbers. I think we don't really have any chance of giving meaning to the names here either way. On Tue, 4 Mar 2014, Evan Stade wrote: > > "dependent-locality" and "locality" have a fairly precise meaning in the > UK. Also in a natural-language conversation, if you ask me what "region" > of the country I live in, I'd say "New England", "the Midwest", or some > such; certainly not the state where I reside. The descriptions for these > tokens are currently pretty specific, for example they say a city would > be a locality. But this is not true for Beijing or some other cities. To > fix the descriptions, we'd have to change them to something like > "region: the highest level administrative region below country in the > address" and "locality: the second-highest level administrative region > below country in the address", "sub-locality: the third-highest level > administrative region [...]". With you so far. > At this point, one wonders why the tokens aren't just [something]1, > [something]2, etc. I don't understand how you get there. Why would you wonder this? > > > > > > > > "address-line1" | > > > > > > > > "address-line2" |- "street-address" > > > > > > > > "address-line3" | > > > > > > > > "locality" > > > > > > > > "subsubregion" > > > > > > > > "subregion" > > > > > > > > "region" > > > > > > > > "country-name" > > > > I don't understand why you think authors will think they need to > > include "subregion", but won't think they need to include > > "address-level3". > > I think they'll assume subregion returns something for the US if it's > sandwiched between "region" and "locality", because county is in between > state and city. But in reality, subregion will return nothing. But why does this not apply to the numeric version? > > Having synonyms is really bad. It leads to huge amounts of confusion. > > This is why I'm trying to avoid having synonyms for the address-level* > > stuff. We should definitely not add some just to introduce a slightly > > better name. > > My suggestion is to change the address-line1 to street-address-line1, > not to have synonyms. Chrome would then support address-line1 for a > limited period of time, but outside the spec. There's no "outside the spec". The spec tries to describe reality. If you implement something, then that's the reality, and that's what the spec would say, and therefore we'd have a synonym. > If you are avidly anti-synonym for the address-level* stuff, and don't > want to change "region" and "locality", then I guess the next best > naming scheme in my mind would be "region", "locality", "locality2", > "locality3". But we also need to update the descriptions as mentioned > above. I don't understand why "locality2" is better than "sublocality", nor why it's better to add things above locality than between locality and region. The numbering seems really prone to mistakes (I mean, I've been making mistakes with it this entire thread unintentionally, for example). > > > Why is that better than 1=region, 2=locality, except to a US-centric > > > viewpoint? This would lead to a weird situation where (a) you > > > couldn't expand past 4 levels without changing the meaning of > > > previous levels and (b) a country such as the US would have > > > address-level4 and address-level3 but no address-level2 or > > > address-level1. > > > > Well, at least as far as (a) goes, we have no way to know where > > governments are going to introduce new levels. Who's to say that the > > US won't introduce something between states and towns? This problem > > exists whatever we do. Maybe the US and the EU will merge and there'll > > be a new field between "country-name" and "region". Who knows. > > One can dream... > > You're right that changing political circumstances might put us in an > awkward situation no matter what we do. But it seems to me the most > likely scenario is that a government would add more administrative > levels at the most granular level. Why? It seems just as likely that we'll add levels between "country" and "region". For instance, the example above. Or, in a few years, when there are parts of countries in space, maybe there'll be a planetoid name between the country and the region. Or maybe that will go on the other side of the country. I think trying to guess how things will be extended is a fool's errand. If we use numbers, we paint ourselves into a corner with extensions anywhere but at the deepest level. Fundamentally, studying all the alternatives we've considered so far, they all suck. - some have weird names like "subsubregion". - some use numbers - some have synonyms - some leave gaps in addresses for some locales where it's not obvious where the gap should be - some are non-trivial to extend later I think I'm going to just go with more or less what you first proposed: "address-line1" | "address-line2" |- "street-address" "address-line3" | "address-level4" "address-level3" "address-level2" / "locality" "address-level1" / "region" "country-name" That is, make "locality" and "region" synonyms for two new fields, add two more, and say in the spec that different locales have different numbers of levels and that as many should be included as are appropriate, starting with level1 as the widest administrative division. I've filed a bug on this topic; if I can get agreement from other vendors, then I'll go ahead and spec this: https://www.w3.org/Bugs/Public/show_bug.cgi?id=25235 On Wed, 5 Mar 2014, Edward O'Connor wrote: > > The techniques browsers use for autofilling auth information would > benefit enormously from some additional autocomplete="" values. The wiki > page Ilya mentioned captures the use cases pretty well. I think these > are the critical ones that capture the most common cases: > > # Passwords > > On "change your password" forms, which <input type=password> is your > current password? Which is the new password? Browsers want to avoid > filling the old password into the new or confirm password fields. > Additionally, distinguishing such fields would help tools that generate > passwords. These are useful on both sign-up and change password forms. > > <input type=password> - your current password > <input type=password autocomplete=new> - a new password > <input type=password autocomplete=confirm> - the new password, again > > Next to the other autocomplete values, "new" and "confirm" don't look > descriptive enough. "new-password" and "confirm-password", maybe? > "<input type=password autocomplete=new-password>" feels redundant and > verbose to me. Is there any reason to have two fields here, why not just "new" both times? Also, should we have an "old" field for the old password, or is the lack of an autofill field sufficient? I've filed a bug to track this: https://www.w3.org/Bugs/Public/show_bug.cgi?id=25236 It needs multiple vendors on board to make progress. > # Usernames > > Lots of websites use email addresses as usernames. Tools should be able > to distinguish email-used-as-username fields from other email fields. > This can also help on "forgot password"/"forgot username" forms. > > <inpyt type=text autocomplete=username> - your username on this site > <input type=email> - your preferred email address > <inpyt type=email autocomplete=username> - your username on this site, > not your preferred email > address > <input type=url autocomplete=username> - OpenID This seems reasonable. I've filed a bug to track this: https://www.w3.org/Bugs/Public/show_bug.cgi?id=25237 It needs multiple vendors on board to make progress. > Also, consider the case of login forms without username fields. You see > this sort of thing a lot these days, when sites remember who was last > logged in: > > <form> > <label>Password for hober: <input type=password name=pw></label> > <p>Not hober? <a href=...>Click here to sign in</a>. > </form> > > It's difficult for tools to manage the user's auth info for such pages. > How can tools discover what the username is? The obvious solution, in a > world with autocomplete=username, would be to add <input type=hidden > autocomplete=username name=username value=hober> to the form. So far, autocomplete="" hasn't applied to <input type=hidden>. This would be a bit weird, giving it a different meaning than usual (providing information to the UA, rather than getting information from the UA). I'm a bit skeptical of this kind of overloading. Not sure what the right solution is, though. On Fri, 7 Mar 2014, Garrett Casto wrote: > > Another related issue that would be nice to address would be allowing > sites to positively assert that authentication succeeded. For sites that > authenticate client side via XHR, standardizing something like > window.external.AutoCompleteSaveForm() would be very helpful. For sites > that validate server side, I'm less sure what the correct avenue to > convey this information would be (response code, header, ...). I'm > assuming that this will be more contentious than adding username and > password attribution and I don't want to hold that up, but I would like > to see opinions on this. I actually have a similar problem with purely JS-handled forms even unrelated to credentials. Because the form is never really submitted (even if we reuse the submit infrastructure, we cancel the 'submit' event and handle the work on the JS side), there's never an indication to the UA that it should save the fields, and so autofill never works right on these forms, even for things like postal addresses or e-mail addresses. For the pure JS case, an API (probably on the <form> itself) would make sense and seems relatively easy. I've filed a bug on this: https://www.w3.org/Bugs/Public/show_bug.cgi?id=25238 For the real submission case, I guess what we want is a way to say "autocomplete=off" after the fact, basically. An HTTP header seems like the most obvious solution. https://www.w3.org/Bugs/Public/show_bug.cgi?id=25239 Again, these need multiple vendors on board to make progress. On Mon, 10 Mar 2014, Evan Stade wrote: > > Currently, requestAutocomplete lets a user agent provide the same user > experience across multiple sites for common data input flows. A site > describes the data it desires (via a form and autocomplete attributes), and > the user agent uses this information and what it knows about the user to > expedite data input. For example, if one of the form elements has > autocomplete=”cc-number” the browser might provide an experience tailored > for a payment flow, or if there’s an element with autocomplete=”bday” the > browser might use an experience that’s tailored for sharing identiy. > > We’ve found that there are some details of the interaction which might > affect the UX which cannot be inferred from the data inputs. We propose to > add an optional argument to the requestAutocomplete method. Thus invocation > would look like: > > form_element.requestAutocomplete(details); > > This |details| argument would be an object where key-value pairs provide > additional details regarding the request. The spec should define a set of > keys and associated data types which are recognized. There are currently > two key-value pairs we would like to add: > > key: “transactionAmount” > value: number > description: For data that is going to be applied towards a > transaction, the /maximum/ value of the transaction. The browser does not > guarantee that the returned payment instrument will work, but keeping the > transaction under this amount will increase the likelihood of receiving a > valid card number. > > key: “transactionCurrency” > value: string > description: a valid ISO 4217 currency code that describes the currency > for transactionAmount. If not provided, the default is “USD”. > > Justification? There are upper bounds on certain payment instruments, > for example different credit cards have different credit limits; a debit > card is linked to a bank account with a certain balance. It’s a much > preferable user experience to be able to catch these problems earlier > rather than waiting for the merchant to attempt the transaction and have > it fail (or have a user’s account overdrawn). Concretely, Chromium wants > to handle transactions over $2000 differently from transactions under > that amount. > > Does this seem reasonable? The requestAutocomplete() API is a Chrome proprietary feature right now so it's sort of acadmic, but: Why would this only apply to requestAutocomplete()? Surely it would be just as important for the case where the user agent is filling in a form without using that API. Also, I don't understand how these are supposed to work. How is the browser supposed to know the balance on my credit cards or bank accounts? How is the browser supposed to know which of my cards are good for USD and which are good for GBP? -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'