Contact emails
bcw...@google.com, yoi...@chromium.org, ko...@chromium.org
Spec
http://www.w3.org/html/wg/drafts/html/master/forms.html#input-modalities:-the-inputmode-attribute
Summary
The inputmode content attribute is an enumerated attribute that specifies what kind of input mechanism would be most helpful for users entering content into the text form control.
Link to “Intent to Implement” blink-dev discussion
https://groups.google.com/a/chromium.org/d/topic/blink-dev/KjKEZ5Ga3k8/discussion
Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Yes.
Demo link
None
Compatibility Risk
There have been several different proposals for how “inputmode” should be used (X-Forms, for example) but the web seems to have settled on the “single enumeration value” supported here.
OWP launch tracking bug?
None. This is being enabled so that the value can be passed to IME and used for auto-capitalization support. https://codereview.chromium.org/720313004/
Link to entry on the feature dashboard
None. Driving auto-capitalization request is here: http://code.google.com/p/chromium/issues/detail?id=116152
Non-owner LGTM. This is an important piece of missing functionality for the web on mobile devices.Curious: how close does this spec get to the full keyboard configurability available in Android / iOS native keyboard APIs? Or at least, do we have any idea of what fraction of the typical native mobile app use cases this will satisfy? I'm curious about the future path here.
A demo would really help with this intent. The links here do not explain how our implementation behaves. For example, for which of the keywords in the spec do we alter the input behavior, and how does that vary across platforms?
Non-owner LGTM. This is an important piece of missing functionality for the web on mobile devices.Curious: how close does this spec get to the full keyboard configurability available in Android / iOS native keyboard APIs? Or at least, do we have any idea of what fraction of the typical native mobile app use cases this will satisfy? I'm curious about the future path here."inputmode" is abstract and high-level; it defines the nature of the text being entered (e.g. "it's a proper name", "it's a telephone number", etc.). It's up to us to translate this as we want into behavior. It is lacking in flexibility, though, because a developer couldn't ask for a proper name that isn't capitalized. It also doesn't work for non-latin keyboards.
Non-owner LGTM. This is an important piece of missing functionality for the web on mobile devices.Curious: how close does this spec get to the full keyboard configurability available in Android / iOS native keyboard APIs? Or at least, do we have any idea of what fraction of the typical native mobile app use cases this will satisfy? I'm curious about the future path here."inputmode" is abstract and high-level; it defines the nature of the text being entered (e.g. "it's a proper name", "it's a telephone number", etc.). It's up to us to translate this as we want into behavior. It is lacking in flexibility, though, because a developer couldn't ask for a proper name that isn't capitalized. It also doesn't work for non-latin keyboards.On the other side, if new keyboard capabilities appear, they could be activated by this tag with no additional work by developers. This is both good and bad as suddenly the behavior is different from what the developer expected and tested, possibly for the better and possibly for the worse.In my personal opinion, this method mimics original web tags such as "<strong>" and "<em>" that provided intent and left the behavior up to the browser. As we all know, these went by the wayside as developers prefer explicit controls such as "<b>" and "<i>". Following this same logic, I think "inputmode" is an example of trying something that history has shown to be not what people want and Safari's "autocapitalize" attribute is the better choice. Developers will choose values based on the (current) behavior they want rather than what the value actually means. But I don't have a say in the standard. :-)
Non-owner LGTM. This is an important piece of missing functionality for the web on mobile devices.Curious: how close does this spec get to the full keyboard configurability available in Android / iOS native keyboard APIs? Or at least, do we have any idea of what fraction of the typical native mobile app use cases this will satisfy? I'm curious about the future path here."inputmode" is abstract and high-level; it defines the nature of the text being entered (e.g. "it's a proper name", "it's a telephone number", etc.). It's up to us to translate this as we want into behavior. It is lacking in flexibility, though, because a developer couldn't ask for a proper name that isn't capitalized. It also doesn't work for non-latin keyboards.On the other side, if new keyboard capabilities appear, they could be activated by this tag with no additional work by developers. This is both good and bad as suddenly the behavior is different from what the developer expected and tested, possibly for the better and possibly for the worse.In my personal opinion, this method mimics original web tags such as "<strong>" and "<em>" that provided intent and left the behavior up to the browser. As we all know, these went by the wayside as developers prefer explicit controls such as "<b>" and "<i>". Following this same logic, I think "inputmode" is an example of trying something that history has shown to be not what people want and Safari's "autocapitalize" attribute is the better choice. Developers will choose values based on the (current) behavior they want rather than what the value actually means. But I don't have a say in the standard. :-)This sentiment worries me. You, as the implementer in one of the worlds most popular browsers absolutely has a big say in the standard! If you think the standard is wrong (especially if we're the one going first and not following for interoperability with IE, Safari or Mozilla) then it's your obligation to give your feedback to the standards group and avoid implementing it until you think it's a good API!
What's the status in the other browsers? If we go first, that's sending a signal to them saying we like the API and we want them to also implement it as spec'd.
So before we ship this, can you please follow up with the working group regarding your concerns? You can approach the W3C HTML5 group and/or the WHATWG list (if the two html5 specs differ, we tend to follow the WHATWG one in blink). Ideally they'll be able to change your mind and convince you this is really the right design for the long-term of the web (I don't have enough context to have an opinion myself).Of course it may be the case that reasonable people can disagree on this point, and that either option is pretty good and better than the alternative of endless fighting and so we should just implement the consensus even if it's not exactly what we would have designed ourselves.
We could also also try to standardize Safari's autocapitalize attribute (even if it's redundant with input mode) and implement only it. Arguments like "x% of top N websites already use autocapitalize so it's a defacto standard already that should be specified" seem likely to carry a lot of weight.
Non-owner LGTM. This is an important piece of missing functionality for the web on mobile devices.Curious: how close does this spec get to the full keyboard configurability available in Android / iOS native keyboard APIs? Or at least, do we have any idea of what fraction of the typical native mobile app use cases this will satisfy? I'm curious about the future path here."inputmode" is abstract and high-level; it defines the nature of the text being entered (e.g. "it's a proper name", "it's a telephone number", etc.). It's up to us to translate this as we want into behavior. It is lacking in flexibility, though, because a developer couldn't ask for a proper name that isn't capitalized. It also doesn't work for non-latin keyboards.On the other side, if new keyboard capabilities appear, they could be activated by this tag with no additional work by developers. This is both good and bad as suddenly the behavior is different from what the developer expected and tested, possibly for the better and possibly for the worse.In my personal opinion, this method mimics original web tags such as "<strong>" and "<em>" that provided intent and left the behavior up to the browser. As we all know, these went by the wayside as developers prefer explicit controls such as "<b>" and "<i>". Following this same logic, I think "inputmode" is an example of trying something that history has shown to be not what people want and Safari's "autocapitalize" attribute is the better choice. Developers will choose values based on the (current) behavior they want rather than what the value actually means. But I don't have a say in the standard. :-)This sentiment worries me. You, as the implementer in one of the worlds most popular browsers absolutely has a big say in the standard! If you think the standard is wrong (especially if we're the one going first and not following for interoperability with IE, Safari or Mozilla) then it's your obligation to give your feedback to the standards group and avoid implementing it until you think it's a good API!(ever wish you'd just remained silent? :-)To be clear, I didn't implement this (where "this" is "inputmode support in Blink"). I was told that "inputmode" is the standard and so I must use "inputmode" for handing Android auto-capitalize settings (which requires enabling it in Blink since it's currently only experimental).My original CL that added support to Blink for Safari's "autocapitalize" attribute was reverted because "it's not standard".
What's the status in the other browsers? If we go first, that's sending a signal to them saying we like the API and we want them to also implement it as spec'd.According to...... the state of support is pretty much unchanged since it was a year ago. I.E. nobody
So before we ship this, can you please follow up with the working group regarding your concerns? You can approach the W3C HTML5 group and/or the WHATWG list (if the two html5 specs differ, we tend to follow the WHATWG one in blink). Ideally they'll be able to change your mind and convince you this is really the right design for the long-term of the web (I don't have enough context to have an opinion myself).Of course it may be the case that reasonable people can disagree on this point, and that either option is pretty good and better than the alternative of endless fighting and so we should just implement the consensus even if it's not exactly what we would have designed ourselves.They're entitled to their wrong opinions! :-DThis whole thing has been discussed over many years. At one point, it was proposed that "inputmode" take multiple values to separate language from modification ("x-forms") but that was eventually rejected for the current proposal.Don't get me wrong. I think "inputmode" is good for what it does (or rather, could do). I'm just not convinced that extrapolating auto-cap settings from its values is the best way because I fear that developers will choose the inputmode value that gives them the auto-cap settings they want even if that value causes (now or in the future) other behaviors that aren't ideal.So this is the consensus. I didn't want to start any (more) fighting about it. I just felt it was fair to cover all the bases.
tkent@ you're an expert on this stuff and had some opinions on the bug, right? Do you prefer the design of inputmode to Safari's existing API for this scenario?
tkent@ you're an expert on this stuff and had some opinions on the bug, right? Do you prefer the design of inputmode to Safari's existing API for this scenario?Since it was tkent who asked that I revert the "autocapitalize" in favor of "inputmode" and told me how to do an "intent to ship" of existing code... I'll take a wild guess that he's in favor of doing it this way. :-)
On Thu, Jan 8, 2015 at 6:16 AM, 'Brian White' via blink-dev <blin...@chromium.org> wrote:tkent@ you're an expert on this stuff and had some opinions on the bug, right? Do you prefer the design of inputmode to Safari's existing API for this scenario?Since it was tkent who asked that I revert the "autocapitalize" in favor of "inputmode" and told me how to do an "intent to ship" of existing code... I'll take a wild guess that he's in favor of doing it this way. :-)My reading of the bug was that he was saying we don't ship non-standard APIs so the only way to move forward without any new standards was inputmode. I didn't see him explicitly say that he thinks inputmode is a better API for your scenario than autocapitalize ;-)
On Thu, Jan 8, 2015 at 11:10 AM, Rick Byers <rby...@chromium.org> wrote:On Thu, Jan 8, 2015 at 6:16 AM, 'Brian White' via blink-dev <blin...@chromium.org> wrote:tkent@ you're an expert on this stuff and had some opinions on the bug, right? Do you prefer the design of inputmode to Safari's existing API for this scenario?Since it was tkent who asked that I revert the "autocapitalize" in favor of "inputmode" and told me how to do an "intent to ship" of existing code... I'll take a wild guess that he's in favor of doing it this way. :-)My reading of the bug was that he was saying we don't ship non-standard APIs so the only way to move forward without any new standards was inputmode. I didn't see him explicitly say that he thinks inputmode is a better API for your scenario than autocapitalize ;-)Ah, I see tkent@ is on leave until the end of January. Sounds like Mounir has a ton of context and a plan here anyway, so you guys should talk offline and circle back here with a plan you both like. It's a shame you guys hadn't talked earlier - sounds like he could have saved you a lot of frustration ;-)