Skip to content

Instantly share code, notes, and snippets.

What would you like to do?


The goals of this project are to define a layered architecture for the client-side web platform1 that W3C working groups can use to define new platform features and refine existing platform features.

Specifically, this architecture defines a clear relationship between markup and imperative code.

It also defines an architecture for thinking about other layers between the highest level markup and the lowest level imperative forms.

In order to achieve this, we will produce a guideline for designing new platform APIs that satisfy the requirements of a layered architecture.

Success Criteria

  • One or more features transitioned to a more layered architectures
  • One or more new APIs that use a layered architecture as a pattern
  • General agreement that layering is a preferred pattern for API development on the platform
    • alternatively, discovery that this is a bad pattern that should not be used
  • One or more popular libraries makes declarative forms available using layered APIs like Web Components, to replace or augment existing imperative APIs.

Key Deliverables

  • Gather existing examples of well-layered APIs in the platform
  • Gather existing examples of poorly layered APIs in the platform
  • Work with working groups to transition existing APIs to a more layered architecture
  • Initial draft of the architecture
  • Written examples created together with working group having success with the architecture
  • Work with the developer community to help them understand the concept of platform layering and how to use it use-cases handled by existing libraries.
  • Final draft of recommendations to (1) working groups, and (2) the developer community about the architecture.

Concerned Working Groups

The TAG expects to liaise with at least the following groups as this work proceeds:

  • CSS
  • Web Apps
  • Web Apps Sec
  • HTML
  • Protocol and Formats
  • Web RTC
  • Web Pointer Events
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment