Contact emails
Explainer
https://github.com/WICG/serial/blob/gh-pages/EXPLAINER.md
Spec
Draft specification text (pending review) is at https://reillyeon.github.io/serial and more closely matches what is implemented currently in Blink.
TAG Review (Requested)
https://github.com/w3ctag/design-reviews/issues/431
Summary
The Serial API provides an interface for connecting to serial devices, either through a serial port on the user’s system or removable USB and Bluetooth devices that emulate a serial port. This API has been requested by the hardware developer community as a companion to the WebUSB API because operating systems require applications to communicate with USB-based serial ports using their higher-level serial API rather than the low-level USB API. It also supports non-USB serial ports.
Input and output are handled by the Streams API. The permissions model and settings UI follow the model defined by the WebUSB API. The user must select a particular port for the site to be granted permission. Permission can be revoked by clicking on the lock icon in the Omnibox or by visiting Chrome settings. An icon is shown in the tab while the connection is active. Permissions are not currently persisted between browsing sessions but I know this will be a user pain point and so a model similar to WebUSB and Web Bluetooth is envisioned.
The functionality currently available behind a flag and this experiment represents a minimum-viable-product for this API. Issues are filed in the Blink>Serial component for remaining work.
Link to feature tracking bug
https://bugs.chromium.org/p/chromium/issues/detail?id=884928
Link to Chrome launch approval bug (sorry, Googlers only)
https://bugs.chromium.org/p/chromium/issues/detail?id=967863
Link to “Intent to Implement” blink-dev discussion
https://groups.google.com/a/chromium.org/d/msg/blink-dev/GcqEnSW5yHs/r7G3iMmDCQAJ
Goals for experimentation
We have already received some feedback on the API surface and implementation from developers who have tried it behind a flag. The goal for this Origin Trial is to allow sites currently employing workarounds for access to hardware devices to deploy a Serial API-based approach to their users and compare the experience and functionality.
We expect to react to developer feedback and work on completing the implementation during the experiment period.
Sites such as the Espruino IDE are already ready to participate in the Origin Trial. Other projects such as avrgirl-arduino are in the process of porting from the Node SerialPort API to the web API.
Experimental timeline
The experiment begins with the release of Chrome 79 to beta-channel and ends when Chrome 82 is shipped to stable-channel (replacing Chrome 81 which will be the last version with the experiment enabled).
Any risks when the experiment finishes?
This API allows sites to deprecate alternative solutions for communicating with hardware devices, such as requiring a local WebSocket server to service as a bridge to the native operating system API. Sites experimenting with the Serial API should not remove support for these existing methods until it is fully shipped. New sites built without a fallback mechanism should be aware that this is experimental functionality that is not guaranteed to be available after the experiment ends.
Ongoing technical constraints
None.
Debuggability
Developers are able to debug script using this feature using the existing DevTools console and debugger. For debugging device communication issues it is often convenient to use the ReadableStream.tee() method to split the streams going to or from the device and print them to the console for inspection.
Will this feature be supported on all five Blink platforms supported by Origin Trials (Windows, Mac, Linux, Chrome OS, and Android)?
This feature will be available on all desktop platforms (Windows, macOS, Linux and Chrome OS). It will not be available on Android or Android WebView because the Android platform SDK does not include support for serial ports. On Android support for USB-based serial ports is possible using the WebUSB API and a polyfill. The permissions UX will be essentially the same for either API.
Link to entry on the feature dashboard
https://chromestatus.com/feature/6577673212002304
Links to demos
--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEmk%3DMbHjnjAtLDfBbbK9GugNgU4AtJJZ_0Eaz%3DUrGxO2t4w2A%40mail.gmail.com.
Contact emails
Explainer
https://github.com/WICG/serial/blob/gh-pages/EXPLAINER.md
Spec
Draft specification text (pending review) is at https://reillyeon.github.io/serial and more closely matches what is implemented currently in Blink.
TAG Review (Requested)
https://github.com/w3ctag/design-reviews/issues/431
Summary
The Serial API provides an interface for connecting to serial devices, either through a serial port on the user’s system or removable USB and Bluetooth devices that emulate a serial port. This API has been requested by the hardware developer community as a companion to the WebUSB API because operating systems require applications to communicate with USB-based serial ports using their higher-level serial API rather than the low-level USB API. It also supports non-USB serial ports.
Input and output are handled by the Streams API. The permissions model and settings UI follow the model defined by the WebUSB API. The user must select a particular port for the site to be granted permission. Permission can be revoked by clicking on the lock icon in the Omnibox or by visiting Chrome settings. An icon is shown in the tab while the connection is active. Permissions are not currently persisted between browsing sessions but I know this will be a user pain point and so a model similar to WebUSB and Web Bluetooth is envisioned.
The functionality currently available behind a flag and this experiment represents a minimum-viable-product for this API. Issues are filed in the Blink>Serial component for remaining work.
Link to feature tracking bug
https://bugs.chromium.org/p/chromium/issues/detail?id=884928
Link to Chrome launch approval bug (sorry, Googlers only)
https://bugs.chromium.org/p/chromium/issues/detail?id=967863
Link to “Intent to Implement” blink-dev discussion
https://groups.google.com/a/chromium.org/d/msg/blink-dev/GcqEnSW5yHs/r7G3iMmDCQAJ
Goals for experimentation
We have already received some feedback on the API surface and implementation from developers who have tried it behind a flag. The goal for this Origin Trial is to allow sites currently employing workarounds for access to hardware devices to deploy a Serial API-based approach to their users and compare the experience and functionality.
We expect to react to developer feedback and work on completing the implementation during the experiment period.
Sites such as the Espruino IDE are already ready to participate in the Origin Trial. Other projects such as avrgirl-arduino are in the process of porting from the Node SerialPort API to the web API.