+1 to the evidence from OT being persuasive.

LGTM2

On Wednesday, November 8, 2023 at 8:56:24 AM UTC-8 Rick Byers wrote:

> It certainly sounds to me that there's additional work to be done here, 
> but I agree with Daniel that changing event order is not something we can 
> do lightly. Gregg, could you please file an issue 
> <https://github.com/w3c/edit-context/issues> on the spec so the 
> discussion can continue there?
>
> Given the positive feedback we have from major real-world deployments in 
> OT and the 3+ years of design work that's gone into this API via the 
> editing WG, I personally don't think this concern is sufficient to block 
> shipping at this stage. Editing is going to continue to be an area to work 
> on improving rationality and interop and shipping this API now seems like 
> the right pragmatic next step to me. Since fundamentally fixing this issue 
> is going to need breaking changes anyway, and EditContext is most likely to 
> be eagerly adopted just by a few large applications, I'm reasonably 
> confident that we can continue to improve over time as driven by real-world 
> deployment experience. LGTM1
>
> Rick
>
> On Wed, Nov 1, 2023 at 2:55 PM 'Daniel Clark' via blink-dev <
> blink-dev@chromium.org> wrote:
>
>> To the extent that firing keydown before compositionstart is a problem 
>> for apps, that’s an issue that equally affects contenteditable. Changing 
>> the order may be a good improvement, but it will be a breaking change for 
>> the web that should be carefully considered and hopefully done in tandem 
>> with Firefox and Webkit so that browsers can arrive at matching behavior. I 
>> think tying EditContext to this is not necessary, as EditContext aims to 
>> solve a variety of problems around receiving text input aside from how 
>> keydown specifically is handled. Since EditContext does not make any 
>> changes around the order of keydown relative to other events, shipping 
>> EditContext should not add any additional complications to changing that 
>> event order if the Editing Working group decides to go that route.
>>
>>  
>>
>> The API is supported on Mac as well. If the sample you tried didn’t work 
>> it may be because we failed to update it in response to breaking changes. 
>> This sample is up-to-date and should serve to show simple text input and 
>> composition: https://magic-organic-yam.glitch.me/. Note that a lot of 
>> basic editing functionality isn’t implemented here, and the text formatting 
>> for compositions is with highlights rather than underlines -- this was 
>> built for testing the API, not real-world editing.
>>
>>  
>>
>> As part of the Origin Trial, developers at Google Docs and Adobe included 
>> Mac in their testing and reported several Mac-specific issues that we’ve 
>> since fixed. If you’d like to try with the Docs implementation, let me know 
>> and I can ask about getting you opted in to that rollout.
>>
>>  
>>
>> For reconversions, when a page is using EditContext the same UI will 
>> still be available to the user via the menu or hotkeys. The page keeps the 
>> platform informed about which text is selected by the user by calling 
>> EditContext.updateSelection() 
>> <https://w3c.github.io/edit-context/#dom-editcontext-updateselection>. 
>> When the user triggers a reconversion, Blink will send the page another 
>> TextUpdateEvent <https://w3c.github.io/edit-context/#dom-textupdateevent> 
>> indicating to it that it should change the text in the specified range to 
>> the new value.
>>
>>  
>>
>> -- Dan
>>
>>  
>>
>> *From:* Gregg Tavares <g...@chromium.org> 
>> *Sent:* Tuesday, October 31, 2023 5:19 PM
>> *To:* Daniel Clark <dan...@microsoft.com>
>> *Cc:* Gregg Tavares <g...@chromium.org>; blink-dev <
>> blink-dev@chromium.org>; Alex Keng <shih...@microsoft.com>; Anupam 
>> Snigdha <sni...@microsoft.com>; ko...@chromium.org
>> *Subject:* Re: [blink-dev] Intent to Ship: EditContext API
>>
>>  
>>
>> You don't often get email from g...@chromium.org. Learn why this is 
>> important <https://aka.ms/LearnAboutSenderIdentification>
>>
>> I don't think the keydown issue should be ignored until after shipping 
>> this API. I think it's essential for this API to actually function.
>>
>>  
>>
>> Consider an app that responds to Control-Shift-J for say "jump to 
>> definition". 
>>
>>  
>>
>> keydown = key = 'Control'
>>
>> keydown = key = 'Shift' (CtrlKey = true)
>>
>> keydown = key = 'K' (CtrlKey = true, Shift = true)  And the app would 
>> trigger it's jump-to-definition command  But what should have happened is 
>> the IME switched to Japanese mode (on Mac) and nothing happened in the app.
>>
>>  
>>
>> It seems like this API is supposed to solve these issues but if keydown 
>> happens first then it seems like it fails at it's actual goal.
>>
>>  
>>
>> The same issue but for different keys exists because of the difference in 
>> Firefox vs Chrome where in Chrome the app will mistakenly respond to keys 
>> it shouldn't and in Firefox it won't since Firefox hides those keys as 
>> 'Process'.
>>
>>  
>>
>> Other questions:  
>>
>>  
>>
>> (*) Are we sure this API matches all platforms? It appears to be only 
>> implemented on Windows so far. The concern being, without implementing on 
>> other platforms before shipping, we may run into design issues that require 
>> changes to the API. I'm not remotely an expert in IME APIs but I know in my 
>> own domain, GPUs, if we didn't actually implement across APIs we'd 
>> have that issue. 
>>
>>  
>>
>> I wanted to test some things but I don't currently have access to a 
>> windows device and the sample didn't seem to work on my Mac with the 
>> EditContext API enabled.
>>
>>  
>>
>> (*) How is recoversion handled in the canvas example? In a normal text 
>> editing area the user can select a portion of the text and pick "reconvert" 
>> either from menus or via hotkeys 
>>
>>  
>>
>>  
>>
>>  
>>
>> On Wed, Nov 1, 2023 at 8:09 AM Daniel Clark <dan...@microsoft.com> wrote:
>>
>> EditContext is not meant to be an interchangeable replacement for <input 
>> type=”text”>, contenteditable, etc, and most sites that want to receive 
>> simple text input will want to continue using the existing set of editing 
>> features.
>>
>>  
>>
>> The target user of EditContext is one that has already reimplemented a 
>> lot of the editing stack, such that the browser’s built-in editing 
>> functionality is more of a hindrance than a help – the typical case here is 
>> something like Google Docs (where the entire editor view is reimplemented 
>> in a <canvas>). EditContext replaces hacks that sites like these often have 
>> to resort to such as hidden contenteditable elements that are floated 
>> around the page to position the IME window.
>>
>>  
>>
>> A site that just wants to receive text input without building out their 
>> own fully-featured editing experience can and should continue using the 
>> existing “batteries-included” tools like <textarea> or contenteditable. 
>>
>>  
>>
>> The keydown event coming before compositionstart seems to be consistent 
>> with the existing contenteditable behavior in both Chromium and Firefox.  
>> While EditContext changes how some editing-related events are fired, some 
>> of the existing orderings like this were left in place for consistency’s 
>> sake when there wasn’t a strong reason to change them.
>>
>>  
>>
>> The keydownevent.key interop difference is a good one to note, but I 
>> think it should be resolved orthogonally to EditContext. Since that 
>> behavior difference is present for both EditContext and contenteditable, 
>> the ideal outcome would be to bring this behavior in line across browsers 
>> for all editable fields.  It looks like there are some stale issues in the 
>> EditingWG in that area, e.g. this one 
>> <https://github.com/w3c/uievents/issues/75> from before Gecko started 
>> firing keydown/keyup events during composition; maybe this should be taken 
>> back up by the WG to try to drive further interoperability in the area. If 
>> we end up making a change there it would apply both to EditContext and to 
>> other types of editable fields.
>>
>>  
>>
>> -- Dan
>>
>>  
>>
>> *From:* Gregg Tavares <g...@chromium.org> 
>> *Sent:* Monday, October 30, 2023 10:19 PM
>> *To:* Daniel Clark <dan...@microsoft.com>
>> *Cc:* blink-dev <blink-dev@chromium.org>; Alex Keng <
>> shih...@microsoft.com>; Anupam Snigdha <sni...@microsoft.com>; 
>> ko...@chromium.org
>> *Subject:* Re: [blink-dev] Intent to Ship: EditContext API
>>
>>  
>>
>> You don't often get email from g...@chromium.org. Learn why this is 
>> important <https://aka.ms/LearnAboutSenderIdentification>
>>
>> Not a decider but one that sees the IME on many sites that try to roll 
>> their own text input. 
>>
>>  
>>
>> This sounds like a "if you do all of these 30 things perfectly, then 
>> maybe your site will work with most IME issues but you won't know unless 
>> you get someone experienced with IME users to test for you" solution
>>
>>  
>>
>> Vs. some other solution which is "do nothing and it just works".  The 
>> current "do nothing and it just works" is, use <input type="text"> or 
>> <textarea> or contenteditable.
>>
>>  
>>
>> Is this API just giving developers lots of rope to hang themselves?
>>
>>  
>>
>> Also, how does it align with other browsers? For example the explainer 
>> shows a sequence of events
>>
>>  
>>
>> *Event*
>>
>> *EventTarget*
>>
>> *key code*
>>
>> *event.text*
>>
>> keydown
>>
>> focused element
>>
>> 'S'
>>
>> compositionstart
>>
>> active EditContext
>>
>> textupdate
>>
>> active EditContext
>>
>> 'S'
>>
>> textformatupdate
>>
>> active EditContext
>>
>> keyup
>>
>> focused element
>>
>> 'S'
>>
>> keydown
>>
>> focused element
>>
>> 'U'
>>
>> textupdate
>>
>> active EditContext
>>
>> 'す'
>>
>> textformatupdate
>>
>> active EditContext
>>
>> keyup
>>
>> focused element
>>
>> 'U'
>>
>> keydown
>>
>> focused element
>>
>> 'Space'
>>
>> textupdate
>>
>> active EditContext
>>
>> '巣'
>>
>> textformatupdate
>>
>> active EditContext
>>
>> compositionend
>>
>> active EditContext
>>
>> keyup
>>
>> focused element
>>
>> 'Space'
>>
>>  
>>
>>  
>>
>> That seems non-intuitive to me. I get a keydown first, at which point my 
>> app reacts when it wasn't supposed to as the key was meant for the IME. 
>>
>>  
>>
>> Also, this table doesn't seem to match Firefox for example, pressing 's' 
>> when in Japanese input mode pops up the IME and in firefox it produces 
>> event.key = 'Process', not event.key = 's' which at least makes more sense 
>> since the input should be going to the IME, not the page.
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>>  
>>
>> On Tue, Oct 31, 2023 at 2:52 AM 'Daniel Clark' via blink-dev <
>> blink-dev@chromium.org> wrote:
>>
>> Contact emails
>>
>> dan...@microsoft.com, sni...@microsoft.com, shih...@microsoft.com
>>
>> Explainer
>>
>> https://github.com/w3c/edit-context/blob/gh-pages/explainer.md
>>
>> Specification
>>
>> https://w3c.github.io/edit-context
>>
>> Design docs
>>
>> https://github.com/w3c/edit-context/blob/gh-pages/dev-design.md
>>
>> Summary
>>
>> The EditContext API simplifies the process of integrating a web app with 
>> advanced text input methods such as IME Compositions and speech 
>> recognition, and unlocks new capabilities for web-based editors.
>>
>>  
>>
>> Blink component
>>
>> Blink>Editing 
>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EEditing>
>>
>> Search tags
>>
>> editing <https://chromestatus.com/features#tags:editing>, contenteditable 
>> <https://chromestatus.com/features#tags:contenteditable>, input 
>> <https://chromestatus.com/features#tags:input>, rawinput 
>> <https://chromestatus.com/features#tags:rawinput>, ime 
>> <https://chromestatus.com/features#tags:ime>
>>
>> TAG review
>>
>> Completed (Resolution: satisifed) at 
>> https://github.com/w3ctag/design-reviews/issues/416
>>
>> TAG review status
>>
>> Issues addressed
>>
>> Chromium Trial Name
>>
>> EditContext
>>
>> Link to origin trial feedback summary
>>
>> https://github.com/w3c/edit-context/
>>
>> Origin Trial documentation link
>>
>> https://github.com/w3c/edit-context/blob/gh-pages/explainer.md
>>
>> In the Origin Trial the Google Docs team used EditContext to receive IME 
>> input and position the IME window for Docs, replacing the current approach 
>> of manually positioning a hidden contenteditable element over the document 
>> when composing text. The new EditContext approach is more performant and 
>> supports a wider range of IME interactions.
>>
>>  
>>
>> We received similar feedback from Adobe, who are also using EditContext 
>> to replace a hidden text input element for triggering the IME.
>>
>>  
>>
>> Risks
>>
>> Interoperability and Compatibility
>>
>> There are no known interop or compat risks.
>>
>>
>>
>> *Gecko*: Under consideration (
>> https://github.com/mozilla/standards-positions/issues/199)
>>
>> *WebKit*: No signal (
>> https://github.com/WebKit/standards-positions/issues/243)
>>
>> *Web developers*: Strongly positive Positive feedback from Word online, 
>> Adobe and Figma, Google Docs
>>
>> *Other signals*:
>>
>> Ergonomics
>>
>> None.
>>
>>  
>>
>> Activation
>>
>> Developers interested in this feature will typically have their own 
>> polyfill for text input using hidden textarea or contenteditable elements. 
>> Feature detecting and using new API to avoid side effects of previous 
>> approaches is intended to be easily adoptable.
>>
>>  
>>
>> Security
>>
>> No particular security risks. See 
>> https://github.com/w3c/edit-context/blob/gh-pages/security-privacy.md.
>>
>>  
>>
>> WebView application risks
>>
>> *Does this intent deprecate or change behavior of existing APIs, such 
>> that it has potentially high risk for Android WebView-based applications?*
>>
>> None.
>>
>>  
>>
>> Debuggability
>>
>> Existing DevTools features should be sufficient for debugging EditContext.
>>
>>  
>>
>> Will this feature be supported on all six Blink platforms (Windows, Mac, 
>> Linux, Chrome OS, Android, and Android WebView)?
>>
>> Yes. This is a core web platform feature that is not limited to any 
>> particular underlying platform.
>>
>>  
>>
>> Is this feature fully tested by *web-platform-tests* 
>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>> ?
>>
>> Yes.
>>
>> Tests are available at 
>> https://wpt.fyi/results/editing/edit-context?label=experimental&label=master&aligned
>>  
>> Note that some composition scenarios are not yet testable in WPT due to a 
>> dependency on content_shell-only test APIs. Work is underway to add 
>> functionality for mocking IME input in WPTs such that these tests can be 
>> moved to WPT.
>>
>>  
>>
>> Flag name on chrome://flags
>>
>> edit-context
>>
>> Finch feature name
>>
>> EditContext
>>
>> Requires code in //chrome?
>>
>> False
>>
>> Tracking bug
>>
>> https://bugs.chromium.org/p/chromium/issues/detail?id=999184
>>
>> Measurement
>>
>> The UseCounter WebFeature::kEditContext tracks instantiation of 
>> EditContext.
>>
>> Availability expectation
>>
>> We expect other browser vendors to be interested in implementing this 
>> feature, though we cannot comment on specific timelines.
>>
>> Adoption expectation
>>
>> Feature will be used by Google Docs upon launch in Chrome.
>>
>> Adoption plan
>>
>> We are already working with the Docs team as a partner in the feature's 
>> Origin Trial, where they have implemented composition using EditContext.
>>
>> Non-OSS dependencies
>>
>> *Does the feature depend on any code or APIs outside the Chromium open 
>> source repository and its open-source dependencies to function?*
>>
>> None.
>>
>> Estimated milestones
>>
>> Shipping on desktop
>>
>> 121
>>
>> OriginTrial desktop last
>>
>> 120
>>
>> OriginTrial desktop first
>>
>> 116
>>
>>  
>>
>> OriginTrial Android last
>>
>> 120
>>
>> OriginTrial Android first
>>
>> 116
>>
>>  
>>
>> OriginTrial webView last
>>
>> 120
>>
>> OriginTrial webView first
>>
>> 116
>>
>>  
>>
>>
>> Anticipated spec changes
>>
>> *Open questions about a feature may be a source of future web compat or 
>> interop issues. Please list open issues (e.g. links to known github issues 
>> in the project for the feature specification) whose resolution may 
>> introduce web compat/interop risk (e.g., changing to naming or structure of 
>> the API in a non-backward-compatible way).*
>>
>> Open spec issues can be found here: 
>> https://github.com/w3c/edit-context/issues We expect these issues to be 
>> resolved in a forward-compatible way and/or to only affect rare 
>> corner-cases. Many of these discuss potential additions to the feature that 
>> will be considered based on ongoing developer feedback as EditContext is 
>> adopted more widely.
>>
>> Link to entry on the Chrome Platform Status
>>
>> https://chromestatus.com/feature/5041440373604352
>>
>> Links to previous Intent discussions
>>
>> Intent to Implement: 
>> https://groups.google.com/u/1/a/chromium.org/g/blink-dev/c/OHqvPx9mFww/m/1za_qdEHDwAJ
>>
>> Intent to Experiment: 
>> https://groups.google.com/u/1/a/chromium.org/g/blink-dev/c/QZQrESwcK3o/m/k3pfYBcRBAAJ
>>  
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to blink-dev+unsubscr...@chromium.org.
>> To view this discussion on the web visit 
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/MW4PR00MB1654118011BA087BA5058967C5A1A%40MW4PR00MB1654.namprd00.prod.outlook.com
>>  
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/MW4PR00MB1654118011BA087BA5058967C5A1A%40MW4PR00MB1654.namprd00.prod.outlook.com?utm_medium=email&utm_source=footer>
>> .
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to blink-dev+unsubscr...@chromium.org.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/PH7PR00MB1637386167B3A830D5D06D0AC5A7A%40PH7PR00MB1637.namprd00.prod.outlook.com
>>  
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/PH7PR00MB1637386167B3A830D5D06D0AC5A7A%40PH7PR00MB1637.namprd00.prod.outlook.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6707471d-651b-482d-9047-a5fb0f493680n%40chromium.org.

Reply via email to