#211: Transform Streams

Visit on Github.

Opened Nov 2, 2017

Dear Sirs and Madam of TAG!

I'm requesting a TAG review of:

Further details (optional):

  • Relevant time constraints or deadlines: I hope to launch in Blink M64, subject to signals from other browser vendors. The branch date is November 30th.
  • I have read and filled out the Self-Review Questionnare on Security and Privacy: not applicable to this specification, as it specifies base primitives. Future specifications which build on transform streams may need this.
  • I have reviewed the TAG's API Design Principles

You should also know that...

As this specification is for a base primitive applicable across all platforms, it does not use Web IDL, but instead is written in the style of the JavaScript specification.

We'd prefer the TAG provide feedback as (please select one):

  • open issues in our Github repo for each point of feedback
  • open a single issue in our Github repo for the entire review
  • leave review feedback as a comment in this issue and @-notify [github usernames]

Discussions

Discussed Jan 10, 2018 (See Github)

[no progress]

Peter: what milestone?

Alex: we owe them feedback - ... readable streams, writable streams, implicit buffers, implicit copies... back pressure. ... largely covered. have been though about anyway. What I don't see is an explainer. I will ask them for am explainer.

[ bumped 2 weeks ]

--

Comment by @slightlyoff Jan 10, 2018 (See Github)

Sorry for the slow review. Glad to see tests! Thanks so much for that.

It's a bit worrying that the example code in is so terse. Are there blog posts or a fuller explainer that explains what problems this design is meant to address and how it addresses them?

Comment by @ricea Jan 10, 2018 (See Github)

It took a lot of work to make the examples that terse :smile:

For now the demos have longer examples. In particular, https://streams.spec.whatwg.org/demos/append-child.html demonstrates a chain of transformations.

There's some brief coverage of the requirements for the design at https://github.com/whatwg/streams/blob/master/Requirements.md but we don't have any single document that explains the design motivations and decisions. What kind of depth would you like to see?

Comment by @torgo Feb 2, 2018 (See Github)

@slightlyoff to write some more feedback.

Comment by @yoavweiss Mar 15, 2018 (See Github)

Friendly ping - there is now an intent to ship for this feature. Any feedback from the TAG?

Discussed Mar 27, 2018 (See Github)

Alex: I believe this was going through intent-to-ship in Chrome. Has 3 LGTMs; probably will ship.

Alex: Didn't write feedback; I'll take that as an extra action item, before the face-to-face.

Comment by @slightlyoff Apr 5, 2018 (See Github)

This looks fine.

A few questions came up from discussion today:

  • There's an analogue between this and some of the other streaming/piping operations in the platform; e.g. WebRTC or Web Audio node graph construction. Those other systems do work on other threads. Is there a plan to allow a worklet or worker to participate in these stream DAGs?
  • Would still love to see a separate explainer for this feature. Explaining why these are the right design choices and why they're superior to the considered alternatives would be useful for everyone.
  • Would still like to see more examples in the spec/explainer.

Here's our template explainer doc: https://docs.google.com/document/d/1cJs7GkdQolqOHns9k6v1UjCUb_LqTFVjZM-kc3TbNGI/edit#heading=h.27qen9z79dwm