In 2019 and 2020, Mozilla and the MDN Product Advisory Board developed and ran the Web Developer Needs Assessment (DNA), a large-scale study of developer needs.
One of the key themes emerging from the results was how high fragmentation (i.e. browser incompatibilities) was in the list of pain points that developers reported. The goal of this WebDX effort is to build a shared understanding and description of the existing interoperable surface of the web platform, and to provide supporting infrastructure that projects that reference web features may leverage to report on their implementation status across browsers.
Various sources — web sites, projects, libraries — discuss and maintain a list of web features. These include:
- Platform status projects that track support across browsers such as Can I Use, Chrome Platform Status, Browser Compatibility Data (BCD) used in MDN Web Docs, Webkit Status.
- Survey platforms such as the State of CSS or the State of JS.
- Projects that track ideas and proposals such as proposals for new APIs in the Web Platform Incubator Community Group (WICG) or ideas raised in the Web we want.
- Standardization roadmap documents and other use cases documents such as the Roadmap of web applications on mobile.
- Lists of polyfill such as Polyfill.io.
- Collective knowledge platforms such as Stack Overflow
- Bug trackers such as Bugzilla or Chromium bugs.
These lists of web features have grown organically, are at different levels of granularity (from specific API functions such as support for SourceBuffer.textTracks
to large features such as "media streaming"), and discuss features from different angles (browser vendors look at features from an implementation perspective, developers from a usage scenario perspective). Additionally, the lists are more or less flat and cannot easily be categorized into groups. The heterogeneity of these existing lists of features makes it hard to combine and compare sources of information, e.g. to evaluate whether a given feature is supported across browsers.
A common list of web features, along with a companion grouping mechanism, seems needed for the web community at large to talk about the same thing and build a shared understanding of the interoperable status of the web platform. Immediate benefits include the ability to more easily and more correctly:
- Assess support for a given feature or feature group across browsers.
- Enhance discussions on features with data from various sources.
- Track progress of a feature over time, from its introduction in web discourse to its standardization, implementation, and bug reports in browsers.
- Detect and fix data errors about features in sources viewed as authoritative (e.g. Can I Use, BCD).
- And overall send consistent signals on the list of interoperable features that developers can build on with confidence.
With the need to support IE11 fading, we have a new opportunity to define a set of features as the baseline of the web platform and update that set regularly with new browser releases. Those would be features that work interoperably across major browsers. That would on the one hand, give developers an easy shorthand to look for in terms of browser support, and on the other hand give us an opportunity to talk regularly about which new features have become part of the baseline of the web. Defining this baseline requires a somewhat stable set of browsers and respective versions that developers consider as required before they can use features. We have started research in this space to better understand audiences and requirements.
As the WebDX effort was being explored, an initial investigation of what it would take to converge on a common list of web features was conducted.
Following that investigation, a methodology to group web features was developed, leading to a mockup of how common web platform features could be represented.
Maintainers and contributors to main platform status projects were also contacted to seek input on the proposal.
Also see the Common web platform feature representation update presentation made by Daniel Beck (@ddbeck).
Daniel Beck is currently prototyping code and tools to create and maintain a common list of web features, coordinating with main platform status projects to ease integration and make sure that requirements are correctly captured and addressed. The idea is to leverage BCD at the heart of the list, given its fine-grained nature.