#174: HTML General Review

Visit on Github.

Opened Apr 28, 2017

Placeholder for a HTML general review discussion that we have been discussing today.

Goal:

  • Pick a number of points on which to open separate issues, which we can then dig into and provide substantive feedback to HTML WG

Discussions

Comment by @tantek Oct 17, 2017 (See Github)

subscribe

Comment by @domenic Oct 17, 2017 (See Github)

@tantek use the "Subscribe" button on the sidebar.

Comment by @tantek Nov 15, 2017 (See Github)

@domenic apparently by mentioning me you subscribed me! "You’re receiving notifications because you were mentioned."

Comment by @dbaron Jan 31, 2018 (See Github)

Discussed at London face-to-face. Though we're likely to continue discussion to tomorrow morning.

We need to figure out how to split this up.

One meta-point that came up briefly was the value of specifying requirements for document conformance, which is something that HTML does but few other Web specs do. This might be worth future discussion.

Comment by @nigelmegitt Jan 31, 2018 (See Github)

Examples of two specs that do specify document conformance requirements in very different ways, both from the TTWG:

Comment by @annevk Jan 31, 2018 (See Github)

CSS does as well. body { background:blue works, but is not valid.

It's not common for APIs, but for declarative formats it's fairly reasonable and establishes some rough notion of forward compatibility, by having things you're not supposed to use, but won't cause a fatal error either, thereby allowing for extensions.

Comment by @travisleithead Feb 1, 2018 (See Github)

For this issue, we have consensus to split this up into various more specific parts of HTML for individual review. @travisleithead tasked with proposing the logical review chunks.

Discussed Mar 6, 2018 (See Github)

Travis: Started looking into what a breakout would be, but didn't get far.

Alex: How do we structure this to come away with a lot of progress?

Travis: Perhaps divide-and-conquer? Assign homework? Maybe work to a goal?

Dan: We could use a checklist? What could we do while at the face-to-face? Create some sort of document to split things up? One thing we keep talking about is how big of a rock this is--and need to de-compose the problem. We can break-up the one issue into smaller issues.

Travis: Yes, and I can have next steps ready for next week.

Discussed Mar 20, 2018 (See Github)

Peter: Travis isn't here, so let's punt.

(Travis joins.)

Travis: I have been making progress. Especially on how to subdivide it into chunks that can be reviewed by multiple people. Assumption is that larger test suites mean more complexity - so far 25 review sections. Some sections are pretty big - but I think I might have something to share pretty soon. Might grow into more reviews - will share draft when I have the first draft.

ACTION: Travis to finish and share.

Comment by @travisleithead Mar 21, 2018 (See Github)

HTML "Sub-specs" review breakout proposal

The features enumerated below focus on areas of the spec with browser implementation requirements (such as processing models or algorithms), and mostly skip sections of conformance criteria. Also, features with little differentiation (e.g., <small>, <u>, <b>, etc.) are not included as there is not much to review for them anyway.

HTML Document and Elements Structured Serialize/Deserialize Custom Elements HTML Linking HTML Styling - david HTML Lists HTML Ruby - david HTML Images Browsing Contexts and Security HTML Media HTML Tables - david HTML Forms HTML Input HTML Option Lists - david HTML User Interaction HTML Focus HTML Scripting HTML Templates HTML Drawing Microdata Navigation and Browsing History App Cache HTML Utilities HTML Parsing HTML Timers and Timeslicing - david Server-Sent Events Web Sockets Cross-Document Messaging Web Workers Web Storage XML Infrastructure HTML Obsolete Features IANA Registries

(33 groups)

DETAILED BREAKDOWN

The "Features" are just a sample of what you will encounter as part of the listed spec sections, it's not meant to be exhaustive.

The "Sections" are all the sections of the HTML spec that would be included in the "sub spec" review. I tried to group sections of the spec that made sense together and favored each "sub-spec" with a good balance of size and complexity--though some "sub-specs" are definately bigger than others. There's still lots of entanglement, but I think this is a pretty good first attempt. Where the spec section has associated Web Platform Tests, the specific WPT path is noted.

HTML Document and Elements

Sections WPT path Features
2.6.1 html/dom/reflection-*.html property/attribute reflection
2.6.2 to 2.6.4 html/infrastructure/common-dom-interfaces collections
3.1 html/dom/documents document
3.2 html/dom/elements htmlelement
4.2.2 html/semantics/document-metadata/the-title-element <title>
4.2.5 html/semantics/document-metadata/the-meta-element <meta>
4.3.11 html/semantics/sections/headings-and-sections (no tests) outline algorithm
8.1.5 (no tests) events and event handlers

Structured Serialize/Deserialize

Sections WPT path Features
2.7 html/infrastructure/safe-passing-of-structured-data passing/storing structured data

Custom Elements

Sections WPT path Features
3.2.3 custom-elements/htmlconstructor
4.13 custom-elements <my-element>

HTML Linking

Sections WPT path Features
2.4 html/infrastructure/urls dynamic changes to base URL
4.2.3 html/semantics/document-metadata/the-base-element <base>
4.2.4 html/semantics/document-metadata/the-link-element <link>
4.5.1 html/semantics/text-level-semantics/the-a-element <a>
4.6 html/semantics/links link types
4.6.6.17 preload (preload link type)

HTML Styling

Sections WPT path Features
3.2.7 innerText innerText (returns an element's text "as rendered")
4.2.6 html/semantics/document-metadata/the-style-element <style>
html/semantics/document-metadata/styling
4.2.7 html/semantics/document-metadata/interactions-of-styling-and-scripting
14.1 to 14.8 html/rendering CSS UA stylesheet rendering

HTML Lists

Sections WPT path Features
4.4.8 html/semantics/grouping-content/the-li-element <li>
4.4.5 html/semantics/grouping-content/the-ol-element <ol>

HTML Ruby

Sections WPT path Features
4.5.10 html/semantics/text-level-semantics/the-ruby-element <ruby>, <rt>, <rp>

HTML Images

Sections WPT path Features
4.8.1 to 4.8.4 (no picture element tests?) <picture>, <source>
4.8.3 html/semantics/embedded-content/the-img-element <img>, decode() (see #182)
4.8.13 to 4.8.15 html/semantics/embedded-content/image-maps image maps

Browsing Contexts and Security

Sections WPT path Features
4.8.5 html/semantics/embedded-content/the-iframe-element <iframe>, srcdoc
4.8.6 html/semantics/embedded-content/the-embed-element <embed>
4.8.7 html/semantics/embedded-content/the-object-element <object>
7.1 html/browsers/windows browsing contexts
7.2 to 7.3 html/browsers/the-window-object cross-realm security model, window, window.open()
7.4 html/browsers/the-windowproxy-exotic-object window
7.5 html/browsers/origin
7.6 html/browsers/sandboxing sandbox
8.2 html/webappapis/the-windoworworkerglobalscope-mixin self.origin

HTML Media

Sections WPT path Features
4.8.9 html/semantics/embedded-content/the-video-element <video>
4.8.10 html/semantics/embedded-content/the-audio-element <audio>
4.8.11 html/semantics/embedded-content/media-elements/track/track-element <track>
4.8.12 html/semantics/embedded-content/media-elements media process model

HTML Tables

Sections WPT path Features
4.9 html/semantics/tabular-data <table> et al.

HTML Forms

Sections WPT path Features
4.10.3 html/semantics/forms/the-form-element <form>
4.10.15 html/semantics/forms/the-fieldset-element <fieldset>
4.10.17 html/semantics/forms/form-control-infrastructure process model
4.10.18 html/semantics/forms/attributes-common-to-form-controls autocomplete, maxlength, etc.
4.10.18.5 (see also 4.15) html/semantics/disabled-elements enable/disable
4.10.20 html/semantics/forms/constraints constraint validation
4.10.21 html/semantics/forms/form-submission-0 form submission
4.10.22 html/semantics/forms/resetting-a-form form reset

HTML Input

Sections WPT path Features
4.10.5 html/semantics/forms/the-input-element <input>
4.10.5.3.10 html/input/the-placeholder-attribute placeholder
4.10.6 html/semantics/forms/the-button-element <button>
4.10.11 html/semantics/forms/the-textarea-element <textarea>
4.10.11 html/form-elements/the-textarea-element
4.10.13 html/semantics/forms/the-progress-element <progress>
4.10.14 html/semantics/forms/the-meter-element <meter>
4.10.19 html/semantics/forms/textfieldselection selection API
6.6 html/editing/editing-0 contenteditable, inputmode

HTML Option Lists

Sections WPT path Features
4.10.7 html/semantics/forms/the-select-element <select>
4.10.8 html/semantics/forms/the-datalist-element <datalist>
4.10.8 html/semantics/forms/the-optgroup-element <optgroup>
4.10.10 html/semantics/forms/the-option-element <option>

HTML User Interaction

Sections WPT path Features
4.11 html/semantics/interactive-elements <summary>, <details>, <dialog>
6.1 html/editing/the-hidden-attribute hidden
6.3 html/editing/activation inert, activation
6.7 html/editing/dnd drag-and-drop

HTML Focus

Sections WPT path Features
6.4 html/editing/focus focus(), tabindex
6.5 (no tests for accesskey other than conformance-checkers/html/attributes/accesskey) accesskey

HTML Scripting

Sections WPT path Features
4.12.1 to 4.12.2 html/semantics/scripting-1/the-script-element <script>
8.1.1 to 8.1.4 html/webappapis/scripting scripting process model, script errors/promise rejections, event loop

HTML Templates

Sections WPT path Features
4.12.3 html/semantics/scripting-1/the-template-element <template>

HTML Drawing

Sections WPT path Features
4.12.5 html/semantics/embedded-content/the-canvas-element <canvas>
4.12.5.1 to 4.12.5.2 2dcontext 2d context
4.12.5.3 offscreen-canvas OffscreenCanvas (see also review #141)
8.8 (no tests?) imagebitmap (see also review #141)

Microdata

Sections WPT path Features
5 (no tests) itemscope, itemprop

Navigation and Browsing History

Sections WPT path Features
7.7 html/browsers/history history, location
7.8 html/browsers/browsing-the-web page load processing model, history traversal, unloading a document

App Cache

Sections WPT path Features
7.9 html/browsers/offline application cache

HTML Utilities

Sections WPT path Features
8.3 html/webappapis/atob base 64 converter
8.6.1 (user prompts, no tests?) alert()
8.6.2 (printing, no tests?) print()
8.7 html/webappapis/system-state-and-capabilities navigator, protocol handlers

HTML Parsing

Sections WPT path Features
8.4 html/webappapis/dynamic-markup-insertion document.write()
12.2 html/syntax/parsing Parsing algorithm
12.4 html/syntax/parsing-html-fragments fragment parsing
12.3 html/syntax/serializing-html-fragments fragment serialization

HTML Timers and Timeslicing

Sections WPT path Features
8.5 html/webappapis/timers setTimeout()
8.9 html/webappapis/animation-frames requestAnimationFrame()

Server-Sent Events

Sections WPT path Features
9.2 eventsource EventSource

Web Sockets

Sections WPT path Features
9.3 websockets WebSocket

Cross-Document Messaging

Sections WPT path Features
9.1, 9.4 webmessaging MessageChannel, BroadcastChannel

Web Workers

Sections WPT path Features
10 workers dedicated and shared workers

Web Storage

Sections WPT path Features
11 webstorage sessionStorage and localStorage

XML Infrastructure

Sections WPT path Features
2.1.11 domxpath XPath/XSLT tweaks for HTML
13 html/syntax/serializing-xml-fragments XML parsing/serializing
(see also) domparser innerHTML, XML serialization
14.9 html/rendering/unstyled-xml-documents rendering un-styled XML documents

HTML Obsolete Features

Sections WPT path Features
15 html/obsolete <marquee>, <frame>, etc.

IANA Registries

Sections WPT path Features
16 html/iana (no tests) registries meant for IANA

note: the <slot> element is not included in any group, since it seemed more like a Shadow DOM-dependent feature, which we would review as part of DOM.

Discussed Mar 27, 2018 (See Github)

Travis: This is my proposal to break it into bite-size chunks. Had some feedback from folks at Microsoft. Looking for feedback from this group on how the breakout is, or whether we should drop something from the review (e.g., appcache, microdata). Given guidance, happy to take this to the next step and open issues.

[reads]

Alex: Outline algorithm is still here?

Travis: We do use it for something in our a11y code, though simpler version than what's in the spec.

Alex: W3C or WHATWG document?

Travis: I was looking at the WHATWG document; more in it. e.g., server-sent events, websockets, cross-document messaging, web storage.

Travis: We already have a review open for two of them (offscreen canvas, ?).

David: seems like a reasonable breakdown; will reviewing them lead to useful outcomes?

Alex: Are there large piles of legacy APIs that can be rebuilt in terms of promises, generators (?), streams, etc. Also some things here that require permissions not currently modeled in the Permissions API.

Travis: We also talked about looking for things that aren't explained well by the platform; forms and form submission is one area we talked about. Identifying those could be useful.

Peter: Paths forward? You suggested breaking up into individual issues. Then we could spend time at the face-to-face triaging and assigning from there? Maybe add labels to categorize the sorts of things we're looking at.

Comment by @travisleithead Mar 27, 2018 (See Github)

Some potential TODOs for each review:

  • Legacy APIs that could be 'modernized'?
  • Things that could require permissions that aren't modelled in the perms API?
  • Areas of the platform that are 'magic' (could use explaining in terms of extensible web manifesto)
Comment by @cynthia Mar 27, 2018 (See Github)

What parts are wishful thinking, and should be written to be made more realistic also comes to mind.

Comment by @travisleithead Apr 6, 2018 (See Github)
  • Mike Smith notes the developer portions (green boxes) are places in the spec that are focused on the developer audience. Where these are missing or could use additional detail, clarification, etc., these should be noted.
  • Also how the features are meant to be used together (the integration parts)
Discussed Apr 17, 2018 (See Github)

Travis: I've got a template almost ready. Looks like this will create 33 issues.
Dan: will bump this out to the 24th. Also moving CSS issues so we don't have too much overlap.

Discussed Apr 24, 2018 (See Github)

Travis: I propose we close this issue. I've created issues for each of the section. Action for everyone: Look over issues: 242-274. Assign yourself to one of these reviews.

Dan: When you created these issues, have you linked them to specific issues in the HTML repo? Or have you stayed away from which vrsion of HTML we're reviewing?

Travis: I've been specific: these are all sections in the WHATWG document. That's a superset of what's in the W3C document. I"ve also tried to be specific on what parts of the spec to look at.

... For example... https://github.com/w3ctag/design-reviews/issues/242

...I'm not sure what milestones to set; each person claiming an issue should put in their own milestones.

dan: This is a lot of work; amazing that you've done this, Travis.

...Now we need to triage these and assign them out to people. Once everyone has claimed the ones they want, then we'll allocate the rest next week.

...Does the HTML community know we're doing this?

Travis: Domenic has commented on this issue. I can reach out to him and Anne.

Dan: The reason I was asking which version of HTML we're commenting on — AC meeting is coming up. The future of W3C in HTML and DOM will be on the table. the TAG will be asked to weigh in. I think we're doing the riht thing in referencing the WHATWG version, but it's bound to be controversial.

...If you're watching the AC list, the TAG's name is coming up a lot in questions about the future.

Hadley: I think we should discuss that before the AC meeting

Comment by @torgo Apr 24, 2018 (See Github)

We agreed to close this issue in favour of the new more granular issues that @travisleithead has opened up.

Comment by @dbaron Apr 24, 2018 (See Github)

Also see the above list as a list of issues.

Comment by @travisleithead Apr 24, 2018 (See Github)

@domenic and @annevk FYI that we've sub-divided the TAG's monolithic HTML review issue into smaller, more focused issues. If there are sections (issues) you feel should get more attention/focus or have specific "features" that you'd like particular directed feedback, please let us know!

Comment by @annevk Apr 24, 2018 (See Github)

I'd love help untangling navigation/about:blank/general global and document lifecycle.

Comment by @dbaron Apr 24, 2018 (See Github)

@annevk (and others): probably best to let us know in separate issues in this repo, and with a tad more detail. (On the other hand, I'm not sure if that issue is the sort that the TAG is well-suited to help with; it sounds like it might be more a matter of doing a lot of research into what the compatibility constraints are.)

Comment by @annevk Apr 24, 2018 (See Github)

Yeah, you're right.

I'm not sure there's much review to be done other than of the research kind. What we primarily need is additional resources to clear all the technical debt so we have a better foundation for the rest of the platform (pretty much all of which builds on top of HTML).