Let's Play a Game
It's Interop 24 planning time! Let's play a game: Tell me what you prioritize, or don't and why?
I've written before about how prioritization is hard. Just in the most tangible of terms, there are differing finite resources, distributed differently across organizations. That is, not all teams have the same size or composition, or current availability. They're all also generally managed and planned independently with several other factors in mind, and in totally different architectures. That's a big part of what makes standards often take so long to get sorted out to where everyone can just use them without significant concerns.
Conversely, occasionally we see things ship at what seems by comparison amazing speed. Sometimes that's a bit of an illusion: They've been brewing and aligning hard parts for years and we're only counting the end bits. But other times it's just because we've aligned. A nice way to think about this, if you're a developer, is to compare it to web page performance. If all of the resources just load as discovered and there's no thought put into optimization, things can get really out of control. When you do some optimization and coordination, you can get things many times faster pretty quickly. The big difference here is mainly that instead of milliseconds, with standards substitute weeks or something.
I think that's one of the best things about Interop. While it isn't a promise by anyone or anything, it does seem to serve as a function to get us to focus together on some things and align - doing that optimization work.
It's a damned tricky exercise though, I'm not going to lie. There are so many things to consider and align. I kind of like sharing insight into this because I spent a really long time as a developer myself with a significantly different perspective. Seeing all of this from the inside the last few years has been really eye-opening. So, I thought, let's play a game... It might be useful to both of us.
Below is a list of links to about 90 2024 proposals. It's not carefully complete and I have excluded a few that I personally feel perhaps don't fit the necessary criteria for inclusion. It would, of course, be a huge time suck for you to spend your unpaid time carefully researching all of them - so that's not the game. Note that this represents a tiny fraction of the open issues in the platform - so you can start to see how this is challenging.
So, the game is: Bubble sort as many of these as you can (at least 5-10 would be great) and, optionally, share something back about why you prioritized or de-prioritized something. That can be in a reply blog post, a few messages on social media of your choice, share a gist... Whatever you like.
Here's the list (note there is a bit more prose afterward)
- MediaCapture device enumeration
- Standardize SVG properties in CSS to support unitless geometry
- Fetch Web API
- Web Share API
- Full support of background properties and remove of prefixes
- Canvas text rendering and metrics (2024 edition)
- Scroll-driven Animations
- Scrollend Events
- <search>
- text-box-trim
- Web Audio API
- CSS :dir() selectors and dir=auto interoperability
- CSS Nesting
- WebRTC peer connections and codecs
- scrollbar-width CSS property
- JavaScript Promise Integration
- CSS style container queries (custom properties)
- Allowing <hr> inside of <select>
- CSS background-clip
- text-wrap: pretty
- font-size-adjust
- requestIdleCallback
- <details> and <summary> elements
- CSS text-indent
- Relative Color Syntax
- scrollbar-color CSS property
- input[type="range"] styling
- Top Layer Animations
- Gamut mapping
- Canvas2D filter and reset
- WebXR
- User activation (2024 edition)
- text-transform: full-size-kana & text-transform: full-width
- document.caretPostitionFromPoint
- Unit division and multiplication for mixed units of the same type within calc()
- EXPAND :has() to include support for more pseudo-classes
- WebM AV1 video codec
- CSS image() function
- WebDriver BiDi
- CSS box-decoration-break
- text-wrap: balance
- inverted-colors Media Query
- Accessibility (computed role + accname)
- display: contents
- Accessibility issues with display properties (not including display: contents)
- HTMLVideoElement.requestVideoFrameCallback()
- Text Fragments
- blocking="render" attribute on scripts and style sheets
- Indexed DB v3
- Declarative Shadow DOM
- attr() support extended capabilities
- Notifications API
- HTTP(S) URLs for WebSocket
- WasmGC
- size-adjust
- video-dynamic-range Media Query
- CSS scrollbar-gutter
- CSS Typed OM Level 1 (houdini)
- import attributes / JSON modules / CSS modules
- CSS element() function
- View Transitions Level 1
- Local Network Access and Mixed Content specification
- WebM Opus audio codec
- Custom Media Queries
- Trusted Types
- WebTransport API
- CSS object-view-box
- Intersection Observer v2
- Custom Highlight API
- backdrop-filter
- WebRTC “end-to-end-encryption”
- Streams
- Media pseudo classes: :paused/:playing/:seeking/:buffering/:stalled/:muted/:volume-locked
- CSS box sizing properties with MathML Core
- Detect UA Transitions on same-document Navigations
- css fill/stroke
- JPEG XL image format
- font-family keywords
- CSS Multi-Column Layout block element breaking
- Navigation API
- Ready-made counter styles
- hidden=until-found and auto-expanding details
- Popover
- P3 All The Things
- URLPattern
- margin-trim
- overscroll-behavior on the root scroller
- CSS Painting API Level 1 (houdini)
- CSS Logical Properties and Values
- CSS caret, caret-color and caret-shape properties
The tricky thing is that there is no 'right' answer here, and one can easily make several cases. For example, perhaps we should prioritize things that cannot be polyfilled or done with pre-processors over things that can. That sounds reasonable enough, but given that the queue never empties: Do you just do that forever? Does it eventually lead to larger areas that are ignored? Similarly, do you focus on the things that are sure to be used by everyone, or do you assume those already get the most priority and focus on the things that don't. Do you pick certain compat pain points/bugs, or focus on launching new features quickly and very interoperably?
It's a hard game! Looking forward to your answers.