https://github.com/WICG/serial/blob/gh-pages/EXPLAINER.md
https://github.com/w3ctag/design-reviews/issues/431
Adds an API for communicating with hardware devices over a physical or virtual serial port.
https://groups.google.com/a/chromium.org/d/msg/blink-dev/GcqEnSW5yHs/r7G3iMmDCQAJ
Gecko: Negative
WebKit: Negative
Web developers: Strongly positive
Developers have provided strongly positive feedback on the Origin Trial and have helped identify bugs and missing features which will be available in this extended trial. As an example application, Vaadin has published a data plotter component using this API.
The goal of continuing this experiment is to collect developer feedback on changes that are landing in Chrome 86, including:
Discarding buffered data is now possible by calling cancel() and abort() on the readable and writable attributes of the SerialPort object. (crbug/989653)
Waiting for buffered data to be written is now possible by calling close() on the writable attribute of the SerialPort object. (crbug/989656)
The spelling of many dictionary fields has been changed to standardize on lowerCamelCase for multi-word names and to avoid acronyms. (crrev/c/2347375)
This experiment will begin with the stable-channel release of Chrome 86 and end shortly before the stable-channel release of Chrome 89.
Experimentation with this API began in Chrome 80 and was extended in Chrome 83 due to the cancelation of Chrome 82 because of COVID-19 and to allow developers to experiment with new device filtering and connection event interfaces. Without extension the current Origin Trial will expire on September 29, 2020, shortly before the stable release of Chrome 86. Further changes the APIs (described above) are landing in Chrome 86 for which we would like to collect developer feedback and experience.
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. 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. Work is also in-progress to add support for connecting to Bluetooth Classic Serial Port Profile (SPP) devices using this API. This will enable an implementation of this API for Android which only provides access to Bluetooth devices.
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 readable.tee() method to split the streams going to or from the device and print them to the console for inspection.
No, see above.
No, but tentative tests for the feature are available in the wpt_internal/serial directory and can be exported to the Web Platform Tests repository as they mature.
https://chromestatus.com/feature/6577673212002304
This intent message was generated by Chrome Platform Status and cleaned up by hand.
Design docs
https://github.com/WICG/serial/blob/gh-pages/EXPLAINER.md
TAG review (in progress)
https://github.com/w3ctag/design-reviews/issues/431
Summary
Adds an API for communicating with hardware devices over a physical or virtual serial port.
Link to “Intent to Prototype” blink-dev discussion
https://groups.google.com/a/chromium.org/d/msg/blink-dev/GcqEnSW5yHs/r7G3iMmDCQAJ
Risks
Interoperability and Compatibility
Gecko: Negative
WebKit: Negative
Web developers: Strongly positive
Developers have provided strongly positive feedback on the Origin Trial and have helped identify bugs and missing features which will be available in this extended trial. As an example application, Vaadin has published a data plotter component using this API.
Goals for experimentation
The goal of continuing this experiment is to collect developer feedback on changes that are landing in Chrome 86, including:
Discarding buffered data is now possible by calling cancel() and abort() on the readable and writable attributes of the SerialPort object. (crbug/989653)
Waiting for buffered data to be written is now possible by calling close() on the writable attribute of the SerialPort object. (crbug/989656)
The spelling of many dictionary fields has been changed to standardize on lowerCamelCase for multi-word names and to avoid acronyms. (crrev/c/2347375)
Experimental timeline
This experiment will begin with the stable-channel release of Chrome 86 and end shortly before the stable-channel release of Chrome 89.
Reason this experiment is being extended
Experimentation with this API began in Chrome 80 and was extended in Chrome 83 due to the cancelation of Chrome 82 because of COVID-19 and to allow developers to experiment with new device filtering and connection event interfaces. Without extension the current Origin Trial will expire on September 29, 2020, shortly before the stable release of Chrome 86. Further changes the APIs (described above) are landing in Chrome 86 for which we would like to collect developer feedback and experience.
Ongoing technical constraints
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. 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. Work is also in-progress to add support for connecting to Bluetooth Classic Serial Port Profile (SPP) devices using this API. This will enable an implementation of this API for Android which only provides access to Bluetooth devices.
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 readable.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 six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
No, see above.
Is this feature fully tested by web-platform-tests?
No, but tentative tests for the feature are available in the wpt_internal/serial directory and can be exported to the Web Platform Tests repository as they mature.
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/6577673212002304
This intent message was generated by Chrome Platform Status and cleaned up by hand.
--
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%3DMbpi-DgCtYn4Zvz9iaK6NqmEyHpmxNmPqpE4HdR5pGmAg%40mail.gmail.com.
How sad would participating properties be if the API became unavailable for some period of time?
Hey Yoav/Thomas/Reilly, long time no see! :)
Just to add some more to what Thomas said... yeah. Would I would be very sad if it went away.
Specifically, we have a couple of customers on AnesthesiaCharting.com using web serial API to be able to communicate with patient vitals monitors for charting purposes.
My main points:
1. This was absolutely my fault for not understanding that there *was* a planned gap between OT and shipping.
If I had understood this, I would not have shipped it to any real users. (which incidentally, would have decreased volume/value of OT feedback).
2. I took that gamble, because I knew I had a fallback... and I made disclaimers to customers that it *could* break or go away.
3. The fallback I have sucks: they have to install our electron app instead (that uses node-serialport).
4. It sucks to have to contact customers that are using it directly in chrome and tell them they have to download our electron app for a bit, only to tell them a few weeks later that they don't need it anymore. I would love to avoid that... changing user habits is hard, and incurs a cost in their goodwill toward the product. For reasons i outlined here: https://joreteg.com/blog/project-fugu-a-new-hope I'd much rather keep them in the PWA instead of Electron.
Anyway, thanks for considering all this stuff. I know it's hard to balance interests and really appreciate the work you all are doing to add these badass APIs to the web <3
- Henrik