#174: HTML General Review
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).
OpenedApr 28, 2017
Placeholder for a HTML general review discussion that we have been discussing today.
Goal: