<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Annevk</id>
	<title>WHATWG Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Annevk"/>
	<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/wiki/Special:Contributions/Annevk"/>
	<updated>2026-05-14T04:09:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Specs/todo&amp;diff=10382</id>
		<title>Specs/todo</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Specs/todo&amp;diff=10382"/>
		<updated>2024-01-25T13:10:31Z</updated>

		<summary type="html">&lt;p&gt;Annevk: APNG is done! And ICO is not.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are many specifications that need editors. This page lists some of the more important ones. If you want to volunteer to edit one of these specs, contact ian@hixie.ch, post on the WHATWG mailing list or say something on [[IRC]].&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
&lt;br /&gt;
* [https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html HTML Editing APIs]&lt;br /&gt;
* multipart/form-data&lt;br /&gt;
* SVG&lt;br /&gt;
* ICO (if it contains multiple images, which one is used?)&lt;br /&gt;
* Animated [[GIF]]s need a spec that, in particular, specifies how to handle timings (not all browsers honor all values, so we should specify what needs to be honored exactly)&lt;br /&gt;
* [[Wikipedia:Robots.txt|robots.txt]]&lt;br /&gt;
* A specification that defines how XML maps to DOM Core. (This could be in DOM Parsing and Serialization or HTML if XML does not get updated.)&lt;br /&gt;
* HTTP (error handling in particular, might become less of an issue if we&#039;re successful in removing it in favor of HTTPS)&lt;br /&gt;
** Client-side HTTP implementation requirements specification (&amp;quot;option 3&amp;quot; in http://www.w3.org/mid/20101101063413.bf1d8102.eric@bisonsystems.net)&lt;br /&gt;
&lt;br /&gt;
== APIs ==&lt;br /&gt;
&lt;br /&gt;
* User Interaction Events (onclick, onkeypress, etc).&lt;br /&gt;
** e.g. need to define somewhere that if you cancel mousedown, an element can&#039;t get focus&lt;br /&gt;
** setCapture / releaseCapture [http://lists.w3.org/Archives/Public/public-webapps/2008OctDec/0308.html]&lt;br /&gt;
** [http://krijnhoetmer.nl/irc-logs/whatwg/20121128#l-1719 selectstart] (WebKit/IE)&lt;br /&gt;
** https://w3c.github.io/uievents/&lt;br /&gt;
* Undomanager: http://rniwa.com/editing/undomanager.html and http://rniwa.com/editing/undomanager-usecases.html&lt;br /&gt;
* [[DOM XPath]]&lt;br /&gt;
* [[DOM XSLTProcessor]]&lt;br /&gt;
&lt;br /&gt;
== CSS ==&lt;br /&gt;
&lt;br /&gt;
There are [http://www.w3.org/Style/CSS/current-work many specifications for extending CSS] that are in need of editors. The most important ones are:&lt;br /&gt;
* Hit Testing (see http://lists.w3.org/Archives/Public/www-style/2010Aug/0407.html)&lt;br /&gt;
* Form control styling (see [https://github.com/domenic/html-as-custom-elements HTML as Custom Elements])&lt;br /&gt;
* Replaced Content&lt;br /&gt;
** http://dev.w3.org/csswg/css3-content/ (Do we still want this or is the component model sufficient?)&lt;br /&gt;
* an imperative model of box-tree construction&lt;br /&gt;
&lt;br /&gt;
== Registries ==&lt;br /&gt;
&lt;br /&gt;
Currently, the state of registries on the Web (and indeed for the Internet in general) is a disaster. At a minimum, the following registries need dramatically updating:&lt;br /&gt;
&lt;br /&gt;
* MIME types&lt;br /&gt;
* URL schemes&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible that the right solution is to change approach altogether (e.g. moving more to a wiki model of registries).&lt;br /&gt;
&lt;br /&gt;
See also: [[Registries]]&lt;br /&gt;
&lt;br /&gt;
== Other stuff ==&lt;br /&gt;
&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2008Oct/0127.html has a description of some sections that needed editing in 2008 and how much work they would be.&lt;br /&gt;
&lt;br /&gt;
== Stuff we managed to specify eventually ==&lt;br /&gt;
&lt;br /&gt;
* innerText and outerText&lt;br /&gt;
** http://perfectionkills.com/the-poor-misunderstood-innerText/&lt;br /&gt;
** https://github.com/whatwg/compat/issues/5&lt;br /&gt;
** https://html.spec.whatwg.org/multipage/dom.html#the-innertext-idl-attribute&lt;br /&gt;
* data: URLs&lt;br /&gt;
** https://fetch.spec.whatwg.org/#data-urls&lt;br /&gt;
* Table Layout&lt;br /&gt;
** http://dbaron.org/css/intrinsic/&lt;br /&gt;
** http://dev.w3.org/csswg/css3-tables-algorithms/Overview.src.htm&lt;br /&gt;
** https://drafts.csswg.org/css-tables-3/&lt;br /&gt;
* The console.* API&lt;br /&gt;
** https://github.com/DeveloperToolsWG/console-object&lt;br /&gt;
** http://www.w3.org/Bugs/Public/show_bug.cgi?id=10694&lt;br /&gt;
** http://www.w3.org/mid/d7be01cb7077$4dd45010$e97cf030$@gmail.com&lt;br /&gt;
** http://sideshowbarker.github.com/console-spec/&lt;br /&gt;
** https://console.spec.whatwg.org/&lt;br /&gt;
* APNG&lt;br /&gt;
** https://w3c.github.io/PNG-spec/&lt;br /&gt;
&lt;br /&gt;
[[Category:Spec coordination|*]]&lt;br /&gt;
[[Category:Specification editing]]&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User_talk:EdwardOConnor&amp;diff=10342</id>
		<title>User talk:EdwardOConnor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User_talk:EdwardOConnor&amp;diff=10342"/>
		<updated>2021-04-26T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Annevk moved page User talk:EdwardOConnor to User talk:TheresaOConnor: Automatically moved page while renaming the user &amp;quot;EdwardOConnor&amp;quot; to &amp;quot;TheresaOConnor&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User talk:TheresaOConnor]]&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User_talk:TheresaOConnor&amp;diff=10341</id>
		<title>User talk:TheresaOConnor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User_talk:TheresaOConnor&amp;diff=10341"/>
		<updated>2021-04-26T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Annevk moved page User talk:EdwardOConnor to User talk:TheresaOConnor: Automatically moved page while renaming the user &amp;quot;EdwardOConnor&amp;quot; to &amp;quot;TheresaOConnor&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;amp;lt;pre role=image aria-describedby=foo&amp;gt;  )\._.,--....,&#039;``.    fL&lt;br /&gt;
  /,   _.. \   _\  ;`._ ,.&lt;br /&gt;
 `._.-(,_..&#039;--(,_..&#039;`-.;.&#039;&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
 &amp;amp;lt;p id=foo hidden&amp;gt;An ASCII art rendition of a cat in prone position.&amp;amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User:EdwardOConnor&amp;diff=10340</id>
		<title>User:EdwardOConnor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User:EdwardOConnor&amp;diff=10340"/>
		<updated>2021-04-26T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Annevk moved page User:EdwardOConnor to User:TheresaOConnor: Automatically moved page while renaming the user &amp;quot;EdwardOConnor&amp;quot; to &amp;quot;TheresaOConnor&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User:TheresaOConnor]]&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User:TheresaOConnor&amp;diff=10339</id>
		<title>User:TheresaOConnor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User:TheresaOConnor&amp;diff=10339"/>
		<updated>2021-04-26T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Annevk moved page User:EdwardOConnor to User:TheresaOConnor: Automatically moved page while renaming the user &amp;quot;EdwardOConnor&amp;quot; to &amp;quot;TheresaOConnor&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In addition to keeping an eye on wiki spam, I occasionally [[Special:Contributions/EdwardOConnor|contribute to this wiki]].&lt;br /&gt;
&lt;br /&gt;
You might also be interested in [http://www.w3.org/html/wg/wiki/Special:Contributions/Eoconnor my contributions to the HTML WG wiki].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
{{cc-public-domain-release}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User:Annevk&amp;diff=10288</id>
		<title>User:Annevk</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User:Annevk&amp;diff=10288"/>
		<updated>2019-05-24T12:16:44Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See [https://annevankesteren.nl/about About Anne van Kesteren] for some personal details as well as contact details. See below for my WHATWG activities.&lt;br /&gt;
&lt;br /&gt;
== Writing ==&lt;br /&gt;
&lt;br /&gt;
* DOM - https://dom.spec.whatwg.org/&lt;br /&gt;
* [[Encoding]] - https://encoding.spec.whatwg.org/&lt;br /&gt;
* [[Fetch]] (formerly CORS) - https://fetch.spec.whatwg.org/&lt;br /&gt;
* HTML - https://html.spec.whatwg.org/multipage/ (primarily reviews)&lt;br /&gt;
* Infra - https://infra.spec.whatwg.org/&lt;br /&gt;
* MIME Sniffing - https://mimesniff.spec.whatwg.org/ (rewrote the MIME types part thus, need better testing plan for sniffing)&lt;br /&gt;
* Notifications API - https://notifications.spec.whatwg.org/&lt;br /&gt;
* Storage - https://storage.spec.whatwg.org/&lt;br /&gt;
* [[URL]] - https://url.spec.whatwg.org/&lt;br /&gt;
* [[XMLHttpRequest]] - https://xhr.spec.whatwg.org/&lt;br /&gt;
&lt;br /&gt;
Hobby:&lt;br /&gt;
&lt;br /&gt;
* [[HTTP]]&lt;br /&gt;
* [[TLS]]&lt;br /&gt;
* [[Sharing]]&lt;br /&gt;
&lt;br /&gt;
Passed on:&lt;br /&gt;
&lt;br /&gt;
* Fullscreen API - https://fullscreen.spec.whatwg.org/ - thanks Philip!&lt;br /&gt;
* CSSOM - http://dev.w3.org/csswg/cssom/&lt;br /&gt;
* CSSOM View - http://dev.w3.org/csswg/cssom-view/&lt;br /&gt;
* Media Queries - http://dev.w3.org/csswg/css3-mediaqueries/ (published as REC)&lt;br /&gt;
* CSS Namespaces - http://dev.w3.org/csswg/css3-namespace/ (published as REC)&lt;br /&gt;
&lt;br /&gt;
Abandoned:&lt;br /&gt;
&lt;br /&gt;
* Differences from HTML4 - https://html-differences.whatwg.org/&lt;br /&gt;
* From-Origin - http://dvcs.w3.org/hg/from-origin/raw-file/tip/Overview.html&lt;br /&gt;
* HTML Design Principles - http://dev.w3.org/html5/html-design-principles/&lt;br /&gt;
* Offline Web Applications - http://dev.w3.org/html5/offline-webapps/&lt;br /&gt;
* Selectors API - http://dev.w3.org/2006/webapi/selectors-api/ (published as REC, now folded into DOM)&lt;br /&gt;
&lt;br /&gt;
== W3C ==&lt;br /&gt;
&lt;br /&gt;
Past: CDF, CSS, HTML, Notifications, TAG, WebApps, WebAppsSec, XML ER&lt;br /&gt;
&lt;br /&gt;
== Public domain ==&lt;br /&gt;
{{CC0 user}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10273</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10273"/>
		<updated>2018-05-08T09:27:27Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Moved to whatwg.org proper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{moved|[https://whatwg.org/style-guide WHATWG Style].}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=MediaWiki:Sidebar&amp;diff=10271</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=MediaWiki:Sidebar&amp;diff=10271"/>
		<updated>2018-03-28T12:23:29Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* WHATWG&lt;br /&gt;
** https://spec.whatwg.org/|Standards&lt;br /&gt;
** https://whatwg.org/faq|FAQ&lt;br /&gt;
** https://whatwg.org/irc|IRC&lt;br /&gt;
** https://whatwg.org/code-of-conduct|Code of Conduct&lt;br /&gt;
** https://github.com/whatwg|GitHub&lt;br /&gt;
** What you can do|What you can do&lt;br /&gt;
** Specs todo|To-do list&lt;br /&gt;
* Registries&lt;br /&gt;
** MetaExtensions|&amp;lt;meta name&amp;gt;&lt;br /&gt;
** http://microformats.org/wiki/existing-rel-values|rel=&amp;quot;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10270</id>
		<title>IRC</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10270"/>
		<updated>2018-03-28T12:22:48Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Replaced content with &amp;quot;{{moved|[https://whatwg.org/irc WHATWG IRC].}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{moved|[https://whatwg.org/irc WHATWG IRC].}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10269</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10269"/>
		<updated>2018-03-16T17:25:47Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* behavior&lt;br /&gt;
* bitrate&lt;br /&gt;
* built-in (though see https://github.com/heycam/webidl/issues/350)&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* cipher&lt;br /&gt;
* colorspace&lt;br /&gt;
* email&lt;br /&gt;
* implementer&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
* A hierarchy (not an).&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;br /&gt;
* Don&#039;t use &amp;quot;white&amp;quot; as meaning good and &amp;quot;black&amp;quot; as meaning bad; more concretely, &amp;quot;safelist&amp;quot; and &amp;quot;blocklist&amp;quot; are established precedent&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10266</id>
		<title>Fork tracking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10266"/>
		<updated>2018-01-29T12:33:42Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Microdata is somehow maintained again...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page exists to document the status of the outdated forks of various WHATWG specifications, and any progress toward clarifying their out-of-dateness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confusion persists ==&lt;br /&gt;
&lt;br /&gt;
* Fetch: https://fetch.spec.whatwg.org/&lt;br /&gt;
** Obsolete subsections published as http://www.w3.org/TR/cors/&lt;br /&gt;
** Status: still exists as an outdated specification with no warning, causing confusion.&lt;br /&gt;
* DOM: https://dom.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/dom/&lt;br /&gt;
** Forked to https://w3c.github.io/dom/&lt;br /&gt;
** Status: still exists as an outdated snapshot (and modified in undocumented ways) with no warning, causing confusion. And has a weird rename (&amp;quot;DOM4&amp;quot;) too. Editors draft has renewed forking efforts with particularly bad copy-and-paste practices.&lt;br /&gt;
* XMLHttpRequest: https://xhr.spec.whatwg.org/&lt;br /&gt;
** A subset was forked to https://www.w3.org/TR/progress-events/. (ED redirects)&lt;br /&gt;
* Notifications: https://notifications.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/notifications/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. The spec model has diverged significantly in the meantime, and the outdated version is actively wrong, not just incomplete.&lt;br /&gt;
* HTML: https://html.spec.whatwg.org/multipage/&lt;br /&gt;
** Forked to http://www.w3.org/TR/html5/ as an outdated fork of a subset frozen in 2013.&lt;br /&gt;
** Forked to http://www.w3.org/TR/html51/ as an outdated fork of a subset frozen in 2015.&lt;br /&gt;
** Forked to https://w3c.github.io/html/ as an outdated fork of a subset frozen in early 2016 (see [https://annevankesteren.nl/2016/01/film-at-11 blog post]).&lt;br /&gt;
** In general all of these attempt to copy-and-paste HTML and then apply forked patches on top, but the scripts are wonky, leading to lots of errors.&lt;br /&gt;
** Subsets of HTML split out into other outdated forks, none with appropriate warnings:&lt;br /&gt;
*** http://www.w3.org/TR/webstorage/ (ED is nice at least https://w3c.github.io/webstorage/)&lt;br /&gt;
*** http://www.w3.org/TR/workers/&lt;br /&gt;
*** http://www.w3.org/TR/webmessaging/ (ED is nice at least https://w3c.github.io/webmessaging/)&lt;br /&gt;
*** http://www.w3.org/TR/websockets/ (ED is nice at least https://w3c.github.io/websockets/)&lt;br /&gt;
*** http://www.w3.org/TR/eventsource/ (ED is nice at least https://w3c.github.io/eventsource/)&lt;br /&gt;
*** http://www.w3.org/TR/2dcontext/&lt;br /&gt;
*** https://www.w3.org/TR/2dcontext2/&lt;br /&gt;
*** https://www.w3.org/TR/microdata/&lt;br /&gt;
*** https://dvcs.w3.org/hg/webperf/raw-file/default/specs/RequestAnimationFrame/Overview.html (redirects to W3C HTML fork)&lt;br /&gt;
&lt;br /&gt;
== Confusion persists with some mitigation ==&lt;br /&gt;
&lt;br /&gt;
* Encoding: https://encoding.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/encoding/&lt;br /&gt;
** Status: still exists as an outdated snapshot, with a floating notice that it&#039;s an outdated snapshot at the bottom, but pretending that it provides a &amp;quot;stable reference&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confusion mitigated ==&lt;br /&gt;
&lt;br /&gt;
* Fullscreen: https://fullscreen.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/fullscreen/&lt;br /&gt;
** Status: discontinued as a NOTE. ED URL (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html) redirects&lt;br /&gt;
* Streams: https://streams.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/streams-api/&lt;br /&gt;
** Status: discontinued as NOTE. ED URL is WHATWG URL, former ED URL (http://w3c.github.io/streams-api/) redirects&lt;br /&gt;
* XMLHttpRequest: https://xhr.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest2/&lt;br /&gt;
** Status: both /TR/ forks discontinued as NOTEs. ED URLs are to WHATWG XHR, former ED URL https://dvcs.w3.org/hg/xhr/raw-file/default/xhr-1/Overview.html redirects.&lt;br /&gt;
* URL: https://url.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/url/ plus various aliases and older versions (e.g. https://www.w3.org/TR/url-1/)&lt;br /&gt;
** Status: discontinued as NOTE, ED URL is WHATWG URL, former ED URL http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html redirects.&lt;br /&gt;
** https://w3ctag.github.io/url/ has also been fully discontinued.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=GitHub&amp;diff=10263</id>
		<title>GitHub</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=GitHub&amp;diff=10263"/>
		<updated>2018-01-24T17:44:59Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Replaced content with &amp;quot;{{moved|[https://github.com/whatwg WHATWG on GitHub].}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{moved|[https://github.com/whatwg WHATWG on GitHub].}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=CanvasContexts&amp;diff=10262</id>
		<title>CanvasContexts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=CanvasContexts&amp;diff=10262"/>
		<updated>2018-01-24T17:43:35Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete|spec=[https://html.spec.whatwg.org/multipage/canvas.html#dom-canvas-getcontext &amp;lt;code&amp;gt;getContext()&amp;lt;/code&amp;gt; in the HTML Standard]}}&lt;br /&gt;
&lt;br /&gt;
This page lists the defined contexts usable with the &#039;&#039;&#039;HTMLCanvasElement.getContext()&#039;&#039;&#039; API in the [http://dev.w3.org/html5/spec/the-canvas-element.html#dom-canvas-getcontext W3C HTML5 spec].&lt;br /&gt;
&lt;br /&gt;
This is no longer used by the [http://www.whatwg.org/specs/web-apps/current-work/complete/the-canvas-element.html#dom-canvas-getcontext WHATWG HTML spec].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt; &amp;lt;code&amp;gt;2d&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Specification: &amp;lt;dd&amp;gt; http://dev.w3.org/html5/2dcontext/ (W3C spec) &amp;lt;dd&amp;gt; http://www.whatwg.org/specs/web-apps/current-work/complete/the-canvas-element.html#canvas-context-2d (WHATWG spec)&lt;br /&gt;
&amp;lt;dt&amp;gt;Compatible with: &amp;lt;dd&amp;gt; none&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt; &amp;lt;code&amp;gt;webgl&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Specification: &amp;lt;dd&amp;gt; http://www.khronos.org/registry/webgl/specs/latest/&lt;br /&gt;
&amp;lt;dt&amp;gt;Compatible with: &amp;lt;dd&amp;gt; none&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=MediaWiki:Sidebar&amp;diff=10261</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=MediaWiki:Sidebar&amp;diff=10261"/>
		<updated>2018-01-24T17:41:36Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* WHATWG&lt;br /&gt;
** https://spec.whatwg.org/|Standards&lt;br /&gt;
** https://whatwg.org/faq|FAQ&lt;br /&gt;
** IRC|IRC&lt;br /&gt;
** https://whatwg.org/code-of-conduct|Code of Conduct&lt;br /&gt;
** https://github.com/whatwg|GitHub&lt;br /&gt;
** What you can do|What you can do&lt;br /&gt;
** Specs todo|To-do list&lt;br /&gt;
* Registries&lt;br /&gt;
** MetaExtensions|&amp;lt;meta name&amp;gt;&lt;br /&gt;
** http://microformats.org/wiki/existing-rel-values|rel=&amp;quot;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=WorkerCanvas&amp;diff=10260</id>
		<title>WorkerCanvas</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=WorkerCanvas&amp;diff=10260"/>
		<updated>2018-01-24T17:37:18Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete|spec=[https://html.spec.whatwg.org/multipage/canvas.html#the-offscreencanvas-interface &amp;lt;code&amp;gt;OffscreenCanvas&amp;lt;/code&amp;gt; in the HTML Standard]}}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Provides more control over how canvases are rendered.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Use Case Description ==&lt;br /&gt;
&lt;br /&gt;
Feedback from web application authors using canvases have shown the need for the following controls:&lt;br /&gt;
&lt;br /&gt;
* (From ShaderToy, Sketchfab, Verold): need to be able to render to multiple regions on the page efficiently using a single canvas context. 3D model warehouse sites desire to show multiple live interactive models on the page, but creating multiple WebGL contexts per page is too inefficient. A single context should be able to render to multiple regions on the page.&lt;br /&gt;
* (From Google Maps): need to be able to render WebGL from a worker, transfer the rendered image to the main thread without making any copy of it, and composite it with other HTML on the page, guaranteeing that the updates are all seen in the same rendered frame.&lt;br /&gt;
* (From Mozilla and partners using Emscripten and asm.js): need to be able to render WebGL entirely asynchronously from a worker, displaying the results in a canvas owned by the main thread, without any synchronization with the main thread. In this mode, the entire application runs in the worker. The main thread only receives input events and sends them to the worker for processing.&lt;br /&gt;
&lt;br /&gt;
== WebIDL ==&lt;br /&gt;
&lt;br /&gt;
 [Constructor(unsigned long width, unsigned long height)]&lt;br /&gt;
 interface WorkerCanvas {&lt;br /&gt;
   attribute unsigned long width;&lt;br /&gt;
   attribute unsigned long height;&lt;br /&gt;
   RenderingContext? getContext(DOMString contextId, any... arguments); &lt;br /&gt;
   void toBlob(FileCallback? _callback, optional DOMString type, any... arguments);&lt;br /&gt;
   ImageBitmap transferToImageBitmap();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 WorkerCanvas implements Transferable;&lt;br /&gt;
 ImageBitmap implements Transferable;&lt;br /&gt;
 &lt;br /&gt;
 partial interface HTMLCanvasElement {&lt;br /&gt;
   WorkerCanvas transferControlToWorker();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 partial interface ImageBitmap {&lt;br /&gt;
   void transferToImage(HTMLImageElement image);&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Spec changes ==&lt;br /&gt;
&lt;br /&gt;
Transferring of ImageBitmaps has to be defined. It should neuter the ImageBitmap in the sending thread. Neutering sets the ImageBitmap&#039;s width and height to 0.&lt;br /&gt;
&lt;br /&gt;
HTMLCanvasElement.transferControlToWorker behaves like transferControlToProxy in the current WHATWG spec. WorkerCanvas is Transferable, but transfer fails if transferred other than from the main thread to a worker. All its methods throw if not called on a worker, or if it&#039;s neutered.&lt;br /&gt;
&lt;br /&gt;
ImageBitmap.transferToImage removes the image element&#039;s &amp;quot;src&amp;quot; attribute and makes the image display the contents of the ImageBitmap (until the next transferToImage to that image, or until the image&#039;s &amp;quot;src&amp;quot; attribute is set). The ImageBitmap is neutered.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=OffscreenCanvas&amp;diff=10259</id>
		<title>OffscreenCanvas</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=OffscreenCanvas&amp;diff=10259"/>
		<updated>2018-01-24T17:36:27Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete|spec=[https://html.spec.whatwg.org/multipage/canvas.html#the-offscreencanvas-interface &amp;lt;code&amp;gt;OffscreenCanvas&amp;lt;/code&amp;gt; in the HTML Standard]}}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Provides more control over how canvases are rendered. This is a follow-on to the [[WorkerCanvas]] proposal and will be merged once agreement is reached.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Use Case Description ==&lt;br /&gt;
&lt;br /&gt;
Feedback from web application authors using canvases have shown the need for the following controls:&lt;br /&gt;
&lt;br /&gt;
* (From ShaderToy, Sketchfab, Verold): need to be able to render to multiple regions on the page efficiently using a single canvas context. 3D model warehouse sites desire to show multiple live interactive models on the page, but creating multiple WebGL contexts per page is too inefficient. A single context should be able to render to multiple regions on the page.&lt;br /&gt;
* (From Google Maps): need to be able to render WebGL from a worker, transfer the rendered image to the main thread without making any copy of it, and composite it with other HTML on the page, guaranteeing that the updates are all seen in the same rendered frame.&lt;br /&gt;
* (From Mozilla and partners using Emscripten and asm.js): need to be able to render WebGL entirely asynchronously from a worker, displaying the results in a canvas owned by the main thread, without any synchronization with the main thread. In this mode, the entire application runs in the worker. The main thread only receives input events and sends them to the worker for processing.&lt;br /&gt;
* (From adopters of the Push API): need to be able to dynamically create images to use as notification icons, such as compositing avatars, or adding an unread count&lt;br /&gt;
* (From the Google Docs team): need to be able to layout and render text from a worker using CanvasRenderingContext2D and display those results on the main thread.&lt;br /&gt;
* (From the Google Slides team): want to layout and render the slide thumbnails from a worker. During initial load and heavy collaboration these update frequently, and currently cause slowdowns on the main thread.&lt;br /&gt;
&lt;br /&gt;
=== Current Limitations ===&lt;br /&gt;
&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/scripting.html#proxying-canvases-to-workers CanvasProxy] does not provide sufficient control to allow synchronization between workers&#039; rendering and DOM updates on the main thread. Keeping this rendering in sync is a requirement from Google&#039;s Maps team.&lt;br /&gt;
* [[CanvasInWorkers]] does not allow a worker to render directly into a canvas on the main thread without running code on the main thread. Allowing completely unsynchronized rendering is a requirement from Mozilla and users of Emscripten such as Epic Games and Unity, in which the desire is to execute all of the game&#039;s rendering on a worker thread.&lt;br /&gt;
* [[WorkerCanvas]] mostly addresses these two use cases, but some implementers objected to the mechanism for displaying the rendering results in image elements. The specific objection was that image elements already have complex internal state (for example, the management of the image&#039;s &amp;quot;loaded&amp;quot; state), and this would make it more complex. It also did not precisely address the use case of producing new frames both on the main thread and in workers.&lt;br /&gt;
&lt;br /&gt;
=== Current Usage and Workarounds ===&lt;br /&gt;
&lt;br /&gt;
[https://blog.mozilla.org/research/2014/07/22/webgl-in-web-workers-today-and-faster-than-expected/ WebGL in Web Workers] details some work attempted in the Emscripten toolchain to address the lack of WebGL in workers. Due to the high volume of calls and large amount of data that is transferred to the graphics card in a typical high-end WebGL application, this approach is not sustainable. It&#039;s necessary for workers to be able to call the WebGL API directly, and present those results to the screen in a manner that does not introduce any copies of the rendering results.&lt;br /&gt;
&lt;br /&gt;
=== Benefits ===&lt;br /&gt;
&lt;br /&gt;
Making canvas rendering contexts available to workers will increase parallelism in web applications, leading to increased performance on multi-core systems.&lt;br /&gt;
&lt;br /&gt;
=== Requests for this Feature ===&lt;br /&gt;
&lt;br /&gt;
See the abovementioned use cases:&lt;br /&gt;
&lt;br /&gt;
* Google&#039;s Maps team&lt;br /&gt;
* Emscripten users such as Epic Games and Unity&lt;br /&gt;
* Many others&lt;br /&gt;
&lt;br /&gt;
== Web IDL ==&lt;br /&gt;
&lt;br /&gt;
 typedef (OffscreenCanvasRenderingContext2D or&lt;br /&gt;
          WebGLRenderingContext or&lt;br /&gt;
          WebGL2RenderingContext) OffscreenRenderingContext;&lt;br /&gt;
 &lt;br /&gt;
 [Constructor(unsigned long width, unsigned long height),&lt;br /&gt;
  Exposed=(Window,Worker)]&lt;br /&gt;
 interface OffscreenCanvas {&lt;br /&gt;
   attribute unsigned long width;&lt;br /&gt;
   attribute unsigned long height;&lt;br /&gt;
   OffscreenRenderingContext? getContext(DOMString contextId, any... arguments); &lt;br /&gt;
 &lt;br /&gt;
   // OffscreenCanvas, like HTMLCanvasElement, maintains an origin-clean flag.&lt;br /&gt;
   // ImageBitmaps created by calling this method also have an&lt;br /&gt;
   // origin-clean flag which is set to the value of the OffscreenCanvas&#039;s&lt;br /&gt;
   // flag at the time of their construction. Uses of the ImageBitmap&lt;br /&gt;
   // in other APIs, such as CanvasRenderingContext2D or&lt;br /&gt;
   // WebGLRenderingContext, propagate this flag like other&lt;br /&gt;
   // CanvasImageSource types do, such as HTMLImageElement.&lt;br /&gt;
   ImageBitmap transferToImageBitmap();&lt;br /&gt;
 &lt;br /&gt;
   // Throws a SecurityError if the OffscreenCanvas&#039;s origin-clean flag&lt;br /&gt;
   // is set to false.&lt;br /&gt;
   Promise&amp;lt;Blob&amp;gt; convertToBlob(optional ImageEncodeOptions options);   &lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 dictionary ImageEncodeOptions {&lt;br /&gt;
   DOMString type = &amp;quot;image/png&amp;quot;;&lt;br /&gt;
   unrestricted double quality = 1.0; // Defaults to 1.0 if value is outside 0:1 range&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 OffscreenCanvas implements Transferable;&lt;br /&gt;
 &lt;br /&gt;
 partial interface HTMLCanvasElement {&lt;br /&gt;
   OffscreenCanvas transferControlToOffscreen();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 typedef (HTMLOrSVGImageElement or&lt;br /&gt;
          HTMLVideoElement or&lt;br /&gt;
          HTMLCanvasElement or&lt;br /&gt;
          ImageBitmap or&lt;br /&gt;
          OffscreenCanvas) CanvasImageSource;&lt;br /&gt;
 &lt;br /&gt;
 [Exposed=Window, Worker]&lt;br /&gt;
 interface OffscreenCanvasRenderingContext2D {&lt;br /&gt;
   // commit() can only be used when HTMLCanvasElement has transferred Control&lt;br /&gt;
   // to OffscreenCanvas. Otherwise, an InvalidStateError will be thrown.&lt;br /&gt;
   // commit() can be invoked on main thread or worker thread. When it is invoked,&lt;br /&gt;
   // it is expected to see the image drawn to OffscreenCanvasRenderingContext2D &lt;br /&gt;
   // be displayed in the associated HTMLCanvasElement.&lt;br /&gt;
   void commit();&lt;br /&gt;
   // back-reference to the canvas&lt;br /&gt;
   readonly attribute OffscreenCanvas canvas;&lt;br /&gt;
 };&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasState;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasTransform;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasCompositing;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasImageSmoothing;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasFillStrokeStyles;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasShadowStyles;&lt;br /&gt;
 // Reference filters (e.g. &#039;url()&#039;) are not expected to work in Workers&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasFilters;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasRect;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasDrawPath;&lt;br /&gt;
 // Text support in workers poses very difficult technical challenges.&lt;br /&gt;
 // Open issue: should we forgo text support in OffscreenCanvas v1?&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasText;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasDrawImage;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasImageData;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasPathDrawingStyles;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasTextDrawingStyles;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasPath; &lt;br /&gt;
 &lt;br /&gt;
 [Exposed=Window, Worker]&lt;br /&gt;
 Partial interface CanvasPattern {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [Exposed=Window, Worker]&lt;br /&gt;
 partial interface CanvasGradient {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 partial interface WebGLRenderingContextBase {&lt;br /&gt;
   // back-reference to the canvas&lt;br /&gt;
   readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas;&lt;br /&gt;
 &lt;br /&gt;
   // If this context is associated with an OffscreenCanvas that was&lt;br /&gt;
   // created by HTMLCanvasElement&#039;s transferControlToOffscreen method,&lt;br /&gt;
   // causes this context&#039;s current rendering results to be pushed&lt;br /&gt;
   // to that canvas element. This has the same effect as returning&lt;br /&gt;
   // control to the main loop in a single-threaded application. Otherwise,&lt;br /&gt;
   // an InvalidStateError will be thrown.&lt;br /&gt;
   void commit();&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Proposed Solutions ==&lt;br /&gt;
&lt;br /&gt;
=== This Solution ===&lt;br /&gt;
&lt;br /&gt;
This proposed API can be used in several ways to satisfy the use cases described above:&lt;br /&gt;
&lt;br /&gt;
* It supports zero-copy transfer of canvases&#039; rendering results between threads, for example from a worker to the main thread. In this model, the main thread controls when to display new frames produced by the worker, so synchronization with other DOM updates is achieved.&lt;br /&gt;
&lt;br /&gt;
* It supports fully asynchronous rendering by a worker into a canvas displayed on the main thread. This satisfies certain Emscripten developers&#039; full-screen use cases.&lt;br /&gt;
&lt;br /&gt;
* It supports using a single WebGLRenderingContext or Canvas2DRenderingContext to efficiently render into multiple regions on the web page.&lt;br /&gt;
&lt;br /&gt;
* It introduces ImageBitmapRenderingContext, a new canvas context type whose sole purpose is to efficiently display ImageBitmaps. This supersedes the [[WorkerCanvas]] proposal&#039;s use of HTMLImageElement for this purpose.&lt;br /&gt;
&lt;br /&gt;
* It supports asynchronous encoding of OffscreenCanvases&#039; rendering results into Blobs which can be consumed by various other web platform APIs.&lt;br /&gt;
&lt;br /&gt;
==== Processing Model ====&lt;br /&gt;
&lt;br /&gt;
This proposal introduces two primary processing models. The first involves &#039;&#039;synchronous&#039;&#039; display of new frames produced by the OffscreenCanvas. The application generates new frames using the RenderingContext obtained from the OffscreenCanvas. When the application is finished rendering each new frame, it calls transferToImageBitmap to &amp;quot;tear off&amp;quot; the most recently rendered image from the OffscreenCanvas -- like a Post-It note. The resulting ImageBitmap can then be used in any API receiving that data type; notably, it can be displayed in a second canvas without introducing a copy. An ImageBitmapRenderingContext is obtained from the second canvas by calling &amp;lt;code&amp;gt;getContext(&#039;bitmaprenderer&#039;)&amp;lt;/code&amp;gt;. Each frame is displayed in the second canvas using the &amp;lt;code&amp;gt;transferImageBitmap&amp;lt;/code&amp;gt; method on this rendering context. Note that the threads producing and consuming the frames may be the same, or they may be different. Note also that a single OffscreenCanvas may transfer frames into an arbitrary number of other ImageBitmapRenderingContexts.&lt;br /&gt;
&lt;br /&gt;
The second processing model involves &#039;&#039;asynchronous&#039;&#039; display of new frames produced by the OffscreenCanvas. The main thread instantiates an HTMLCanvasElement and calls &amp;lt;code&amp;gt;transferControlToOffscreeen&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;getContext&amp;lt;/code&amp;gt; is used to obtain a rendering context for that OffscreenCanvas, either on the main thread, or on a worker. The application calls &amp;lt;code&amp;gt;commit&amp;lt;/code&amp;gt; against that rendering context in order to push frames to the original HTMLCanvasElement. In this rendering model, it is not defined when those frames become visible in the original canvas element. However, if the following situations apply:&lt;br /&gt;
&lt;br /&gt;
* It is a worker thread which is calling commit(), and&lt;br /&gt;
* The worker is calling commit() repeatedly against exactly one rendering context&lt;br /&gt;
&lt;br /&gt;
then it is required that the user agent synchronize the calls to commit() to the vsync interval. Calls to commit() conceptually enqueue frames for display, and after an implementation-defined number of frames have been enqueued, further calls to commit() will block until earlier frames have been presented to the screen. (This requirement allows porting of applications which drive their own main loop rather than using an event-driven loop.)&lt;br /&gt;
&lt;br /&gt;
==== Limitations ==== &lt;br /&gt;
&lt;br /&gt;
* A known good way to drive an animation loop from a worker is needed. requestAnimationFrame or a similar API needs to be defined on worker threads.&lt;br /&gt;
* Some parts of the CanvasRenderingContext2D interface shall not be supported due OffscreenCanvas objects having no relation to the DOM or Frame: HitRegions, scrollPathIntoView, drawFocusIfNeeded.&lt;br /&gt;
* Due to technical challenges, some implementors [https://bugzilla.mozilla.org/show_bug.cgi?id=801176#c29 (Google and Mozilla)] have expressed a desire to ship without initially supporting text rendering in 2D contexts. Open Issue: Should text support be formally excluded from the specification until implementors are prepared to ship it (or until a more feasible API is designed)?&lt;br /&gt;
&lt;br /&gt;
==== Implementation ==== &lt;br /&gt;
&lt;br /&gt;
This proposal has been vetted by developers of Apple&#039;s Safari, Google&#039;s Chrome, Microsoft&#039;s Internet Explorer, and Mozilla&#039;s Firefox browsers. All vendors agreed upon the basic form of the API, so it is likely it will be implemented widely and compatibly.&lt;br /&gt;
&lt;br /&gt;
==== Adoption ==== &lt;br /&gt;
&lt;br /&gt;
Web page authors have demanded increased parallelism support from the web platform for multiple years. If support for multithreaded rendering is added, it is likely it will be rapidly adopted.&lt;br /&gt;
&lt;br /&gt;
==== Example code ====&lt;br /&gt;
&lt;br /&gt;
Jeff Gilbert from Mozilla has crafted some example code utilizing this API:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jdashg/snippets/tree/master/webgl-from-worker Rendering WebGL from a worker using the commit() API]&lt;br /&gt;
* [https://github.com/jdashg/snippets/blob/master/webgl-one-to-many/index.html Using one WebGL context to render to many Canvas elements]&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=OffscreenCanvas&amp;diff=10258</id>
		<title>OffscreenCanvas</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=OffscreenCanvas&amp;diff=10258"/>
		<updated>2018-01-24T17:35:57Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete|spec=[https://html.spec.whatwg.org/multipage/scripting.html#the-offscreencanvas-interface &amp;lt;code&amp;gt;OffscreenCanvas&amp;lt;/code&amp;gt; in the HTML Standard]}}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Provides more control over how canvases are rendered. This is a follow-on to the [[WorkerCanvas]] proposal and will be merged once agreement is reached.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Use Case Description ==&lt;br /&gt;
&lt;br /&gt;
Feedback from web application authors using canvases have shown the need for the following controls:&lt;br /&gt;
&lt;br /&gt;
* (From ShaderToy, Sketchfab, Verold): need to be able to render to multiple regions on the page efficiently using a single canvas context. 3D model warehouse sites desire to show multiple live interactive models on the page, but creating multiple WebGL contexts per page is too inefficient. A single context should be able to render to multiple regions on the page.&lt;br /&gt;
* (From Google Maps): need to be able to render WebGL from a worker, transfer the rendered image to the main thread without making any copy of it, and composite it with other HTML on the page, guaranteeing that the updates are all seen in the same rendered frame.&lt;br /&gt;
* (From Mozilla and partners using Emscripten and asm.js): need to be able to render WebGL entirely asynchronously from a worker, displaying the results in a canvas owned by the main thread, without any synchronization with the main thread. In this mode, the entire application runs in the worker. The main thread only receives input events and sends them to the worker for processing.&lt;br /&gt;
* (From adopters of the Push API): need to be able to dynamically create images to use as notification icons, such as compositing avatars, or adding an unread count&lt;br /&gt;
* (From the Google Docs team): need to be able to layout and render text from a worker using CanvasRenderingContext2D and display those results on the main thread.&lt;br /&gt;
* (From the Google Slides team): want to layout and render the slide thumbnails from a worker. During initial load and heavy collaboration these update frequently, and currently cause slowdowns on the main thread.&lt;br /&gt;
&lt;br /&gt;
=== Current Limitations ===&lt;br /&gt;
&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/scripting.html#proxying-canvases-to-workers CanvasProxy] does not provide sufficient control to allow synchronization between workers&#039; rendering and DOM updates on the main thread. Keeping this rendering in sync is a requirement from Google&#039;s Maps team.&lt;br /&gt;
* [[CanvasInWorkers]] does not allow a worker to render directly into a canvas on the main thread without running code on the main thread. Allowing completely unsynchronized rendering is a requirement from Mozilla and users of Emscripten such as Epic Games and Unity, in which the desire is to execute all of the game&#039;s rendering on a worker thread.&lt;br /&gt;
* [[WorkerCanvas]] mostly addresses these two use cases, but some implementers objected to the mechanism for displaying the rendering results in image elements. The specific objection was that image elements already have complex internal state (for example, the management of the image&#039;s &amp;quot;loaded&amp;quot; state), and this would make it more complex. It also did not precisely address the use case of producing new frames both on the main thread and in workers.&lt;br /&gt;
&lt;br /&gt;
=== Current Usage and Workarounds ===&lt;br /&gt;
&lt;br /&gt;
[https://blog.mozilla.org/research/2014/07/22/webgl-in-web-workers-today-and-faster-than-expected/ WebGL in Web Workers] details some work attempted in the Emscripten toolchain to address the lack of WebGL in workers. Due to the high volume of calls and large amount of data that is transferred to the graphics card in a typical high-end WebGL application, this approach is not sustainable. It&#039;s necessary for workers to be able to call the WebGL API directly, and present those results to the screen in a manner that does not introduce any copies of the rendering results.&lt;br /&gt;
&lt;br /&gt;
=== Benefits ===&lt;br /&gt;
&lt;br /&gt;
Making canvas rendering contexts available to workers will increase parallelism in web applications, leading to increased performance on multi-core systems.&lt;br /&gt;
&lt;br /&gt;
=== Requests for this Feature ===&lt;br /&gt;
&lt;br /&gt;
See the abovementioned use cases:&lt;br /&gt;
&lt;br /&gt;
* Google&#039;s Maps team&lt;br /&gt;
* Emscripten users such as Epic Games and Unity&lt;br /&gt;
* Many others&lt;br /&gt;
&lt;br /&gt;
== Web IDL ==&lt;br /&gt;
&lt;br /&gt;
 typedef (OffscreenCanvasRenderingContext2D or&lt;br /&gt;
          WebGLRenderingContext or&lt;br /&gt;
          WebGL2RenderingContext) OffscreenRenderingContext;&lt;br /&gt;
 &lt;br /&gt;
 [Constructor(unsigned long width, unsigned long height),&lt;br /&gt;
  Exposed=(Window,Worker)]&lt;br /&gt;
 interface OffscreenCanvas {&lt;br /&gt;
   attribute unsigned long width;&lt;br /&gt;
   attribute unsigned long height;&lt;br /&gt;
   OffscreenRenderingContext? getContext(DOMString contextId, any... arguments); &lt;br /&gt;
 &lt;br /&gt;
   // OffscreenCanvas, like HTMLCanvasElement, maintains an origin-clean flag.&lt;br /&gt;
   // ImageBitmaps created by calling this method also have an&lt;br /&gt;
   // origin-clean flag which is set to the value of the OffscreenCanvas&#039;s&lt;br /&gt;
   // flag at the time of their construction. Uses of the ImageBitmap&lt;br /&gt;
   // in other APIs, such as CanvasRenderingContext2D or&lt;br /&gt;
   // WebGLRenderingContext, propagate this flag like other&lt;br /&gt;
   // CanvasImageSource types do, such as HTMLImageElement.&lt;br /&gt;
   ImageBitmap transferToImageBitmap();&lt;br /&gt;
 &lt;br /&gt;
   // Throws a SecurityError if the OffscreenCanvas&#039;s origin-clean flag&lt;br /&gt;
   // is set to false.&lt;br /&gt;
   Promise&amp;lt;Blob&amp;gt; convertToBlob(optional ImageEncodeOptions options);   &lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 dictionary ImageEncodeOptions {&lt;br /&gt;
   DOMString type = &amp;quot;image/png&amp;quot;;&lt;br /&gt;
   unrestricted double quality = 1.0; // Defaults to 1.0 if value is outside 0:1 range&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 OffscreenCanvas implements Transferable;&lt;br /&gt;
 &lt;br /&gt;
 partial interface HTMLCanvasElement {&lt;br /&gt;
   OffscreenCanvas transferControlToOffscreen();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 typedef (HTMLOrSVGImageElement or&lt;br /&gt;
          HTMLVideoElement or&lt;br /&gt;
          HTMLCanvasElement or&lt;br /&gt;
          ImageBitmap or&lt;br /&gt;
          OffscreenCanvas) CanvasImageSource;&lt;br /&gt;
 &lt;br /&gt;
 [Exposed=Window, Worker]&lt;br /&gt;
 interface OffscreenCanvasRenderingContext2D {&lt;br /&gt;
   // commit() can only be used when HTMLCanvasElement has transferred Control&lt;br /&gt;
   // to OffscreenCanvas. Otherwise, an InvalidStateError will be thrown.&lt;br /&gt;
   // commit() can be invoked on main thread or worker thread. When it is invoked,&lt;br /&gt;
   // it is expected to see the image drawn to OffscreenCanvasRenderingContext2D &lt;br /&gt;
   // be displayed in the associated HTMLCanvasElement.&lt;br /&gt;
   void commit();&lt;br /&gt;
   // back-reference to the canvas&lt;br /&gt;
   readonly attribute OffscreenCanvas canvas;&lt;br /&gt;
 };&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasState;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasTransform;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasCompositing;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasImageSmoothing;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasFillStrokeStyles;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasShadowStyles;&lt;br /&gt;
 // Reference filters (e.g. &#039;url()&#039;) are not expected to work in Workers&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasFilters;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasRect;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasDrawPath;&lt;br /&gt;
 // Text support in workers poses very difficult technical challenges.&lt;br /&gt;
 // Open issue: should we forgo text support in OffscreenCanvas v1?&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasText;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasDrawImage;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasImageData;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasPathDrawingStyles;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasTextDrawingStyles;&lt;br /&gt;
 OffscreenCanvasRenderingContext2D implements CanvasPath; &lt;br /&gt;
 &lt;br /&gt;
 [Exposed=Window, Worker]&lt;br /&gt;
 Partial interface CanvasPattern {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [Exposed=Window, Worker]&lt;br /&gt;
 partial interface CanvasGradient {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 partial interface WebGLRenderingContextBase {&lt;br /&gt;
   // back-reference to the canvas&lt;br /&gt;
   readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas;&lt;br /&gt;
 &lt;br /&gt;
   // If this context is associated with an OffscreenCanvas that was&lt;br /&gt;
   // created by HTMLCanvasElement&#039;s transferControlToOffscreen method,&lt;br /&gt;
   // causes this context&#039;s current rendering results to be pushed&lt;br /&gt;
   // to that canvas element. This has the same effect as returning&lt;br /&gt;
   // control to the main loop in a single-threaded application. Otherwise,&lt;br /&gt;
   // an InvalidStateError will be thrown.&lt;br /&gt;
   void commit();&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Proposed Solutions ==&lt;br /&gt;
&lt;br /&gt;
=== This Solution ===&lt;br /&gt;
&lt;br /&gt;
This proposed API can be used in several ways to satisfy the use cases described above:&lt;br /&gt;
&lt;br /&gt;
* It supports zero-copy transfer of canvases&#039; rendering results between threads, for example from a worker to the main thread. In this model, the main thread controls when to display new frames produced by the worker, so synchronization with other DOM updates is achieved.&lt;br /&gt;
&lt;br /&gt;
* It supports fully asynchronous rendering by a worker into a canvas displayed on the main thread. This satisfies certain Emscripten developers&#039; full-screen use cases.&lt;br /&gt;
&lt;br /&gt;
* It supports using a single WebGLRenderingContext or Canvas2DRenderingContext to efficiently render into multiple regions on the web page.&lt;br /&gt;
&lt;br /&gt;
* It introduces ImageBitmapRenderingContext, a new canvas context type whose sole purpose is to efficiently display ImageBitmaps. This supersedes the [[WorkerCanvas]] proposal&#039;s use of HTMLImageElement for this purpose.&lt;br /&gt;
&lt;br /&gt;
* It supports asynchronous encoding of OffscreenCanvases&#039; rendering results into Blobs which can be consumed by various other web platform APIs.&lt;br /&gt;
&lt;br /&gt;
==== Processing Model ====&lt;br /&gt;
&lt;br /&gt;
This proposal introduces two primary processing models. The first involves &#039;&#039;synchronous&#039;&#039; display of new frames produced by the OffscreenCanvas. The application generates new frames using the RenderingContext obtained from the OffscreenCanvas. When the application is finished rendering each new frame, it calls transferToImageBitmap to &amp;quot;tear off&amp;quot; the most recently rendered image from the OffscreenCanvas -- like a Post-It note. The resulting ImageBitmap can then be used in any API receiving that data type; notably, it can be displayed in a second canvas without introducing a copy. An ImageBitmapRenderingContext is obtained from the second canvas by calling &amp;lt;code&amp;gt;getContext(&#039;bitmaprenderer&#039;)&amp;lt;/code&amp;gt;. Each frame is displayed in the second canvas using the &amp;lt;code&amp;gt;transferImageBitmap&amp;lt;/code&amp;gt; method on this rendering context. Note that the threads producing and consuming the frames may be the same, or they may be different. Note also that a single OffscreenCanvas may transfer frames into an arbitrary number of other ImageBitmapRenderingContexts.&lt;br /&gt;
&lt;br /&gt;
The second processing model involves &#039;&#039;asynchronous&#039;&#039; display of new frames produced by the OffscreenCanvas. The main thread instantiates an HTMLCanvasElement and calls &amp;lt;code&amp;gt;transferControlToOffscreeen&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;getContext&amp;lt;/code&amp;gt; is used to obtain a rendering context for that OffscreenCanvas, either on the main thread, or on a worker. The application calls &amp;lt;code&amp;gt;commit&amp;lt;/code&amp;gt; against that rendering context in order to push frames to the original HTMLCanvasElement. In this rendering model, it is not defined when those frames become visible in the original canvas element. However, if the following situations apply:&lt;br /&gt;
&lt;br /&gt;
* It is a worker thread which is calling commit(), and&lt;br /&gt;
* The worker is calling commit() repeatedly against exactly one rendering context&lt;br /&gt;
&lt;br /&gt;
then it is required that the user agent synchronize the calls to commit() to the vsync interval. Calls to commit() conceptually enqueue frames for display, and after an implementation-defined number of frames have been enqueued, further calls to commit() will block until earlier frames have been presented to the screen. (This requirement allows porting of applications which drive their own main loop rather than using an event-driven loop.)&lt;br /&gt;
&lt;br /&gt;
==== Limitations ==== &lt;br /&gt;
&lt;br /&gt;
* A known good way to drive an animation loop from a worker is needed. requestAnimationFrame or a similar API needs to be defined on worker threads.&lt;br /&gt;
* Some parts of the CanvasRenderingContext2D interface shall not be supported due OffscreenCanvas objects having no relation to the DOM or Frame: HitRegions, scrollPathIntoView, drawFocusIfNeeded.&lt;br /&gt;
* Due to technical challenges, some implementors [https://bugzilla.mozilla.org/show_bug.cgi?id=801176#c29 (Google and Mozilla)] have expressed a desire to ship without initially supporting text rendering in 2D contexts. Open Issue: Should text support be formally excluded from the specification until implementors are prepared to ship it (or until a more feasible API is designed)?&lt;br /&gt;
&lt;br /&gt;
==== Implementation ==== &lt;br /&gt;
&lt;br /&gt;
This proposal has been vetted by developers of Apple&#039;s Safari, Google&#039;s Chrome, Microsoft&#039;s Internet Explorer, and Mozilla&#039;s Firefox browsers. All vendors agreed upon the basic form of the API, so it is likely it will be implemented widely and compatibly.&lt;br /&gt;
&lt;br /&gt;
==== Adoption ==== &lt;br /&gt;
&lt;br /&gt;
Web page authors have demanded increased parallelism support from the web platform for multiple years. If support for multithreaded rendering is added, it is likely it will be rapidly adopted.&lt;br /&gt;
&lt;br /&gt;
==== Example code ====&lt;br /&gt;
&lt;br /&gt;
Jeff Gilbert from Mozilla has crafted some example code utilizing this API:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jdashg/snippets/tree/master/webgl-from-worker Rendering WebGL from a worker using the commit() API]&lt;br /&gt;
* [https://github.com/jdashg/snippets/blob/master/webgl-one-to-many/index.html Using one WebGL context to render to many Canvas elements]&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10257</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10257"/>
		<updated>2018-01-24T17:34:29Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Replaced content with &amp;quot;{{moved|the [https://whatwg.org/faq WHATWG FAQ], the [https://github.com/whatwg/html/blob/master/FAQ.md HTML Standard FAQ], and the [https://whatwg.org/mailing-list WHATWG...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{moved|the [https://whatwg.org/faq WHATWG FAQ], the [https://github.com/whatwg/html/blob/master/FAQ.md HTML Standard FAQ], and the [https://whatwg.org/mailing-list WHATWG Mailing List] page.}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10256</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10256"/>
		<updated>2018-01-24T09:09:34Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* behavior&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* cipher&lt;br /&gt;
* colorspace&lt;br /&gt;
* email&lt;br /&gt;
* implementer&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
* A hierarchy (not an).&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;br /&gt;
* Don&#039;t use &amp;quot;white&amp;quot; as meaning good and &amp;quot;black&amp;quot; as meaning bad; more concretely, &amp;quot;safelist&amp;quot; and &amp;quot;blocklist&amp;quot; are established precedent&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10255</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10255"/>
		<updated>2018-01-19T11:55:41Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Grammar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* cipher&lt;br /&gt;
* colorspace&lt;br /&gt;
* email&lt;br /&gt;
* implementer&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
* A hierarchy (not an).&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;br /&gt;
* Don&#039;t use &amp;quot;white&amp;quot; as meaning good and &amp;quot;black&amp;quot; as meaning bad; more concretely, &amp;quot;safelist&amp;quot; and &amp;quot;blocklist&amp;quot; are established precedent&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10244</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10244"/>
		<updated>2017-12-20T10:23:58Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* cipher&lt;br /&gt;
* colorspace&lt;br /&gt;
* email&lt;br /&gt;
* implementer&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;br /&gt;
* Don&#039;t use &amp;quot;white&amp;quot; as meaning good and &amp;quot;black&amp;quot; as meaning bad; more concretely, &amp;quot;safelist&amp;quot; and &amp;quot;blocklist&amp;quot; are established precedent&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10243</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10243"/>
		<updated>2017-12-20T10:19:13Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Tone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* cipher&lt;br /&gt;
* colorspace&lt;br /&gt;
* implementer&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;br /&gt;
* Don&#039;t use &amp;quot;white&amp;quot; as meaning good and &amp;quot;black&amp;quot; as meaning bad; more concretely, &amp;quot;safelist&amp;quot; and &amp;quot;blocklist&amp;quot; are established precedent&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10242</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10242"/>
		<updated>2017-12-20T09:47:26Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* cipher&lt;br /&gt;
* colorspace&lt;br /&gt;
* implementer&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=MediaWiki:Anonnotice&amp;diff=10241</id>
		<title>MediaWiki:Anonnotice</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=MediaWiki:Anonnotice&amp;diff=10241"/>
		<updated>2017-12-18T09:54:42Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div id=&amp;quot;anonNotice&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0.5em auto; border: 1px solid #333333; background-color: #EEEEEE; padding: 0.5em; font-size: larger; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
A user account is required in order to edit this wiki, but we&#039;ve had to disable public user registrations due to spam.&lt;br /&gt;
&lt;br /&gt;
To request an account, ask an autoconfirmed user on [[IRC]] (such as one of &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:Special:ListUsers|group=autoconfirmed}} these permanent autoconfirmed members]&amp;lt;/span&amp;gt;).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10236</id>
		<title>IRC</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10236"/>
		<updated>2017-12-12T12:51:34Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Update log links, remove list of people as it&amp;#039;s rather dated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Freenode IRC network has a channel called [irc://irc.freenode.net/whatwg #whatwg] where some of the more active WHATWG community members hang out. Feel free to join us!&lt;br /&gt;
&lt;br /&gt;
Note that if you go to IRC to ask a question, it might take a while to get a reply. It can pay off to stick around for a couple of hours or more.&lt;br /&gt;
&lt;br /&gt;
If you want to run a bot, let us know. If they are useful, e.g. providing logging facilities, then they are more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
&lt;br /&gt;
Logs for the #whatwg channel can be found here:&lt;br /&gt;
&lt;br /&gt;
* https://freenode.logbot.info/whatwg&lt;br /&gt;
* https://krijnhoetmer.nl/irc-logs/ (not updated since 2016-04)&lt;br /&gt;
&lt;br /&gt;
== Getting Started with IRC ==&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started with IRC, if you are not familiar, is by signing up for a free [https://www.irccloud.com/ IRCCloud] account. Once you&#039;ve done that, you should be logged in to the Freenode server by default. All you&#039;ll have to do is join the #whatwg channel. If you tell your browser to use IRCCloud for irc:// links, then just [irc://irc.freenode.net/whatwg clicking this link] should also take you there.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10192</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10192"/>
		<updated>2017-11-17T15:57:04Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* colorspace&lt;br /&gt;
* implementer&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10191</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10191"/>
		<updated>2017-09-22T11:41:34Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */ we never settled newline / line break; we did settle nonzero&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* nonzero&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Words and phrases used as words ==&lt;br /&gt;
* When a word or term is not used functionally but is referred to as the word or term itself, enclose it in quotation marks. (See also: [http://www.chicagomanualofstyle.org/qanda/data/faq/topics/NoneoftheAbove/faq0012.html some examples that highlight why this is necessary].)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10161</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10161"/>
		<updated>2017-04-07T12:34:08Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */ cancel!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* cancelation&lt;br /&gt;
* canceled&lt;br /&gt;
* canceling&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
* newline (not line break)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10160</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10160"/>
		<updated>2017-03-31T15:15:13Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
* newline (not line break)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Casing ==&lt;br /&gt;
&lt;br /&gt;
* web, unless at the start of a sentence&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10158</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10158"/>
		<updated>2017-03-27T13:56:23Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Dictionary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
* newline (not line break)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
&lt;br /&gt;
== Punctuation ==&lt;br /&gt;
&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
* Lowercase after colon (&#039;&#039;The slot attribute is used to assign a slot to an element: an element with a slot attribute is assigned to the slot created by the slot element whose name attribute&#039;s value matches that slot attribute&#039;s value&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10157</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10157"/>
		<updated>2017-03-13T09:20:07Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== How do you spell and pronounce WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
It is spelled WHATWG, all uppercase. It has various pronunciations: what-wee-gee, what-wig, what-double-you-gee.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is Web standards, specifically:&lt;br /&gt;
&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/ HTML], which also includes Web Workers, Web Storage, the Web Sockets API, Server-Sent Events, Microdata, and the 2D Canvas.&lt;br /&gt;
* [https://fetch.spec.whatwg.org/ Fetch], including the &amp;lt;code&amp;gt;fetch()&amp;lt;/code&amp;gt; API&lt;br /&gt;
* [https://dom.spec.whatwg.org/ DOM], including DOM Events, DOM range, and mutation observers&lt;br /&gt;
* [https://url.spec.whatwg.org/ URLs], including an API for URLs&lt;br /&gt;
&lt;br /&gt;
...and [https://spec.whatwg.org/ a number of other specs].&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=hneN6aW-d9w This video from Domenic Denicola] is a good introduction to working with standards bodies.&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily [https://github.com/whatwg participate on GitHub] or subscribe to the [https://whatwg.org/mailing-list WHATWG mailing lists]. There are no meetings, since meetings prevent people with limited time or money from participating.&lt;br /&gt;
&lt;br /&gt;
=== Is there a Code of Conduct? ===&lt;br /&gt;
&lt;br /&gt;
Yes, see [[Code of Conduct]]. Please read it and respect it.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People [https://github.com/whatwg collaborate on GitHub] or send email to [https://whatwg.org/mailing-list#specs the mailing list].&lt;br /&gt;
&lt;br /&gt;
Each standard has one or more editors, who are responsible for dealing with feedback for that document. Those editors read all the feedback, and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc.) make language design decisions intended to address everyone&#039;s needs as well as possible while keeping the languages and APIs consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the relevant editor to change the spec any more (e.g., because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
For new features, or significant changes to the processing models, the relevant editor will typically describe the intended changes in the relevant bug or mailing list thread to give people a chance to point out problems with it before the spec is updated. Implementors, especially, are urged to indicate on such threads whether they approve of the suggested changes or new feature, so that we can avoid the spec containing material which implementors are later found to disagree with.&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach — there&#039;s no guarantee that everyone will be happy! There is also no voting. There is a small oversight committee (known historically as the &amp;quot;WHATWG members&amp;quot;, from the name that the original [https://whatwg.org/charter charter] used, though that terminology is misleading) who have the authority to override or replace editors if they start making bad decisions, but so far that has never happened in over ten years. This committee has a private mailing list, but it receives very few messages, usually going years with no emails at all. Discussions on that list are summarized and described on the public list, to make sure everyone is kept up to date.&lt;br /&gt;
&lt;br /&gt;
=== What happens with WHATWG mailing list/GitHub issue discussions? ===&lt;br /&gt;
&lt;br /&gt;
On the WHATWG list and in WHATWG issues on GitHub, the burden is on the spec editors to evaluate the various positions that have been put forward in a discussion, and figure out which one is strongest (or find another position that strikes a better balance between all of them).&lt;br /&gt;
&lt;br /&gt;
The purpose of debate at the WHATWG therefore isn&#039;t to convince everyone; it is to put forward the arguments that exist, so that the&lt;br /&gt;
relevant editor can make a well-informed decision. As a corollary: If some points are made, rebutted, and not further defended, then maybe the person making the arguments is hoping that the relevant editor will consider the rebuttals weak, or thinks that the argument they have presented is strong despite the rebuttals. If you find someone is not making good arguments, or is ignoring your arguments, your best bet is to stop responding. Repeating previously-stated arguments doesn&#039;t help, since the editors will see all the arguments when they look at the thread. Similarly, as soon as threads start being meta-threads about people&#039;s argumentation behaviour, we stop making any kind of&lt;br /&gt;
useful progress, since that isn&#039;t input that can help the decision-making process later.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
File an issue on the [https://spec.whatwg.org/ relevant standard] as indicated at the top of that standard. All feedback is supposed to be addressed in due course. You are also welcome to take a stab at addressing the problem yourself through a GitHub pull request.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g., because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editors know&#039;&#039;&#039; by either emailing them, or contacting them on [[IRC]]. Requests for priority feedback handling are handled confidentially if desired so other implementers won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_removing_bad_idesa_from_the_spec.3F}}Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* Occasionally, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward. If it&#039;s been a few years and there&#039;s no implementation, and no vendor is showing any interest in eventually implementing that section; or if it&#039;s a section that browsers previously implemented but where the momentum shows that browsers are actually removing support, then it is highly likely that the request to remove the section will be honoured. (Sometimes, a warning is first placed in the spec, as with [https://html.spec.whatwg.org/multipage/webappapis.html#dialogs-implemented-using-separate-documents showModalDialog()].)&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential or fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_adding_new_features_to_the_spec.3F}}Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
&lt;br /&gt;
# Forget about the particular solution you have in mind! Solution time is later!&lt;br /&gt;
# Write down a description of the underlying problem you&#039;re trying to solve. What are the use cases? A use case is an actual user wanting to do something. Then list requirements for each use case. For a good example of how to do this, see [http://lists.w3.org/Archives/Public/public-webapps/2012JulSep/0835.html this email].&lt;br /&gt;
# Get more people involved. Open a new issue in [https://github.com/whatwg/html/issues whatwg/html on GitHub] that describes the use cases and their requirements. Ask fellow Web developers about their opinions (but remind them of step 1 above). Adjust the list of use cases and requirements as appropriate. Say which use cases are important and which are just nice to have.&lt;br /&gt;
# Optionally, your work is done at this point. If you have done a good job of the above steps and convinced other people that your use case is an important one to solve, they can do the remaining steps. (On the flip side, if nobody else cares about the use case, chances are solutions for it will not succeed despite being awesome.)&lt;br /&gt;
# Research existing solutions. Come up with new solutions. Try to keep the solutions as simple as possible, maybe only addressing the important use cases and leaving the nice to have use cases for later (when there&#039;s implementation experience). Send this list of solutions, old and new, as a comment on the feature&#039;s issue. Ask browser vendors for feedback. Maybe some particular solutions don&#039;t fit with the browser&#039;s architecture, optimizations, etc., and just are not going to be implemented no matter how much you like them. Strike those solutions and don&#039;t grieve about the loss!&lt;br /&gt;
# Evaluate how well each of the remaining solutions address each use case and how well they meet the requirements. This step should show which solution is the technically best fit (might turn out to be someone else&#039;s solution).&lt;br /&gt;
# Ask the spec&#039;s editor to put that solution in the spec, or create a pull request on GitHub yourself. Possibly your text won&#039;t be taken verbatim but will be written in a style that is more suitable for implementors or better hooks in to the rest of the spec, etc.&lt;br /&gt;
# Ask browser vendors to implement the newly specified solution, even if it&#039;s just an experimental implementation. This implementation experience usually means that new problems are found with the solution that need to be addressed, or that a different solution is actually better.&lt;br /&gt;
# Write a test suite for the feature to see if the implementations match the spec. This usually highlights bugs in the implementations and also bugs in the spec.&lt;br /&gt;
# Participate in subsequent design discussions. When there are two or more mature implementations, it may be time to extend the feature to address the nice to have use cases (but this whole process should be repeated even for such extensions).&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which can even start before implementations start being written to the spec. Cross-browser tests for HTML are maintained in [https://github.com/w3c/web-platform-tests/tree/master/html w3c/web-platform-tests/html on GitHub].&lt;br /&gt;
&lt;br /&gt;
=== Should I send new proposed text when I have a suggestion? ===&lt;br /&gt;
&lt;br /&gt;
Please do not suggest new text, instead, say what is wrong with the current text. Just proposing new text makes it impossible for the editor to determine if the problem is endemic (requiring more changes than you realise), or whether what the editor thinks of as mistakes in the new proposed text are intentional or not (and should be fixed or not), or whether stylistic differences are intentional or not, etc.&lt;br /&gt;
&lt;br /&gt;
=== What does &amp;quot;Living Standard&amp;quot; mean? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG specifications are described as Living Standards. This means that they are standards that are continuously updated as they receive feedback, either from Web designers, browser vendors, tool vendors, or indeed any other interested party. It also means that new features get added to them over time, at a rate intended to keep the specifications a little ahead of the implementations but not so far ahead that the implementations give up.&lt;br /&gt;
&lt;br /&gt;
Despite the continuous maintenance, or maybe we should say &#039;&#039;as part&#039;&#039; of the continuing maintenance, a significant effort is placed on getting the specifications and the implementations to converge — the parts of the specification that are mature and stable are not changed willy nilly. Maintenance means that the days where the specifications are brought down from the mountain and remain forever locked, even if it turns out that all the browsers do something else, or even if it turns out that the specification left some detail out and the browsers all disagree on how to implement it, are gone. Instead, we now make sure to update the specifications to be detailed enough that all the implementations (not just browsers, of course) can do the same thing. Instead of ignoring what the browsers do, we fix the spec to match what the browsers do. Instead of leaving the specification ambiguous, we fix the the specification to define how things work.&lt;br /&gt;
&lt;br /&gt;
=== Does that mean the specifications can change at any time? ===&lt;br /&gt;
&lt;br /&gt;
The specifications do not change arbitrarily: we are extremely careful! As parts of a specification mature, and implementations ship, the spec cannot be changed in backwards-incompatible ways (because the implementors would never agree to break compatibility unless for security reasons). The specifications are never complete, since the Web is continuously evolving. The last time HTML was described as &amp;quot;complete&amp;quot; was after HTML4, when development stopped for several years, leading to stagnation. (If the Web is replaced by something better and dies, the HTML spec will die with it.)&lt;br /&gt;
&lt;br /&gt;
For references to stable copies of the specifications, some WHATWG specifications follows a process by which each change to the specification (embodied in a commit) triggers the publication of a frozen snapshot of the said specification.&lt;br /&gt;
&lt;br /&gt;
These snapshots are published as historical references. The WHATWG intends to keep these frozen snapshots available at their published URL permanently.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s the patent story for WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG operates as a W3C Community Group and thus uses the W3C Community Group patent policies.&lt;br /&gt;
So far we have published one FSA with [http://www.w3.org/community/whatwg/spec/82/commitments patent commitments] from Google, Mozilla, and others covering the URL standard.&lt;br /&gt;
[https://blog.whatwg.org/make-patent-commitments You can make patent commitments too!]&lt;br /&gt;
Some of our specifications have also been forked and republished by the W3C with patent commitments from certain companies.&lt;br /&gt;
&lt;br /&gt;
=== What is the process for translating WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
Many WHATWG standards have been translated into other languages by the WHATWG community. This is great, and highly encouraged!&lt;br /&gt;
&lt;br /&gt;
In general, if you translate a WHATWG Standard, please communicate with the maintainers of the standard (e.g. via a GitHub issue) letting them know about your work. In general this will lead to adding a link to your translation to the top of the original specification, to allow interested readers to view it. You can see examples of this in many WHATWG standards, e.g. https://streams.spec.whatwg.org/.&lt;br /&gt;
&lt;br /&gt;
Such translations are not normative (i.e., implementations should be sure to consult the original). Due to the nature of living standards, which can change often, it&#039;s possible for translations to become out of date compared to the original standard. If the translation shows signs of no longer being maintained, or has other quality problems, community members are encouraged to provide feedback to the maintainers of the standard, so that any links to the translation can be removed in order to avoid confusing readers.&lt;br /&gt;
&lt;br /&gt;
Note that WHATWG specifications are always licensed under liberal licenses that allow the creation of derivative works like translations.&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML? === &lt;br /&gt;
&lt;br /&gt;
[https://html.spec.whatwg.org/multipage/ HTML] is one of the standards being worked on by the WHATWG community. It is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML and XML (XHTML) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before, yet are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? ===&lt;br /&gt;
&lt;br /&gt;
Going forward, the WHATWG is just working on &amp;quot;HTML&amp;quot;, without worrying about version numbers. When people talk about HTML5 in the context of the WHATWG, they usually mean just &amp;quot;the latest work on HTML&amp;quot;, not necessarily a specific version. For more details, see the section called [https://html.spec.whatwg.org/multipage/introduction.html#is-this-html5? &amp;quot;Is this HTML5?&amp;quot;] in the specification.&lt;br /&gt;
&lt;br /&gt;
=== How do I validate my pages? ===&lt;br /&gt;
&lt;br /&gt;
Use a [https://validator.whatwg.org/ validator].&lt;br /&gt;
&lt;br /&gt;
=== What parts of the specification are stable? ===&lt;br /&gt;
&lt;br /&gt;
The whole specification is more or less stable except where there are big messages pointing out some unresolved issue. (These are pretty rare.) There are some parts of the spec that describe new technology that has not yet been implemented, but at this point these additions are only added after the design itself is pretty stable.&lt;br /&gt;
&lt;br /&gt;
(In practice, implementations all follow the latest specification drafts anyway, not so-called &amp;quot;finished&amp;quot; snapshots. The problem with following a snapshot is that you end up following something that is &#039;&#039;known to be wrong&#039;&#039;. That&#039;s obviously not the way to get interoperability! This has in fact been a real problem at the W3C, where mistakes are found and fixed in the editors&#039; drafts of specifications, but implementors who aren&#039;t fully engaged in the process go and implement obsolete snapshots instead, including those bugs, without realising the problems, and resulting in differences between the browsers.)&lt;br /&gt;
&lt;br /&gt;
=== Will future browsers have any idea what older HTML documents mean?  ===&lt;br /&gt;
&lt;br /&gt;
Browsers do not implement HTML+, HTML2, HTML3.2 HTML4, HTML4.01, etc, as separate versions. They all just have a single implementation that covers all these versions at once. That is what the WHATWG HTML specification defines: how to write a browser (or other implementation) that handles &#039;&#039;all previous versions of HTML&#039;&#039;, as well as all the latest features.&lt;br /&gt;
&lt;br /&gt;
One of the main goals of the HTML specification and the WHATWG effort as a whole is to make it possible for archeologists hundreds of years from now to write a browser and view HTML content, regardless of when it was written. Making sure that we handle all documents is one of our most important goals. Not having versions does not preclude this; indeed it makes it significantly easier.&lt;br /&gt;
&lt;br /&gt;
=== How are developers to determine when certain parts of their pages will become invalid? ===&lt;br /&gt;
&lt;br /&gt;
It shouldn&#039;t matter if and when old pages become invalid.&lt;br /&gt;
&lt;br /&gt;
Validity (more often referred to as document conformance in the WHATWG) is a quality assurance tool to help authors avoid mistakes. We don&#039;t make things non-conforming (invalid) for the sake of it, we use conformance as a guide for developers to help them avoid bad practices or mistakes (like typos). So there&#039;s not really any need to worry about whether old pages are conforming or not, it&#039;s only helpful when you&#039;re writing a new page, and it&#039;s always most helpful to have the latest advice. It wouldn&#039;t be useful to check for compliance against last week&#039;s rules, for instance. After all, we fixed mistakes in those rules this week! For more details, see [https://html.spec.whatwg.org/multipage/introduction.html#conformance-requirements-for-authors part of the introduction] of the specification.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec:&lt;br /&gt;
&lt;br /&gt;
* The Twitter feed: [https://twitter.com/htmlstandard @htmlstandard]&lt;br /&gt;
&lt;br /&gt;
* The [https://github.com/whatwg/html/commits/master GitHub commits log]&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [https://github.com/whatwg/html/ Git repository]. You may use any Git client to check out the latest version and use your client&amp;amp;rsquo;s diff tools to compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* At a broader level, Anne and Simon once wrote a document that gave a high-level overview of changes to HTML over the last decade or so: https://html-differences.whatwg.org/&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the HTML spec? ===&lt;br /&gt;
&lt;br /&gt;
The HTML Standard is available in two forms: [https://html.spec.whatwg.org/ single-page] (&#039;&#039;very large&#039;&#039;) and &#039;&#039;&#039;[https://html.spec.whatwg.org/multipage/ multi-page]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The WHATWG [https://spec.whatwg.org/ also works on other standards], such as the DOM, URL, and XMLHttpRequest standards.&lt;br /&gt;
&lt;br /&gt;
The W3C publishes some forked versions of these specifications. We have requested that they stop publishing these but they have refused. They copy most of our fixes into their forks, but their forks are usually weeks to months behind. They also make intentional changes, and sometimes even unintentional changes, to their versions. We highly recommend not paying any attention to the W3C forks of WHATWG standards.&lt;br /&gt;
&lt;br /&gt;
=== Are there versions of the HTML specification aimed specifically at authors/implementors? ===&lt;br /&gt;
&lt;br /&gt;
Yes! [https://developers.whatwg.org/ developers.whatwg.org]&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites to help you work out what you can use:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.info/&lt;br /&gt;
* http://caniuse.com/&lt;br /&gt;
* http://html5doctor.com/&lt;br /&gt;
* https://developer.mozilla.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, then remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG is now using a Living Standard development model, so this question is no longer really pertinent. See above, under &amp;quot;[[FAQ#What_is_HTML.3F|What is HTML5?]]&amp;quot;. The real question is, when can you use new features? For an answer to &#039;that&#039; question, see &amp;quot;[[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s this I hear about 2022? ===&lt;br /&gt;
&lt;br /&gt;
Before the WHATWG transitioned to an unversioned model for HTML, when we were still working on HTML5 and still thought in terms of snapshot drafts reaching milestones as a whole rather than on a per-section basis, the editor estimated that we&#039;d reach Last Call in October 2009, Candidate Recommendation in the year 2012, and Recommendation in the year 2022 or later. This would be approximately 18-20 years of development, since beginning in mid-2004, which is on par with the amount of work that other specs of similar size and similar maturity receive to get to the same level of quality. For instance, it&#039;s in line with the timeline of CSS2/2.1. Compared to HTML4&#039;s timetable it may seem long, but consider: work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hadn&#039;t reached the level that we want to reach with HTML now. There was no real test suite, there are many parts of the HTML4 spec that are lacking real implementations, there are big parts of HTML4 that aren&#039;t interoperable, and the HTML4 spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than the WHATWG is aiming for. We now look for two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve moved to a more incremental model without macro-level milestones, the 2022 date is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft started implementing new parts of the contemporary HTML standard in IE8 and has been adding more to IE since.&lt;br /&gt;
&lt;br /&gt;
HTML is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Rationale]] — a page that documents some reasons behind decisions in the spec, originally written and maintained by Variable. If anyone wants to help him out, try to grab someone on [[IRC]] (e.g. Hixie), we&#039;re always looking for more contributors and this is a good place to start.&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]] or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see &#039;&#039;HTML feature proposals&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
== HTML syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What is the DOCTYPE for modern HTML documents? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary. However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
Fundamentally, this is an XML issue, and is not specific to XHTML.&lt;br /&gt;
&lt;br /&gt;
=== How are documents from HTML4 and earlier versions parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by the HTML spec. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax as now defined therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed as described by the new HTML specification.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [https://validator.whatwg.org/ HTML validator] that follows the latest specification.&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in the HTML specification. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike the situation as of XHTML1, the HTML specification says that XHTML must no longer be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 back to HTML.&lt;br /&gt;
&lt;br /&gt;
The new HTML specification also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
Yes. Find guidance in [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|HTML vs. XHTML]] and [http://dev.w3.org/html5/html-xhtml-author-guide/html-xhtml-authoring-guide.html Polyglot Markup: HTML-Compatible XHTML Documents].&lt;br /&gt;
&lt;br /&gt;
A word of warning though. You have to be &#039;&#039;&#039;really&#039;&#039;&#039; careful for this to work, and it&#039;s almost certainly not worth it. You&#039;d be better off just using an HTML-to-XML parser. That way you can just use HTML normally while still using XML pipeline tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to the latest HTML specification, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does this new HTML spec legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;amp;lt;a&amp;amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML. The main reason this isn&#039;t in HTML is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;amp;lt;a&amp;amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;figcaption&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;figcaption&amp;gt;Apples&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can use [https://html.spec.whatwg.org/multipage/scripting.html#custom-elements custom elements].&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This was thought to be a styling problem and should be fixed in CSS. There was no reason to add a grouping element to HTML, as the semantics are already unambiguous without an additional element.&lt;br /&gt;
&lt;br /&gt;
In October 2016 it became clear that CSS would not fix this in the foreseeable future, HTML was changed to allow &amp;amp;lt;div&amp;gt; as a grouping element in &amp;amp;lt;dl&amp;gt;. See https://github.com/whatwg/html/issues/1937 and https://github.com/whatwg/html/pull/1945&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers). While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
=== Where&#039;s the harm in adding— ===&lt;br /&gt;
&lt;br /&gt;
Every feature we add to the Web platform has a cost:&lt;br /&gt;
&lt;br /&gt;
* Implementation: someone has to write code for it in each browser&lt;br /&gt;
* Testing: someone has to write the tests to check the features is working&lt;br /&gt;
* QA: someone has to regularly run the tests to make sure the feature doesn&#039;t regress&lt;br /&gt;
* Code maintenance: when browser vendors refactor code, they have to refactor more code if there&#039;s more features&lt;br /&gt;
* Tutorials: people who write tutorials have to include the feature, or handle feedback asking for them to do so&lt;br /&gt;
* Cognitive load: authors learning the platform have more documentation to wade through even if they don&#039;t care about the feature&lt;br /&gt;
* [http://www.nngroup.com/articles/stagnating-expertise/ Extra features discourage exploration]: Having more features means less overall feature usage.&lt;br /&gt;
* Page maintenance: authors have to know how to maintain the feature if other people have used it in pages they now maintain&lt;br /&gt;
* Spec writing: someone has to write the spec for the feature and ensure it&#039;s maintained&lt;br /&gt;
* Bug fixing: when bugs are found in the spec or implementations, someone has to figure out a fix, implement it, test it, ship it, tests have to be fixed, documentation has to be updated, etc&lt;br /&gt;
* Code size: each feature increases the size of browsers (both on-disk binaries and in-memory resident size)&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
No. The two groups have different goals. The WHATWG spec is intended to describe what browsers should aim for, introducing new features and describing reality in as much, and as accurate, detail as possible. The W3C spec is intended to follow the W3C process to REC.&lt;br /&gt;
&lt;br /&gt;
On the WHATWG side, the editors read the feedback sent to both groups and take all input into account — and indeed there are far more places where input on HTML is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc). (In particular, the editors do not look at the source of technical arguments when attempting to determine what path to take on an issue or other.)&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The two groups have different specs, so each has authority over its spec. The specs can and have diverged on some topics; unfortunately, these differences are not documented anywhere.&lt;br /&gt;
&lt;br /&gt;
=== Isn&#039;t it bad that the specs have forked? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The WHATWG originally committed to remaining consistent with the W3C spec unless the W3C working group showed a lapse in judgement. When that (in Hixie&#039;s opinion) occurred, there was little choice left but to let the specs diverge.&lt;br /&gt;
&lt;br /&gt;
The plan to get the specs to converge again, such as it is, is to just do a better job with the WHATWG spec, such that it becomes the logical and obvious choice for anyone wanting to figure out which spec they should use.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [https://platform.html5.org/history/ A feature history of the modern Web Platform] (2003 onward) ([https://github.com/whatwg/platform.html5.org/blob/master/history/index.html on GitHub])&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki] (1997 to 2008)&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/introduction.html#history-2 The history section in the HTML standard itself]&lt;br /&gt;
&lt;br /&gt;
== Using HTML ==&lt;br /&gt;
&lt;br /&gt;
=== Do you have any hints on how to use &amp;amp;lt;section&amp;gt; and &amp;amp;lt;article&amp;gt; and so on? ===&lt;br /&gt;
&lt;br /&gt;
Some hopefully helpful hints:&lt;br /&gt;
&lt;br /&gt;
* One way to look at it is how would you draw the page outline/table-of-contents? Each entry in the table of contents should be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;, and if it&#039;s not in the table of contents and doesn&#039;t have an &amp;amp;lt;h1&amp;gt;, it should probably not be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;.&lt;br /&gt;
* You can still use &amp;amp;lt;div&amp;gt;. It&#039;s the right element if you need a styling hook because CSS can&#039;t give you enough to do what you want.&lt;br /&gt;
* Generally, &amp;amp;lt;section&amp;gt;s should start with an &amp;amp;lt;h1&amp;gt; and the section title. It&#039;s not a hard-and-fast rule, but if you find yourself in a situation where an &amp;amp;lt;h1&amp;gt; would be inappropriate, you probably want &amp;amp;lt;div&amp;gt; rather than &amp;amp;lt;section&amp;gt;.&lt;br /&gt;
* Sections can contain Articles, and vice versa. e.g. you can have a section that is news, a section that is editorials, a section that is sports, each with many articles, and each of those can have subsections, and each section can have comments, which are marked up using &amp;amp;lt;article&amp;gt;, and each comment could be big enough that it has separate &amp;amp;lt;section&amp;gt;s, and so on.&lt;br /&gt;
&lt;br /&gt;
== Other specifications ==&lt;br /&gt;
&lt;br /&gt;
=== What ever happened to...? ===&lt;br /&gt;
&lt;br /&gt;
The Web Forms 2.0 specification was folded into what is now the HTML specification.&lt;br /&gt;
&lt;br /&gt;
The Web Controls 1.0 specification was overtaken by events and has been abandoned. Its problem space is mostly handled by ARIA and Web Components now.&lt;br /&gt;
&lt;br /&gt;
The DOM Parsing specification was abandoned by the WHATWG because the W3C was doing a better job of maintaining that specification. We do not want to cause confusion in the market place, so when another organisation writes a specification that covers the same technology as one of ours, we only continue to publish it if our version is technically superior.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== +1 ===&lt;br /&gt;
&lt;br /&gt;
Please note that content-free agreement (such as +1s) have no effect on &lt;br /&gt;
the WHATWG list and are therefore discouraged. Editors of specs discussed &lt;br /&gt;
in the WHATWG only consider the quality of the arguments presented, and &lt;br /&gt;
not the volume of agreement.&lt;br /&gt;
&lt;br /&gt;
You should therefore only post to the list if you have a substantive new point&lt;br /&gt;
to make, for example if you have seen a flaw in an argument presented so far,&lt;br /&gt;
or have a new idea to contribute, or have some information that has not yet&lt;br /&gt;
been brought to the table.&lt;br /&gt;
&lt;br /&gt;
=== Making Outlook quote email messages properly ===&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please reply inline or make the reply self-contained, and trim extraneous quotes from previous emails in your replies.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your email makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your email backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post emails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write email.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write email?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10156</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10156"/>
		<updated>2017-03-13T09:19:26Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* What is the WHATWG working on? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== How do you spell and pronounce WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
It is spelled WHATWG, all uppercase. It has various pronunciations: what-wee-gee, what-wig, what-double-you-gee.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is Web standards, specifically:&lt;br /&gt;
&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/ HTML], which also includes Web Workers, Web Storage, the Web Sockets API, Server-Sent Events, Microdata, and the 2D Canvas.&lt;br /&gt;
* [https://fetch.spec.whatwg.org/ Fetch], including the &amp;lt;code&amp;gt;fetch()&amp;lt;/code&amp;gt; API&lt;br /&gt;
* [https://dom.spec.whatwg.org/ DOM], including DOM Events, DOM range, and mutation observers&lt;br /&gt;
* [https://url.spec.whatwg.org/ URLs], including an API for URLs&lt;br /&gt;
&lt;br /&gt;
...and [https://spec.whatwg.org/ a number of other specs].&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=hneN6aW-d9w This video from Domenic Denicola] is a good introduction to working with standards bodies.&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily [https://github.com/whatwg participate on GitHub] or subscribe to the [https://whatwg.org/mailing-list WHATWG mailing lists]. There are no meetings, since meetings prevent people with limited time or money from participating.&lt;br /&gt;
&lt;br /&gt;
=== Is there a Code of Conduct? ===&lt;br /&gt;
&lt;br /&gt;
Yes, see [[Code of Conduct]]. Please read it and respect it.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People [https://github.com/whatwg collaborate on GitHub] or send email to [https://whatwg.org/mailing-list#specs the mailing list].&lt;br /&gt;
&lt;br /&gt;
Each standard has one or more editors, who are responsible for dealing with feedback for that document. Those editors read all the feedback, and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc.) make language design decisions intended to address everyone&#039;s needs as well as possible while keeping the languages and APIs consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the relevant editor to change the spec any more (e.g., because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
For new features, or significant changes to the processing models, the relevant editor will typically describe the intended changes in the relevant bug or mailing list thread to give people a chance to point out problems with it before the spec is updated. Implementors, especially, are urged to indicate on such threads whether they approve of the suggested changes or new feature, so that we can avoid the spec containing material which implementors are later found to disagree with.&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach — there&#039;s no guarantee that everyone will be happy! There is also no voting. There is a small oversight committee (known historically as the &amp;quot;WHATWG members&amp;quot;, from the name that the original [https://whatwg.org/charter charter] used, though that terminology is misleading) who have the authority to override or replace editors if they start making bad decisions, but so far that has never happened in over ten years. This committee has a private mailing list, but it receives very few messages, usually going years with no emails at all. Discussions on that list are summarized and described on the public list, to make sure everyone is kept up to date.&lt;br /&gt;
&lt;br /&gt;
=== What happens with WHATWG mailing list/GitHub issue discussions? ===&lt;br /&gt;
&lt;br /&gt;
On the WHATWG list and in WHATWG issues on GitHub, the burden is on the spec editors to evaluate the various positions that have been put forward in a discussion, and figure out which one is strongest (or find another position that strikes a better balance between all of them).&lt;br /&gt;
&lt;br /&gt;
The purpose of debate at the WHATWG therefore isn&#039;t to convince everyone; it is to put forward the arguments that exist, so that the&lt;br /&gt;
relevant editor can make a well-informed decision. As a corollary: If some points are made, rebutted, and not further defended, then maybe the person making the arguments is hoping that the relevant editor will consider the rebuttals weak, or thinks that the argument they have presented is strong despite the rebuttals. If you find someone is not making good arguments, or is ignoring your arguments, your best bet is to stop responding. Repeating previously-stated arguments doesn&#039;t help, since the editors will see all the arguments when they look at the thread. Similarly, as soon as threads start being meta-threads about people&#039;s argumentation behaviour, we stop making any kind of&lt;br /&gt;
useful progress, since that isn&#039;t input that can help the decision-making process later.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
File an issue on the [https://whatwg.org/specs/ relevant standard] as indicated at the top of that standard. All feedback is supposed to be addressed in due course. You are also welcome to take a stab at addressing the problem yourself through a GitHub pull request.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g., because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editors know&#039;&#039;&#039; by either emailing them, or contacting them on [[IRC]]. Requests for priority feedback handling are handled confidentially if desired so other implementers won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_removing_bad_idesa_from_the_spec.3F}}Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* Occasionally, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward. If it&#039;s been a few years and there&#039;s no implementation, and no vendor is showing any interest in eventually implementing that section; or if it&#039;s a section that browsers previously implemented but where the momentum shows that browsers are actually removing support, then it is highly likely that the request to remove the section will be honoured. (Sometimes, a warning is first placed in the spec, as with [https://html.spec.whatwg.org/multipage/webappapis.html#dialogs-implemented-using-separate-documents showModalDialog()].)&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential or fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_adding_new_features_to_the_spec.3F}}Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
&lt;br /&gt;
# Forget about the particular solution you have in mind! Solution time is later!&lt;br /&gt;
# Write down a description of the underlying problem you&#039;re trying to solve. What are the use cases? A use case is an actual user wanting to do something. Then list requirements for each use case. For a good example of how to do this, see [http://lists.w3.org/Archives/Public/public-webapps/2012JulSep/0835.html this email].&lt;br /&gt;
# Get more people involved. Open a new issue in [https://github.com/whatwg/html/issues whatwg/html on GitHub] that describes the use cases and their requirements. Ask fellow Web developers about their opinions (but remind them of step 1 above). Adjust the list of use cases and requirements as appropriate. Say which use cases are important and which are just nice to have.&lt;br /&gt;
# Optionally, your work is done at this point. If you have done a good job of the above steps and convinced other people that your use case is an important one to solve, they can do the remaining steps. (On the flip side, if nobody else cares about the use case, chances are solutions for it will not succeed despite being awesome.)&lt;br /&gt;
# Research existing solutions. Come up with new solutions. Try to keep the solutions as simple as possible, maybe only addressing the important use cases and leaving the nice to have use cases for later (when there&#039;s implementation experience). Send this list of solutions, old and new, as a comment on the feature&#039;s issue. Ask browser vendors for feedback. Maybe some particular solutions don&#039;t fit with the browser&#039;s architecture, optimizations, etc., and just are not going to be implemented no matter how much you like them. Strike those solutions and don&#039;t grieve about the loss!&lt;br /&gt;
# Evaluate how well each of the remaining solutions address each use case and how well they meet the requirements. This step should show which solution is the technically best fit (might turn out to be someone else&#039;s solution).&lt;br /&gt;
# Ask the spec&#039;s editor to put that solution in the spec, or create a pull request on GitHub yourself. Possibly your text won&#039;t be taken verbatim but will be written in a style that is more suitable for implementors or better hooks in to the rest of the spec, etc.&lt;br /&gt;
# Ask browser vendors to implement the newly specified solution, even if it&#039;s just an experimental implementation. This implementation experience usually means that new problems are found with the solution that need to be addressed, or that a different solution is actually better.&lt;br /&gt;
# Write a test suite for the feature to see if the implementations match the spec. This usually highlights bugs in the implementations and also bugs in the spec.&lt;br /&gt;
# Participate in subsequent design discussions. When there are two or more mature implementations, it may be time to extend the feature to address the nice to have use cases (but this whole process should be repeated even for such extensions).&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which can even start before implementations start being written to the spec. Cross-browser tests for HTML are maintained in [https://github.com/w3c/web-platform-tests/tree/master/html w3c/web-platform-tests/html on GitHub].&lt;br /&gt;
&lt;br /&gt;
=== Should I send new proposed text when I have a suggestion? ===&lt;br /&gt;
&lt;br /&gt;
Please do not suggest new text, instead, say what is wrong with the current text. Just proposing new text makes it impossible for the editor to determine if the problem is endemic (requiring more changes than you realise), or whether what the editor thinks of as mistakes in the new proposed text are intentional or not (and should be fixed or not), or whether stylistic differences are intentional or not, etc.&lt;br /&gt;
&lt;br /&gt;
=== What does &amp;quot;Living Standard&amp;quot; mean? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG specifications are described as Living Standards. This means that they are standards that are continuously updated as they receive feedback, either from Web designers, browser vendors, tool vendors, or indeed any other interested party. It also means that new features get added to them over time, at a rate intended to keep the specifications a little ahead of the implementations but not so far ahead that the implementations give up.&lt;br /&gt;
&lt;br /&gt;
Despite the continuous maintenance, or maybe we should say &#039;&#039;as part&#039;&#039; of the continuing maintenance, a significant effort is placed on getting the specifications and the implementations to converge — the parts of the specification that are mature and stable are not changed willy nilly. Maintenance means that the days where the specifications are brought down from the mountain and remain forever locked, even if it turns out that all the browsers do something else, or even if it turns out that the specification left some detail out and the browsers all disagree on how to implement it, are gone. Instead, we now make sure to update the specifications to be detailed enough that all the implementations (not just browsers, of course) can do the same thing. Instead of ignoring what the browsers do, we fix the spec to match what the browsers do. Instead of leaving the specification ambiguous, we fix the the specification to define how things work.&lt;br /&gt;
&lt;br /&gt;
=== Does that mean the specifications can change at any time? ===&lt;br /&gt;
&lt;br /&gt;
The specifications do not change arbitrarily: we are extremely careful! As parts of a specification mature, and implementations ship, the spec cannot be changed in backwards-incompatible ways (because the implementors would never agree to break compatibility unless for security reasons). The specifications are never complete, since the Web is continuously evolving. The last time HTML was described as &amp;quot;complete&amp;quot; was after HTML4, when development stopped for several years, leading to stagnation. (If the Web is replaced by something better and dies, the HTML spec will die with it.)&lt;br /&gt;
&lt;br /&gt;
For references to stable copies of the specifications, some WHATWG specifications follows a process by which each change to the specification (embodied in a commit) triggers the publication of a frozen snapshot of the said specification.&lt;br /&gt;
&lt;br /&gt;
These snapshots are published as historical references. The WHATWG intends to keep these frozen snapshots available at their published URL permanently.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s the patent story for WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG operates as a W3C Community Group and thus uses the W3C Community Group patent policies.&lt;br /&gt;
So far we have published one FSA with [http://www.w3.org/community/whatwg/spec/82/commitments patent commitments] from Google, Mozilla, and others covering the URL standard.&lt;br /&gt;
[https://blog.whatwg.org/make-patent-commitments You can make patent commitments too!]&lt;br /&gt;
Some of our specifications have also been forked and republished by the W3C with patent commitments from certain companies.&lt;br /&gt;
&lt;br /&gt;
=== What is the process for translating WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
Many WHATWG standards have been translated into other languages by the WHATWG community. This is great, and highly encouraged!&lt;br /&gt;
&lt;br /&gt;
In general, if you translate a WHATWG Standard, please communicate with the maintainers of the standard (e.g. via a GitHub issue) letting them know about your work. In general this will lead to adding a link to your translation to the top of the original specification, to allow interested readers to view it. You can see examples of this in many WHATWG standards, e.g. https://streams.spec.whatwg.org/.&lt;br /&gt;
&lt;br /&gt;
Such translations are not normative (i.e., implementations should be sure to consult the original). Due to the nature of living standards, which can change often, it&#039;s possible for translations to become out of date compared to the original standard. If the translation shows signs of no longer being maintained, or has other quality problems, community members are encouraged to provide feedback to the maintainers of the standard, so that any links to the translation can be removed in order to avoid confusing readers.&lt;br /&gt;
&lt;br /&gt;
Note that WHATWG specifications are always licensed under liberal licenses that allow the creation of derivative works like translations.&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML? === &lt;br /&gt;
&lt;br /&gt;
[https://html.spec.whatwg.org/multipage/ HTML] is one of the standards being worked on by the WHATWG community. It is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML and XML (XHTML) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before, yet are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? ===&lt;br /&gt;
&lt;br /&gt;
Going forward, the WHATWG is just working on &amp;quot;HTML&amp;quot;, without worrying about version numbers. When people talk about HTML5 in the context of the WHATWG, they usually mean just &amp;quot;the latest work on HTML&amp;quot;, not necessarily a specific version. For more details, see the section called [https://html.spec.whatwg.org/multipage/introduction.html#is-this-html5? &amp;quot;Is this HTML5?&amp;quot;] in the specification.&lt;br /&gt;
&lt;br /&gt;
=== How do I validate my pages? ===&lt;br /&gt;
&lt;br /&gt;
Use a [https://validator.whatwg.org/ validator].&lt;br /&gt;
&lt;br /&gt;
=== What parts of the specification are stable? ===&lt;br /&gt;
&lt;br /&gt;
The whole specification is more or less stable except where there are big messages pointing out some unresolved issue. (These are pretty rare.) There are some parts of the spec that describe new technology that has not yet been implemented, but at this point these additions are only added after the design itself is pretty stable.&lt;br /&gt;
&lt;br /&gt;
(In practice, implementations all follow the latest specification drafts anyway, not so-called &amp;quot;finished&amp;quot; snapshots. The problem with following a snapshot is that you end up following something that is &#039;&#039;known to be wrong&#039;&#039;. That&#039;s obviously not the way to get interoperability! This has in fact been a real problem at the W3C, where mistakes are found and fixed in the editors&#039; drafts of specifications, but implementors who aren&#039;t fully engaged in the process go and implement obsolete snapshots instead, including those bugs, without realising the problems, and resulting in differences between the browsers.)&lt;br /&gt;
&lt;br /&gt;
=== Will future browsers have any idea what older HTML documents mean?  ===&lt;br /&gt;
&lt;br /&gt;
Browsers do not implement HTML+, HTML2, HTML3.2 HTML4, HTML4.01, etc, as separate versions. They all just have a single implementation that covers all these versions at once. That is what the WHATWG HTML specification defines: how to write a browser (or other implementation) that handles &#039;&#039;all previous versions of HTML&#039;&#039;, as well as all the latest features.&lt;br /&gt;
&lt;br /&gt;
One of the main goals of the HTML specification and the WHATWG effort as a whole is to make it possible for archeologists hundreds of years from now to write a browser and view HTML content, regardless of when it was written. Making sure that we handle all documents is one of our most important goals. Not having versions does not preclude this; indeed it makes it significantly easier.&lt;br /&gt;
&lt;br /&gt;
=== How are developers to determine when certain parts of their pages will become invalid? ===&lt;br /&gt;
&lt;br /&gt;
It shouldn&#039;t matter if and when old pages become invalid.&lt;br /&gt;
&lt;br /&gt;
Validity (more often referred to as document conformance in the WHATWG) is a quality assurance tool to help authors avoid mistakes. We don&#039;t make things non-conforming (invalid) for the sake of it, we use conformance as a guide for developers to help them avoid bad practices or mistakes (like typos). So there&#039;s not really any need to worry about whether old pages are conforming or not, it&#039;s only helpful when you&#039;re writing a new page, and it&#039;s always most helpful to have the latest advice. It wouldn&#039;t be useful to check for compliance against last week&#039;s rules, for instance. After all, we fixed mistakes in those rules this week! For more details, see [https://html.spec.whatwg.org/multipage/introduction.html#conformance-requirements-for-authors part of the introduction] of the specification.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec:&lt;br /&gt;
&lt;br /&gt;
* The Twitter feed: [https://twitter.com/htmlstandard @htmlstandard]&lt;br /&gt;
&lt;br /&gt;
* The [https://github.com/whatwg/html/commits/master GitHub commits log]&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [https://github.com/whatwg/html/ Git repository]. You may use any Git client to check out the latest version and use your client&amp;amp;rsquo;s diff tools to compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* At a broader level, Anne and Simon once wrote a document that gave a high-level overview of changes to HTML over the last decade or so: https://html-differences.whatwg.org/&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the HTML spec? ===&lt;br /&gt;
&lt;br /&gt;
The HTML Standard is available in two forms: [https://html.spec.whatwg.org/ single-page] (&#039;&#039;very large&#039;&#039;) and &#039;&#039;&#039;[https://html.spec.whatwg.org/multipage/ multi-page]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The WHATWG [https://whatwg.org/specs/ also works on other standards], such as the DOM, URL, and XMLHttpRequest standards.&lt;br /&gt;
&lt;br /&gt;
The W3C publishes some forked versions of these specifications. We have requested that they stop publishing these but they have refused. They copy most of our fixes into their forks, but their forks are usually weeks to months behind. They also make intentional changes, and sometimes even unintentional changes, to their versions. We highly recommend not paying any attention to the W3C forks of WHATWG standards.&lt;br /&gt;
&lt;br /&gt;
=== Are there versions of the HTML specification aimed specifically at authors/implementors? ===&lt;br /&gt;
&lt;br /&gt;
Yes! [https://developers.whatwg.org/ developers.whatwg.org]&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites to help you work out what you can use:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.info/&lt;br /&gt;
* http://caniuse.com/&lt;br /&gt;
* http://html5doctor.com/&lt;br /&gt;
* https://developer.mozilla.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, then remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG is now using a Living Standard development model, so this question is no longer really pertinent. See above, under &amp;quot;[[FAQ#What_is_HTML.3F|What is HTML5?]]&amp;quot;. The real question is, when can you use new features? For an answer to &#039;that&#039; question, see &amp;quot;[[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s this I hear about 2022? ===&lt;br /&gt;
&lt;br /&gt;
Before the WHATWG transitioned to an unversioned model for HTML, when we were still working on HTML5 and still thought in terms of snapshot drafts reaching milestones as a whole rather than on a per-section basis, the editor estimated that we&#039;d reach Last Call in October 2009, Candidate Recommendation in the year 2012, and Recommendation in the year 2022 or later. This would be approximately 18-20 years of development, since beginning in mid-2004, which is on par with the amount of work that other specs of similar size and similar maturity receive to get to the same level of quality. For instance, it&#039;s in line with the timeline of CSS2/2.1. Compared to HTML4&#039;s timetable it may seem long, but consider: work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hadn&#039;t reached the level that we want to reach with HTML now. There was no real test suite, there are many parts of the HTML4 spec that are lacking real implementations, there are big parts of HTML4 that aren&#039;t interoperable, and the HTML4 spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than the WHATWG is aiming for. We now look for two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve moved to a more incremental model without macro-level milestones, the 2022 date is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft started implementing new parts of the contemporary HTML standard in IE8 and has been adding more to IE since.&lt;br /&gt;
&lt;br /&gt;
HTML is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Rationale]] — a page that documents some reasons behind decisions in the spec, originally written and maintained by Variable. If anyone wants to help him out, try to grab someone on [[IRC]] (e.g. Hixie), we&#039;re always looking for more contributors and this is a good place to start.&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]] or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see &#039;&#039;HTML feature proposals&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
== HTML syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What is the DOCTYPE for modern HTML documents? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary. However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
Fundamentally, this is an XML issue, and is not specific to XHTML.&lt;br /&gt;
&lt;br /&gt;
=== How are documents from HTML4 and earlier versions parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by the HTML spec. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax as now defined therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed as described by the new HTML specification.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [https://validator.whatwg.org/ HTML validator] that follows the latest specification.&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in the HTML specification. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike the situation as of XHTML1, the HTML specification says that XHTML must no longer be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 back to HTML.&lt;br /&gt;
&lt;br /&gt;
The new HTML specification also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
Yes. Find guidance in [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|HTML vs. XHTML]] and [http://dev.w3.org/html5/html-xhtml-author-guide/html-xhtml-authoring-guide.html Polyglot Markup: HTML-Compatible XHTML Documents].&lt;br /&gt;
&lt;br /&gt;
A word of warning though. You have to be &#039;&#039;&#039;really&#039;&#039;&#039; careful for this to work, and it&#039;s almost certainly not worth it. You&#039;d be better off just using an HTML-to-XML parser. That way you can just use HTML normally while still using XML pipeline tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to the latest HTML specification, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does this new HTML spec legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;amp;lt;a&amp;amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML. The main reason this isn&#039;t in HTML is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;amp;lt;a&amp;amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;figcaption&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;figcaption&amp;gt;Apples&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can use [https://html.spec.whatwg.org/multipage/scripting.html#custom-elements custom elements].&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This was thought to be a styling problem and should be fixed in CSS. There was no reason to add a grouping element to HTML, as the semantics are already unambiguous without an additional element.&lt;br /&gt;
&lt;br /&gt;
In October 2016 it became clear that CSS would not fix this in the foreseeable future, HTML was changed to allow &amp;amp;lt;div&amp;gt; as a grouping element in &amp;amp;lt;dl&amp;gt;. See https://github.com/whatwg/html/issues/1937 and https://github.com/whatwg/html/pull/1945&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers). While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
=== Where&#039;s the harm in adding— ===&lt;br /&gt;
&lt;br /&gt;
Every feature we add to the Web platform has a cost:&lt;br /&gt;
&lt;br /&gt;
* Implementation: someone has to write code for it in each browser&lt;br /&gt;
* Testing: someone has to write the tests to check the features is working&lt;br /&gt;
* QA: someone has to regularly run the tests to make sure the feature doesn&#039;t regress&lt;br /&gt;
* Code maintenance: when browser vendors refactor code, they have to refactor more code if there&#039;s more features&lt;br /&gt;
* Tutorials: people who write tutorials have to include the feature, or handle feedback asking for them to do so&lt;br /&gt;
* Cognitive load: authors learning the platform have more documentation to wade through even if they don&#039;t care about the feature&lt;br /&gt;
* [http://www.nngroup.com/articles/stagnating-expertise/ Extra features discourage exploration]: Having more features means less overall feature usage.&lt;br /&gt;
* Page maintenance: authors have to know how to maintain the feature if other people have used it in pages they now maintain&lt;br /&gt;
* Spec writing: someone has to write the spec for the feature and ensure it&#039;s maintained&lt;br /&gt;
* Bug fixing: when bugs are found in the spec or implementations, someone has to figure out a fix, implement it, test it, ship it, tests have to be fixed, documentation has to be updated, etc&lt;br /&gt;
* Code size: each feature increases the size of browsers (both on-disk binaries and in-memory resident size)&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
No. The two groups have different goals. The WHATWG spec is intended to describe what browsers should aim for, introducing new features and describing reality in as much, and as accurate, detail as possible. The W3C spec is intended to follow the W3C process to REC.&lt;br /&gt;
&lt;br /&gt;
On the WHATWG side, the editors read the feedback sent to both groups and take all input into account — and indeed there are far more places where input on HTML is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc). (In particular, the editors do not look at the source of technical arguments when attempting to determine what path to take on an issue or other.)&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The two groups have different specs, so each has authority over its spec. The specs can and have diverged on some topics; unfortunately, these differences are not documented anywhere.&lt;br /&gt;
&lt;br /&gt;
=== Isn&#039;t it bad that the specs have forked? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The WHATWG originally committed to remaining consistent with the W3C spec unless the W3C working group showed a lapse in judgement. When that (in Hixie&#039;s opinion) occurred, there was little choice left but to let the specs diverge.&lt;br /&gt;
&lt;br /&gt;
The plan to get the specs to converge again, such as it is, is to just do a better job with the WHATWG spec, such that it becomes the logical and obvious choice for anyone wanting to figure out which spec they should use.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [https://platform.html5.org/history/ A feature history of the modern Web Platform] (2003 onward) ([https://github.com/whatwg/platform.html5.org/blob/master/history/index.html on GitHub])&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki] (1997 to 2008)&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/introduction.html#history-2 The history section in the HTML standard itself]&lt;br /&gt;
&lt;br /&gt;
== Using HTML ==&lt;br /&gt;
&lt;br /&gt;
=== Do you have any hints on how to use &amp;amp;lt;section&amp;gt; and &amp;amp;lt;article&amp;gt; and so on? ===&lt;br /&gt;
&lt;br /&gt;
Some hopefully helpful hints:&lt;br /&gt;
&lt;br /&gt;
* One way to look at it is how would you draw the page outline/table-of-contents? Each entry in the table of contents should be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;, and if it&#039;s not in the table of contents and doesn&#039;t have an &amp;amp;lt;h1&amp;gt;, it should probably not be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;.&lt;br /&gt;
* You can still use &amp;amp;lt;div&amp;gt;. It&#039;s the right element if you need a styling hook because CSS can&#039;t give you enough to do what you want.&lt;br /&gt;
* Generally, &amp;amp;lt;section&amp;gt;s should start with an &amp;amp;lt;h1&amp;gt; and the section title. It&#039;s not a hard-and-fast rule, but if you find yourself in a situation where an &amp;amp;lt;h1&amp;gt; would be inappropriate, you probably want &amp;amp;lt;div&amp;gt; rather than &amp;amp;lt;section&amp;gt;.&lt;br /&gt;
* Sections can contain Articles, and vice versa. e.g. you can have a section that is news, a section that is editorials, a section that is sports, each with many articles, and each of those can have subsections, and each section can have comments, which are marked up using &amp;amp;lt;article&amp;gt;, and each comment could be big enough that it has separate &amp;amp;lt;section&amp;gt;s, and so on.&lt;br /&gt;
&lt;br /&gt;
== Other specifications ==&lt;br /&gt;
&lt;br /&gt;
=== What ever happened to...? ===&lt;br /&gt;
&lt;br /&gt;
The Web Forms 2.0 specification was folded into what is now the HTML specification.&lt;br /&gt;
&lt;br /&gt;
The Web Controls 1.0 specification was overtaken by events and has been abandoned. Its problem space is mostly handled by ARIA and Web Components now.&lt;br /&gt;
&lt;br /&gt;
The DOM Parsing specification was abandoned by the WHATWG because the W3C was doing a better job of maintaining that specification. We do not want to cause confusion in the market place, so when another organisation writes a specification that covers the same technology as one of ours, we only continue to publish it if our version is technically superior.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== +1 ===&lt;br /&gt;
&lt;br /&gt;
Please note that content-free agreement (such as +1s) have no effect on &lt;br /&gt;
the WHATWG list and are therefore discouraged. Editors of specs discussed &lt;br /&gt;
in the WHATWG only consider the quality of the arguments presented, and &lt;br /&gt;
not the volume of agreement.&lt;br /&gt;
&lt;br /&gt;
You should therefore only post to the list if you have a substantive new point&lt;br /&gt;
to make, for example if you have seen a flaw in an argument presented so far,&lt;br /&gt;
or have a new idea to contribute, or have some information that has not yet&lt;br /&gt;
been brought to the table.&lt;br /&gt;
&lt;br /&gt;
=== Making Outlook quote email messages properly ===&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please reply inline or make the reply self-contained, and trim extraneous quotes from previous emails in your replies.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your email makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your email backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post emails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write email.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write email?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10155</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10155"/>
		<updated>2017-03-13T09:18:39Z</updated>

		<summary type="html">&lt;p&gt;Annevk: add spelling and pronunciation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== How do you spell and pronounce WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
It is spelled WHATWG, all uppercase. It has various pronunciations: what-wee-gee, what-wig, what-double-you-gee.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is Web standards, specifically:&lt;br /&gt;
&lt;br /&gt;
* [https://html.spec.whatwg.org/ HTML], which also includes Web Workers, Web Storage, the Web Sockets API, Server-Sent Events, Microdata, and the 2D Canvas.&lt;br /&gt;
* [https://fetch.spec.whatwg.org/ Fetch], including the &amp;lt;code&amp;gt;fetch()&amp;lt;/code&amp;gt; API&lt;br /&gt;
* [https://dom.spec.whatwg.org/ DOM], including DOM Events, DOM range, and mutation observers&lt;br /&gt;
* [https://url.spec.whatwg.org/ URLs], including an API for URLs&lt;br /&gt;
&lt;br /&gt;
...and [https://whatwg.org/specs a number of other specs].&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=hneN6aW-d9w This video from Domenic Denicola] is a good introduction to working with standards bodies.&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily [https://github.com/whatwg participate on GitHub] or subscribe to the [https://whatwg.org/mailing-list WHATWG mailing lists]. There are no meetings, since meetings prevent people with limited time or money from participating.&lt;br /&gt;
&lt;br /&gt;
=== Is there a Code of Conduct? ===&lt;br /&gt;
&lt;br /&gt;
Yes, see [[Code of Conduct]]. Please read it and respect it.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People [https://github.com/whatwg collaborate on GitHub] or send email to [https://whatwg.org/mailing-list#specs the mailing list].&lt;br /&gt;
&lt;br /&gt;
Each standard has one or more editors, who are responsible for dealing with feedback for that document. Those editors read all the feedback, and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc.) make language design decisions intended to address everyone&#039;s needs as well as possible while keeping the languages and APIs consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the relevant editor to change the spec any more (e.g., because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
For new features, or significant changes to the processing models, the relevant editor will typically describe the intended changes in the relevant bug or mailing list thread to give people a chance to point out problems with it before the spec is updated. Implementors, especially, are urged to indicate on such threads whether they approve of the suggested changes or new feature, so that we can avoid the spec containing material which implementors are later found to disagree with.&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach — there&#039;s no guarantee that everyone will be happy! There is also no voting. There is a small oversight committee (known historically as the &amp;quot;WHATWG members&amp;quot;, from the name that the original [https://whatwg.org/charter charter] used, though that terminology is misleading) who have the authority to override or replace editors if they start making bad decisions, but so far that has never happened in over ten years. This committee has a private mailing list, but it receives very few messages, usually going years with no emails at all. Discussions on that list are summarized and described on the public list, to make sure everyone is kept up to date.&lt;br /&gt;
&lt;br /&gt;
=== What happens with WHATWG mailing list/GitHub issue discussions? ===&lt;br /&gt;
&lt;br /&gt;
On the WHATWG list and in WHATWG issues on GitHub, the burden is on the spec editors to evaluate the various positions that have been put forward in a discussion, and figure out which one is strongest (or find another position that strikes a better balance between all of them).&lt;br /&gt;
&lt;br /&gt;
The purpose of debate at the WHATWG therefore isn&#039;t to convince everyone; it is to put forward the arguments that exist, so that the&lt;br /&gt;
relevant editor can make a well-informed decision. As a corollary: If some points are made, rebutted, and not further defended, then maybe the person making the arguments is hoping that the relevant editor will consider the rebuttals weak, or thinks that the argument they have presented is strong despite the rebuttals. If you find someone is not making good arguments, or is ignoring your arguments, your best bet is to stop responding. Repeating previously-stated arguments doesn&#039;t help, since the editors will see all the arguments when they look at the thread. Similarly, as soon as threads start being meta-threads about people&#039;s argumentation behaviour, we stop making any kind of&lt;br /&gt;
useful progress, since that isn&#039;t input that can help the decision-making process later.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
File an issue on the [https://whatwg.org/specs/ relevant standard] as indicated at the top of that standard. All feedback is supposed to be addressed in due course. You are also welcome to take a stab at addressing the problem yourself through a GitHub pull request.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g., because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editors know&#039;&#039;&#039; by either emailing them, or contacting them on [[IRC]]. Requests for priority feedback handling are handled confidentially if desired so other implementers won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_removing_bad_idesa_from_the_spec.3F}}Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* Occasionally, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward. If it&#039;s been a few years and there&#039;s no implementation, and no vendor is showing any interest in eventually implementing that section; or if it&#039;s a section that browsers previously implemented but where the momentum shows that browsers are actually removing support, then it is highly likely that the request to remove the section will be honoured. (Sometimes, a warning is first placed in the spec, as with [https://html.spec.whatwg.org/multipage/webappapis.html#dialogs-implemented-using-separate-documents showModalDialog()].)&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential or fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_adding_new_features_to_the_spec.3F}}Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
&lt;br /&gt;
# Forget about the particular solution you have in mind! Solution time is later!&lt;br /&gt;
# Write down a description of the underlying problem you&#039;re trying to solve. What are the use cases? A use case is an actual user wanting to do something. Then list requirements for each use case. For a good example of how to do this, see [http://lists.w3.org/Archives/Public/public-webapps/2012JulSep/0835.html this email].&lt;br /&gt;
# Get more people involved. Open a new issue in [https://github.com/whatwg/html/issues whatwg/html on GitHub] that describes the use cases and their requirements. Ask fellow Web developers about their opinions (but remind them of step 1 above). Adjust the list of use cases and requirements as appropriate. Say which use cases are important and which are just nice to have.&lt;br /&gt;
# Optionally, your work is done at this point. If you have done a good job of the above steps and convinced other people that your use case is an important one to solve, they can do the remaining steps. (On the flip side, if nobody else cares about the use case, chances are solutions for it will not succeed despite being awesome.)&lt;br /&gt;
# Research existing solutions. Come up with new solutions. Try to keep the solutions as simple as possible, maybe only addressing the important use cases and leaving the nice to have use cases for later (when there&#039;s implementation experience). Send this list of solutions, old and new, as a comment on the feature&#039;s issue. Ask browser vendors for feedback. Maybe some particular solutions don&#039;t fit with the browser&#039;s architecture, optimizations, etc., and just are not going to be implemented no matter how much you like them. Strike those solutions and don&#039;t grieve about the loss!&lt;br /&gt;
# Evaluate how well each of the remaining solutions address each use case and how well they meet the requirements. This step should show which solution is the technically best fit (might turn out to be someone else&#039;s solution).&lt;br /&gt;
# Ask the spec&#039;s editor to put that solution in the spec, or create a pull request on GitHub yourself. Possibly your text won&#039;t be taken verbatim but will be written in a style that is more suitable for implementors or better hooks in to the rest of the spec, etc.&lt;br /&gt;
# Ask browser vendors to implement the newly specified solution, even if it&#039;s just an experimental implementation. This implementation experience usually means that new problems are found with the solution that need to be addressed, or that a different solution is actually better.&lt;br /&gt;
# Write a test suite for the feature to see if the implementations match the spec. This usually highlights bugs in the implementations and also bugs in the spec.&lt;br /&gt;
# Participate in subsequent design discussions. When there are two or more mature implementations, it may be time to extend the feature to address the nice to have use cases (but this whole process should be repeated even for such extensions).&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which can even start before implementations start being written to the spec. Cross-browser tests for HTML are maintained in [https://github.com/w3c/web-platform-tests/tree/master/html w3c/web-platform-tests/html on GitHub].&lt;br /&gt;
&lt;br /&gt;
=== Should I send new proposed text when I have a suggestion? ===&lt;br /&gt;
&lt;br /&gt;
Please do not suggest new text, instead, say what is wrong with the current text. Just proposing new text makes it impossible for the editor to determine if the problem is endemic (requiring more changes than you realise), or whether what the editor thinks of as mistakes in the new proposed text are intentional or not (and should be fixed or not), or whether stylistic differences are intentional or not, etc.&lt;br /&gt;
&lt;br /&gt;
=== What does &amp;quot;Living Standard&amp;quot; mean? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG specifications are described as Living Standards. This means that they are standards that are continuously updated as they receive feedback, either from Web designers, browser vendors, tool vendors, or indeed any other interested party. It also means that new features get added to them over time, at a rate intended to keep the specifications a little ahead of the implementations but not so far ahead that the implementations give up.&lt;br /&gt;
&lt;br /&gt;
Despite the continuous maintenance, or maybe we should say &#039;&#039;as part&#039;&#039; of the continuing maintenance, a significant effort is placed on getting the specifications and the implementations to converge — the parts of the specification that are mature and stable are not changed willy nilly. Maintenance means that the days where the specifications are brought down from the mountain and remain forever locked, even if it turns out that all the browsers do something else, or even if it turns out that the specification left some detail out and the browsers all disagree on how to implement it, are gone. Instead, we now make sure to update the specifications to be detailed enough that all the implementations (not just browsers, of course) can do the same thing. Instead of ignoring what the browsers do, we fix the spec to match what the browsers do. Instead of leaving the specification ambiguous, we fix the the specification to define how things work.&lt;br /&gt;
&lt;br /&gt;
=== Does that mean the specifications can change at any time? ===&lt;br /&gt;
&lt;br /&gt;
The specifications do not change arbitrarily: we are extremely careful! As parts of a specification mature, and implementations ship, the spec cannot be changed in backwards-incompatible ways (because the implementors would never agree to break compatibility unless for security reasons). The specifications are never complete, since the Web is continuously evolving. The last time HTML was described as &amp;quot;complete&amp;quot; was after HTML4, when development stopped for several years, leading to stagnation. (If the Web is replaced by something better and dies, the HTML spec will die with it.)&lt;br /&gt;
&lt;br /&gt;
For references to stable copies of the specifications, some WHATWG specifications follows a process by which each change to the specification (embodied in a commit) triggers the publication of a frozen snapshot of the said specification.&lt;br /&gt;
&lt;br /&gt;
These snapshots are published as historical references. The WHATWG intends to keep these frozen snapshots available at their published URL permanently.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s the patent story for WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG operates as a W3C Community Group and thus uses the W3C Community Group patent policies.&lt;br /&gt;
So far we have published one FSA with [http://www.w3.org/community/whatwg/spec/82/commitments patent commitments] from Google, Mozilla, and others covering the URL standard.&lt;br /&gt;
[https://blog.whatwg.org/make-patent-commitments You can make patent commitments too!]&lt;br /&gt;
Some of our specifications have also been forked and republished by the W3C with patent commitments from certain companies.&lt;br /&gt;
&lt;br /&gt;
=== What is the process for translating WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
Many WHATWG standards have been translated into other languages by the WHATWG community. This is great, and highly encouraged!&lt;br /&gt;
&lt;br /&gt;
In general, if you translate a WHATWG Standard, please communicate with the maintainers of the standard (e.g. via a GitHub issue) letting them know about your work. In general this will lead to adding a link to your translation to the top of the original specification, to allow interested readers to view it. You can see examples of this in many WHATWG standards, e.g. https://streams.spec.whatwg.org/.&lt;br /&gt;
&lt;br /&gt;
Such translations are not normative (i.e., implementations should be sure to consult the original). Due to the nature of living standards, which can change often, it&#039;s possible for translations to become out of date compared to the original standard. If the translation shows signs of no longer being maintained, or has other quality problems, community members are encouraged to provide feedback to the maintainers of the standard, so that any links to the translation can be removed in order to avoid confusing readers.&lt;br /&gt;
&lt;br /&gt;
Note that WHATWG specifications are always licensed under liberal licenses that allow the creation of derivative works like translations.&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML? === &lt;br /&gt;
&lt;br /&gt;
[https://html.spec.whatwg.org/multipage/ HTML] is one of the standards being worked on by the WHATWG community. It is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML and XML (XHTML) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before, yet are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? ===&lt;br /&gt;
&lt;br /&gt;
Going forward, the WHATWG is just working on &amp;quot;HTML&amp;quot;, without worrying about version numbers. When people talk about HTML5 in the context of the WHATWG, they usually mean just &amp;quot;the latest work on HTML&amp;quot;, not necessarily a specific version. For more details, see the section called [https://html.spec.whatwg.org/multipage/introduction.html#is-this-html5? &amp;quot;Is this HTML5?&amp;quot;] in the specification.&lt;br /&gt;
&lt;br /&gt;
=== How do I validate my pages? ===&lt;br /&gt;
&lt;br /&gt;
Use a [https://validator.whatwg.org/ validator].&lt;br /&gt;
&lt;br /&gt;
=== What parts of the specification are stable? ===&lt;br /&gt;
&lt;br /&gt;
The whole specification is more or less stable except where there are big messages pointing out some unresolved issue. (These are pretty rare.) There are some parts of the spec that describe new technology that has not yet been implemented, but at this point these additions are only added after the design itself is pretty stable.&lt;br /&gt;
&lt;br /&gt;
(In practice, implementations all follow the latest specification drafts anyway, not so-called &amp;quot;finished&amp;quot; snapshots. The problem with following a snapshot is that you end up following something that is &#039;&#039;known to be wrong&#039;&#039;. That&#039;s obviously not the way to get interoperability! This has in fact been a real problem at the W3C, where mistakes are found and fixed in the editors&#039; drafts of specifications, but implementors who aren&#039;t fully engaged in the process go and implement obsolete snapshots instead, including those bugs, without realising the problems, and resulting in differences between the browsers.)&lt;br /&gt;
&lt;br /&gt;
=== Will future browsers have any idea what older HTML documents mean?  ===&lt;br /&gt;
&lt;br /&gt;
Browsers do not implement HTML+, HTML2, HTML3.2 HTML4, HTML4.01, etc, as separate versions. They all just have a single implementation that covers all these versions at once. That is what the WHATWG HTML specification defines: how to write a browser (or other implementation) that handles &#039;&#039;all previous versions of HTML&#039;&#039;, as well as all the latest features.&lt;br /&gt;
&lt;br /&gt;
One of the main goals of the HTML specification and the WHATWG effort as a whole is to make it possible for archeologists hundreds of years from now to write a browser and view HTML content, regardless of when it was written. Making sure that we handle all documents is one of our most important goals. Not having versions does not preclude this; indeed it makes it significantly easier.&lt;br /&gt;
&lt;br /&gt;
=== How are developers to determine when certain parts of their pages will become invalid? ===&lt;br /&gt;
&lt;br /&gt;
It shouldn&#039;t matter if and when old pages become invalid.&lt;br /&gt;
&lt;br /&gt;
Validity (more often referred to as document conformance in the WHATWG) is a quality assurance tool to help authors avoid mistakes. We don&#039;t make things non-conforming (invalid) for the sake of it, we use conformance as a guide for developers to help them avoid bad practices or mistakes (like typos). So there&#039;s not really any need to worry about whether old pages are conforming or not, it&#039;s only helpful when you&#039;re writing a new page, and it&#039;s always most helpful to have the latest advice. It wouldn&#039;t be useful to check for compliance against last week&#039;s rules, for instance. After all, we fixed mistakes in those rules this week! For more details, see [https://html.spec.whatwg.org/multipage/introduction.html#conformance-requirements-for-authors part of the introduction] of the specification.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec:&lt;br /&gt;
&lt;br /&gt;
* The Twitter feed: [https://twitter.com/htmlstandard @htmlstandard]&lt;br /&gt;
&lt;br /&gt;
* The [https://github.com/whatwg/html/commits/master GitHub commits log]&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [https://github.com/whatwg/html/ Git repository]. You may use any Git client to check out the latest version and use your client&amp;amp;rsquo;s diff tools to compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* At a broader level, Anne and Simon once wrote a document that gave a high-level overview of changes to HTML over the last decade or so: https://html-differences.whatwg.org/&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the HTML spec? ===&lt;br /&gt;
&lt;br /&gt;
The HTML Standard is available in two forms: [https://html.spec.whatwg.org/ single-page] (&#039;&#039;very large&#039;&#039;) and &#039;&#039;&#039;[https://html.spec.whatwg.org/multipage/ multi-page]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The WHATWG [https://whatwg.org/specs/ also works on other standards], such as the DOM, URL, and XMLHttpRequest standards.&lt;br /&gt;
&lt;br /&gt;
The W3C publishes some forked versions of these specifications. We have requested that they stop publishing these but they have refused. They copy most of our fixes into their forks, but their forks are usually weeks to months behind. They also make intentional changes, and sometimes even unintentional changes, to their versions. We highly recommend not paying any attention to the W3C forks of WHATWG standards.&lt;br /&gt;
&lt;br /&gt;
=== Are there versions of the HTML specification aimed specifically at authors/implementors? ===&lt;br /&gt;
&lt;br /&gt;
Yes! [https://developers.whatwg.org/ developers.whatwg.org]&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites to help you work out what you can use:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.info/&lt;br /&gt;
* http://caniuse.com/&lt;br /&gt;
* http://html5doctor.com/&lt;br /&gt;
* https://developer.mozilla.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, then remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG is now using a Living Standard development model, so this question is no longer really pertinent. See above, under &amp;quot;[[FAQ#What_is_HTML.3F|What is HTML5?]]&amp;quot;. The real question is, when can you use new features? For an answer to &#039;that&#039; question, see &amp;quot;[[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s this I hear about 2022? ===&lt;br /&gt;
&lt;br /&gt;
Before the WHATWG transitioned to an unversioned model for HTML, when we were still working on HTML5 and still thought in terms of snapshot drafts reaching milestones as a whole rather than on a per-section basis, the editor estimated that we&#039;d reach Last Call in October 2009, Candidate Recommendation in the year 2012, and Recommendation in the year 2022 or later. This would be approximately 18-20 years of development, since beginning in mid-2004, which is on par with the amount of work that other specs of similar size and similar maturity receive to get to the same level of quality. For instance, it&#039;s in line with the timeline of CSS2/2.1. Compared to HTML4&#039;s timetable it may seem long, but consider: work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hadn&#039;t reached the level that we want to reach with HTML now. There was no real test suite, there are many parts of the HTML4 spec that are lacking real implementations, there are big parts of HTML4 that aren&#039;t interoperable, and the HTML4 spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than the WHATWG is aiming for. We now look for two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve moved to a more incremental model without macro-level milestones, the 2022 date is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft started implementing new parts of the contemporary HTML standard in IE8 and has been adding more to IE since.&lt;br /&gt;
&lt;br /&gt;
HTML is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Rationale]] — a page that documents some reasons behind decisions in the spec, originally written and maintained by Variable. If anyone wants to help him out, try to grab someone on [[IRC]] (e.g. Hixie), we&#039;re always looking for more contributors and this is a good place to start.&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]] or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see &#039;&#039;HTML feature proposals&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
== HTML syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What is the DOCTYPE for modern HTML documents? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary. However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
Fundamentally, this is an XML issue, and is not specific to XHTML.&lt;br /&gt;
&lt;br /&gt;
=== How are documents from HTML4 and earlier versions parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by the HTML spec. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax as now defined therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed as described by the new HTML specification.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [https://validator.whatwg.org/ HTML validator] that follows the latest specification.&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in the HTML specification. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike the situation as of XHTML1, the HTML specification says that XHTML must no longer be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 back to HTML.&lt;br /&gt;
&lt;br /&gt;
The new HTML specification also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
Yes. Find guidance in [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|HTML vs. XHTML]] and [http://dev.w3.org/html5/html-xhtml-author-guide/html-xhtml-authoring-guide.html Polyglot Markup: HTML-Compatible XHTML Documents].&lt;br /&gt;
&lt;br /&gt;
A word of warning though. You have to be &#039;&#039;&#039;really&#039;&#039;&#039; careful for this to work, and it&#039;s almost certainly not worth it. You&#039;d be better off just using an HTML-to-XML parser. That way you can just use HTML normally while still using XML pipeline tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to the latest HTML specification, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does this new HTML spec legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;amp;lt;a&amp;amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML. The main reason this isn&#039;t in HTML is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;amp;lt;a&amp;amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;figcaption&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;figcaption&amp;gt;Apples&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can use [https://html.spec.whatwg.org/multipage/scripting.html#custom-elements custom elements].&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This was thought to be a styling problem and should be fixed in CSS. There was no reason to add a grouping element to HTML, as the semantics are already unambiguous without an additional element.&lt;br /&gt;
&lt;br /&gt;
In October 2016 it became clear that CSS would not fix this in the foreseeable future, HTML was changed to allow &amp;amp;lt;div&amp;gt; as a grouping element in &amp;amp;lt;dl&amp;gt;. See https://github.com/whatwg/html/issues/1937 and https://github.com/whatwg/html/pull/1945&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers). While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
=== Where&#039;s the harm in adding— ===&lt;br /&gt;
&lt;br /&gt;
Every feature we add to the Web platform has a cost:&lt;br /&gt;
&lt;br /&gt;
* Implementation: someone has to write code for it in each browser&lt;br /&gt;
* Testing: someone has to write the tests to check the features is working&lt;br /&gt;
* QA: someone has to regularly run the tests to make sure the feature doesn&#039;t regress&lt;br /&gt;
* Code maintenance: when browser vendors refactor code, they have to refactor more code if there&#039;s more features&lt;br /&gt;
* Tutorials: people who write tutorials have to include the feature, or handle feedback asking for them to do so&lt;br /&gt;
* Cognitive load: authors learning the platform have more documentation to wade through even if they don&#039;t care about the feature&lt;br /&gt;
* [http://www.nngroup.com/articles/stagnating-expertise/ Extra features discourage exploration]: Having more features means less overall feature usage.&lt;br /&gt;
* Page maintenance: authors have to know how to maintain the feature if other people have used it in pages they now maintain&lt;br /&gt;
* Spec writing: someone has to write the spec for the feature and ensure it&#039;s maintained&lt;br /&gt;
* Bug fixing: when bugs are found in the spec or implementations, someone has to figure out a fix, implement it, test it, ship it, tests have to be fixed, documentation has to be updated, etc&lt;br /&gt;
* Code size: each feature increases the size of browsers (both on-disk binaries and in-memory resident size)&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
No. The two groups have different goals. The WHATWG spec is intended to describe what browsers should aim for, introducing new features and describing reality in as much, and as accurate, detail as possible. The W3C spec is intended to follow the W3C process to REC.&lt;br /&gt;
&lt;br /&gt;
On the WHATWG side, the editors read the feedback sent to both groups and take all input into account — and indeed there are far more places where input on HTML is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc). (In particular, the editors do not look at the source of technical arguments when attempting to determine what path to take on an issue or other.)&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The two groups have different specs, so each has authority over its spec. The specs can and have diverged on some topics; unfortunately, these differences are not documented anywhere.&lt;br /&gt;
&lt;br /&gt;
=== Isn&#039;t it bad that the specs have forked? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The WHATWG originally committed to remaining consistent with the W3C spec unless the W3C working group showed a lapse in judgement. When that (in Hixie&#039;s opinion) occurred, there was little choice left but to let the specs diverge.&lt;br /&gt;
&lt;br /&gt;
The plan to get the specs to converge again, such as it is, is to just do a better job with the WHATWG spec, such that it becomes the logical and obvious choice for anyone wanting to figure out which spec they should use.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [https://platform.html5.org/history/ A feature history of the modern Web Platform] (2003 onward) ([https://github.com/whatwg/platform.html5.org/blob/master/history/index.html on GitHub])&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki] (1997 to 2008)&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/introduction.html#history-2 The history section in the HTML standard itself]&lt;br /&gt;
&lt;br /&gt;
== Using HTML ==&lt;br /&gt;
&lt;br /&gt;
=== Do you have any hints on how to use &amp;amp;lt;section&amp;gt; and &amp;amp;lt;article&amp;gt; and so on? ===&lt;br /&gt;
&lt;br /&gt;
Some hopefully helpful hints:&lt;br /&gt;
&lt;br /&gt;
* One way to look at it is how would you draw the page outline/table-of-contents? Each entry in the table of contents should be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;, and if it&#039;s not in the table of contents and doesn&#039;t have an &amp;amp;lt;h1&amp;gt;, it should probably not be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;.&lt;br /&gt;
* You can still use &amp;amp;lt;div&amp;gt;. It&#039;s the right element if you need a styling hook because CSS can&#039;t give you enough to do what you want.&lt;br /&gt;
* Generally, &amp;amp;lt;section&amp;gt;s should start with an &amp;amp;lt;h1&amp;gt; and the section title. It&#039;s not a hard-and-fast rule, but if you find yourself in a situation where an &amp;amp;lt;h1&amp;gt; would be inappropriate, you probably want &amp;amp;lt;div&amp;gt; rather than &amp;amp;lt;section&amp;gt;.&lt;br /&gt;
* Sections can contain Articles, and vice versa. e.g. you can have a section that is news, a section that is editorials, a section that is sports, each with many articles, and each of those can have subsections, and each section can have comments, which are marked up using &amp;amp;lt;article&amp;gt;, and each comment could be big enough that it has separate &amp;amp;lt;section&amp;gt;s, and so on.&lt;br /&gt;
&lt;br /&gt;
== Other specifications ==&lt;br /&gt;
&lt;br /&gt;
=== What ever happened to...? ===&lt;br /&gt;
&lt;br /&gt;
The Web Forms 2.0 specification was folded into what is now the HTML specification.&lt;br /&gt;
&lt;br /&gt;
The Web Controls 1.0 specification was overtaken by events and has been abandoned. Its problem space is mostly handled by ARIA and Web Components now.&lt;br /&gt;
&lt;br /&gt;
The DOM Parsing specification was abandoned by the WHATWG because the W3C was doing a better job of maintaining that specification. We do not want to cause confusion in the market place, so when another organisation writes a specification that covers the same technology as one of ours, we only continue to publish it if our version is technically superior.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== +1 ===&lt;br /&gt;
&lt;br /&gt;
Please note that content-free agreement (such as +1s) have no effect on &lt;br /&gt;
the WHATWG list and are therefore discouraged. Editors of specs discussed &lt;br /&gt;
in the WHATWG only consider the quality of the arguments presented, and &lt;br /&gt;
not the volume of agreement.&lt;br /&gt;
&lt;br /&gt;
You should therefore only post to the list if you have a substantive new point&lt;br /&gt;
to make, for example if you have seen a flaw in an argument presented so far,&lt;br /&gt;
or have a new idea to contribute, or have some information that has not yet&lt;br /&gt;
been brought to the table.&lt;br /&gt;
&lt;br /&gt;
=== Making Outlook quote email messages properly ===&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please reply inline or make the reply self-contained, and trim extraneous quotes from previous emails in your replies.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your email makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your email backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post emails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write email.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write email?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10153</id>
		<title>IRC</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10153"/>
		<updated>2017-02-12T15:44:37Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Freenode IRC network has a channel called [irc://irc.freenode.net/whatwg #whatwg] where some of the more active WHATWG community members hang out. Feel free to join us!&lt;br /&gt;
&lt;br /&gt;
Note that if you go to IRC to ask a question, it might take a while to get a reply. It can pay off to stick around for a couple of hours or more.&lt;br /&gt;
&lt;br /&gt;
If you want to run a bot, let us know. If they are useful, e.g. providing logging facilities, then they are more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
&lt;br /&gt;
Logs for the #whatwg channel can be found here:&lt;br /&gt;
&lt;br /&gt;
* http://logbot.glob.com.au/?c=freenode%23whatwg&amp;amp;s=today&lt;br /&gt;
* http://krijnhoetmer.nl/irc-logs/whatwg/ (not updated for the last couple of months)&lt;br /&gt;
&lt;br /&gt;
== Getting Started with IRC ==&lt;br /&gt;
&lt;br /&gt;
The simplest way to get started with IRC, if you are not familiar, is by signing up for a free [https://www.irccloud.com/ IRCCloud] account. Once you&#039;ve done that, you should be logged in to the Freenode server by default. All you&#039;ll have to do is join the #whatwg channel. If you tell your browser to use IRCCloud for irc:// links, then just [irc://irc.freenode.net/whatwg clicking this link] should also take you there.&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
A list of regulars, sorted by nick, and their normal timezones (winter/summer).&lt;br /&gt;
&lt;br /&gt;
* {{irc user|Adactio|adactio|+0000/+0100}}&lt;br /&gt;
* {{irc user|Annevk|annevk|.../...}}&lt;br /&gt;
* {{irc user|Dglazkov|dglazkov|.../...}}&lt;br /&gt;
* {{irc user|Domenic|Domenic|-0500/-0400}}&lt;br /&gt;
* {{irc user|GPHemsley|GPHemsley|-0500/-0400}}&lt;br /&gt;
* {{irc user|Hixie|Hixie|-0800/-0700}}&lt;br /&gt;
* {{irc user|EdwardOConnor|hober|-0800/-0700}}&lt;br /&gt;
* {{irc user|Jgraham|jgraham|.../...}}&lt;br /&gt;
* {{irc user|kennyluck|kennyluck|+0800/+0800}}&lt;br /&gt;
* {{irc user|Mathias|matjas|.../...}}&lt;br /&gt;
* {{irc user|Ms2ger|Ms2ger|.../...}}&lt;br /&gt;
* {{irc user|Mjs|othermaciej|-0800/-0700}}&lt;br /&gt;
* {{irc user|ShaneHudson|ShaneHudson|+0000/+0100}}&lt;br /&gt;
* {{irc user|Xanthir|tabatkins|-0800/-0700}}&lt;br /&gt;
* {{irc user|Tantek|tantek|-0800/-0700}}&lt;br /&gt;
* {{irc user|Yuhong|yuhong|-0800/-0700}}&lt;br /&gt;
* {{irc user|Wilto|Wilto|.../...}}&lt;br /&gt;
* {{irc user|Zcorpan|zcorpan|.../...}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10146</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10146"/>
		<updated>2017-01-15T12:12:04Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
* Spaces around — (em dash)&lt;br /&gt;
&lt;br /&gt;
== Tone ==&lt;br /&gt;
&lt;br /&gt;
* Avoid using &amp;quot;simply&amp;quot; or suggesting that something is simple&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10145</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10145"/>
		<updated>2017-01-09T08:12:46Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Grammar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;br /&gt;
* Avoid &amp;quot;one of&amp;quot; unless it&#039;s followed by a bulleted list. You can normally leave it out and just use &amp;quot;or&amp;quot;. If you cannot leave it out, that might be a good indication you want to use a bulleted list for clarity.&lt;br /&gt;
* Spaces around — (em dash)&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10115</id>
		<title>Fork tracking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10115"/>
		<updated>2016-11-30T11:52:43Z</updated>

		<summary type="html">&lt;p&gt;Annevk: streams \o/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page exists to document the status of the outdated forks of various WHATWG specifications, and any progress toward clarifying their out-of-dateness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confusion Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* Fullscreen: https://fullscreen.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/fullscreen/&lt;br /&gt;
** Status: discontinued as a NOTE. ED URL (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html) redirects&lt;br /&gt;
* Streams: https://streams.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/streams-api/&lt;br /&gt;
** Status: discontinued as NOTE. ED URL is WHATWG URL, former ED URL (http://w3c.github.io/streams-api/) redirects&lt;br /&gt;
* XMLHttpRequest: https://xhr.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest2/&lt;br /&gt;
** Forked to https://dvcs.w3.org/hg/xhr/raw-file/default/xhr-1/Overview.html&lt;br /&gt;
** Status: both /TR/ forks discontinued as a NOTE, although XHR2 directs visitors to both XHR1 and the XHR Standard for some reason. Editor&#039;s draft redirects.&lt;br /&gt;
&lt;br /&gt;
== Confusion Somewhat Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* URL: https://url.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/url/ plus various aliases and older versions (e.g. https://www.w3.org/TR/url-1/)&lt;br /&gt;
** Status: has a reasonable red disclaimer, but still exists.&lt;br /&gt;
** https://w3ctag.github.io/url/ has been fully discontinued, at least.&lt;br /&gt;
&lt;br /&gt;
== Confusion Persists ==&lt;br /&gt;
&lt;br /&gt;
* Fetch: https://fetch.spec.whatwg.org/&lt;br /&gt;
** Obsolete subsections published as http://www.w3.org/TR/cors/&lt;br /&gt;
** Status: still exists as an outdated specification with no warning, causing confusion.&lt;br /&gt;
* DOM: https://dom.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/dom/&lt;br /&gt;
** Status: still exists as an outdated snapshot (and modified in undocumented ways) with no warning, causing confusion. And has a weird rename (&amp;quot;DOM4&amp;quot;) too.&lt;br /&gt;
* Encoding: https://encoding.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/encoding/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion&lt;br /&gt;
* Notifications: https://notifications.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/notifications/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. The spec model has diverged significantly in the meantime, and the outdated version is actively wrong, not just incomplete.&lt;br /&gt;
* HTML: https://html.spec.whatwg.org/multipage/&lt;br /&gt;
** Forked to http://www.w3.org/TR/html5/ as an outdated fork of a subset frozen in 2013.&lt;br /&gt;
** Forked to http://www.w3.org/TR/html51/ as an outdated fork of a subset frozen in 2015.&lt;br /&gt;
** Forked to https://w3c.github.io/html/ as an outdated fork of a subset frozen in early 2016 (see [https://annevankesteren.nl/2016/01/film-at-11 blog post]).&lt;br /&gt;
** In general all of these attempt to copy-and-paste HTML and then apply forked patches on top, but the scripts are wonky, leading to lots of errors.&lt;br /&gt;
** Subsets of HTML split out into other outdated forks, none with appropriate warnings:&lt;br /&gt;
*** http://www.w3.org/TR/webstorage/&lt;br /&gt;
*** http://www.w3.org/TR/workers/&lt;br /&gt;
*** http://www.w3.org/TR/webmessaging/ (ED is nice at least https://w3c.github.io/webmessaging/)&lt;br /&gt;
*** http://www.w3.org/TR/websockets/ (ED is nice at least https://w3c.github.io/websockets/)&lt;br /&gt;
*** http://www.w3.org/TR/eventsource/ (ED is nice at least https://w3c.github.io/eventsource/)&lt;br /&gt;
*** http://www.w3.org/TR/2dcontext/&lt;br /&gt;
*** https://dev.w3.org/2006/canvas-api/canvas-2d-api.html&lt;br /&gt;
*** https://www.w3.org/TR/2dcontext2/&lt;br /&gt;
*** https://www.w3.org/TR/microdata/ (published as NOTE, but still contains a bunch of outdated content)&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10112</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10112"/>
		<updated>2016-11-29T08:09:53Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;br /&gt;
* Use the [https://en.wikipedia.org/wiki/Serial_comma Oxford Comma].&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10110</id>
		<title>Fork tracking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10110"/>
		<updated>2016-11-23T12:22:14Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Confusion Persists */ oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page exists to document the status of the outdated forks of various WHATWG specifications, and any progress toward clarifying their out-of-dateness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confusion Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* Fullscreen: https://fullscreen.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/fullscreen/&lt;br /&gt;
** Status: discontinued as a NOTE. ED URL (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html) redirects&lt;br /&gt;
&lt;br /&gt;
== Confusion Somewhat Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* URL: https://url.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/url/ plus various aliases and older versions (e.g. https://www.w3.org/TR/url-1/)&lt;br /&gt;
** Status: has a reasonable red disclaimer, but still exists.&lt;br /&gt;
** https://w3ctag.github.io/url/ has been fully discontinued, at least.&lt;br /&gt;
* Streams: https://streams.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/streams-api/&lt;br /&gt;
** Status: mostly gutted, with a reasonable red disclaimer.&lt;br /&gt;
* XMLHttpRequest: https://xhr.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest2/&lt;br /&gt;
** Forked to https://dvcs.w3.org/hg/xhr/raw-file/default/xhr-1/Overview.html&lt;br /&gt;
** Status: both /TR/ forks discontinued as a NOTE, although XHR2 directs visitors to both XHR1 and the XHR Standard for some reason. Editor&#039;s draft still exists.&lt;br /&gt;
&lt;br /&gt;
== Confusion Persists ==&lt;br /&gt;
&lt;br /&gt;
* Fetch: https://fetch.spec.whatwg.org/&lt;br /&gt;
** Obsolete subsections published as http://www.w3.org/TR/cors/&lt;br /&gt;
** Status: still exists as an outdated specification with no warning, causing confusion.&lt;br /&gt;
* DOM: https://dom.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/dom/&lt;br /&gt;
** Status: still exists as an outdated snapshot (and modified in undocumented ways) with no warning, causing confusion. And has a weird rename (&amp;quot;DOM4&amp;quot;) too.&lt;br /&gt;
* Encoding: https://encoding.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/encoding/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion&lt;br /&gt;
* Notifications: https://notifications.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/notifications/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. The spec model has diverged significantly in the meantime, and the outdated version is actively wrong, not just incomplete.&lt;br /&gt;
* HTML: https://html.spec.whatwg.org/multipage/&lt;br /&gt;
** Forked to http://www.w3.org/TR/html5/ as an outdated fork of a subset frozen in 2013.&lt;br /&gt;
** Forked to http://www.w3.org/TR/html51/ as an outdated fork of a subset frozen in 2015.&lt;br /&gt;
** Forked to https://w3c.github.io/html/ as an outdated fork of a subset frozen in early 2016 (see [https://annevankesteren.nl/2016/01/film-at-11 blog post]).&lt;br /&gt;
** In general all of these attempt to copy-and-paste HTML and then apply forked patches on top, but the scripts are wonky, leading to lots of errors.&lt;br /&gt;
** Subsets of HTML split out into other outdated forks, none with appropriate warnings:&lt;br /&gt;
*** http://www.w3.org/TR/webstorage/&lt;br /&gt;
*** http://www.w3.org/TR/workers/&lt;br /&gt;
*** http://www.w3.org/TR/webmessaging/ (ED is nice at least https://w3c.github.io/webmessaging/)&lt;br /&gt;
*** http://www.w3.org/TR/websockets/ (ED is nice at least https://w3c.github.io/websockets/)&lt;br /&gt;
*** http://www.w3.org/TR/eventsource/ (ED is nice at least https://w3c.github.io/eventsource/)&lt;br /&gt;
*** http://www.w3.org/TR/2dcontext/&lt;br /&gt;
*** https://dev.w3.org/2006/canvas-api/canvas-2d-api.html&lt;br /&gt;
*** https://www.w3.org/TR/2dcontext2/&lt;br /&gt;
*** https://www.w3.org/TR/microdata/ (published as NOTE, but still contains a bunch of outdated content)&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10109</id>
		<title>Fork tracking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10109"/>
		<updated>2016-11-23T12:16:31Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Confusion Persists */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page exists to document the status of the outdated forks of various WHATWG specifications, and any progress toward clarifying their out-of-dateness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confusion Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* Fullscreen: https://fullscreen.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/fullscreen/&lt;br /&gt;
** Status: discontinued as a NOTE. ED URL (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html) redirects&lt;br /&gt;
&lt;br /&gt;
== Confusion Somewhat Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* URL: https://url.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/url/ plus various aliases and older versions (e.g. https://www.w3.org/TR/url-1/)&lt;br /&gt;
** Status: has a reasonable red disclaimer, but still exists.&lt;br /&gt;
** https://w3ctag.github.io/url/ has been fully discontinued, at least.&lt;br /&gt;
* Streams: https://streams.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/streams-api/&lt;br /&gt;
** Status: mostly gutted, with a reasonable red disclaimer.&lt;br /&gt;
* XMLHttpRequest: https://xhr.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest2/&lt;br /&gt;
** Forked to https://dvcs.w3.org/hg/xhr/raw-file/default/xhr-1/Overview.html&lt;br /&gt;
** Status: both /TR/ forks discontinued as a NOTE, although XHR2 directs visitors to both XHR1 and the XHR Standard for some reason. Editor&#039;s draft still exists.&lt;br /&gt;
&lt;br /&gt;
== Confusion Persists ==&lt;br /&gt;
&lt;br /&gt;
* Fetch: https://fetch.spec.whatwg.org/&lt;br /&gt;
** Obsolete subsections published as http://www.w3.org/TR/cors/&lt;br /&gt;
** Status: still exists as an outdated specification with no warning, causing confusion.&lt;br /&gt;
* DOM: https://dom.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/dom/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. And has a weird rename (&amp;quot;DOM4&amp;quot;) too.&lt;br /&gt;
* Encoding: https://encoding.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/encoding/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion&lt;br /&gt;
* Notifications: https://notifications.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/notifications/&lt;br /&gt;
** Status: still exists as an outdated snapshot (and modified in undocumented ways) with no warning, causing confusion. The spec model has diverged significantly in the meantime, and the outdated version is actively wrong, not just incomplete.&lt;br /&gt;
* HTML: https://html.spec.whatwg.org/multipage/&lt;br /&gt;
** Forked to http://www.w3.org/TR/html5/ as an outdated fork of a subset frozen in 2013.&lt;br /&gt;
** Forked to http://www.w3.org/TR/html51/ as an outdated fork of a subset frozen in 2015.&lt;br /&gt;
** Forked to https://w3c.github.io/html/ as an outdated fork of a subset frozen in early 2016 (see [https://annevankesteren.nl/2016/01/film-at-11 blog post]).&lt;br /&gt;
** In general all of these attempt to copy-and-paste HTML and then apply forked patches on top, but the scripts are wonky, leading to lots of errors.&lt;br /&gt;
** Subsets of HTML split out into other outdated forks, none with appropriate warnings:&lt;br /&gt;
*** http://www.w3.org/TR/webstorage/&lt;br /&gt;
*** http://www.w3.org/TR/workers/&lt;br /&gt;
*** http://www.w3.org/TR/webmessaging/ (ED is nice at least https://w3c.github.io/webmessaging/)&lt;br /&gt;
*** http://www.w3.org/TR/websockets/ (ED is nice at least https://w3c.github.io/websockets/)&lt;br /&gt;
*** http://www.w3.org/TR/eventsource/ (ED is nice at least https://w3c.github.io/eventsource/)&lt;br /&gt;
*** http://www.w3.org/TR/2dcontext/&lt;br /&gt;
*** https://dev.w3.org/2006/canvas-api/canvas-2d-api.html&lt;br /&gt;
*** https://www.w3.org/TR/2dcontext2/&lt;br /&gt;
*** https://www.w3.org/TR/microdata/ (published as NOTE, but still contains a bunch of outdated content)&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Style&amp;diff=10105</id>
		<title>Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Style&amp;diff=10105"/>
		<updated>2016-11-07T09:17:55Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Created page with &amp;quot;== Language ==  American English.  == Dictionary ==  * bitrate * colorspace * keepalive (though HTTP Keep-Alive [sic] header) * metadata * referrer (though HTTP Referer [sic]...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Language ==&lt;br /&gt;
&lt;br /&gt;
American English.&lt;br /&gt;
&lt;br /&gt;
== Dictionary ==&lt;br /&gt;
&lt;br /&gt;
* bitrate&lt;br /&gt;
* colorspace&lt;br /&gt;
* keepalive (though HTTP Keep-Alive [sic] header)&lt;br /&gt;
* metadata&lt;br /&gt;
* referrer (though HTTP Referer [sic] header)&lt;br /&gt;
* whitespace (though CSS white-space [sic] property)&lt;br /&gt;
&lt;br /&gt;
== Grammar ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;s for possesives, even when it looks unnatural.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Main_Page&amp;diff=10104</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Main_Page&amp;diff=10104"/>
		<updated>2016-11-07T09:17:50Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Spec Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the WHATWG Wiki!&lt;br /&gt;
&lt;br /&gt;
You can be a part of our community, making proposals for the next version of HTML. This wiki is made available for you for drafting proposals, for writing essays, for keeping track of HTML-related issues, and so forth. &lt;br /&gt;
&lt;br /&gt;
Before you begin, you may wish to read our [[WHATWG Wiki:Contribution Guidelines|contribution guidelines]]. Once you are an autoconfirmed user, you may [[WHATWG Wiki:How to create a user account|create new user accounts]], by request.&lt;br /&gt;
&lt;br /&gt;
==Quick Links==&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
* [[What you can do]] — &#039;&#039;&#039;[[Reviewing|Review our work!]]&lt;br /&gt;
* [[:Category:Implementations|Implementations]]&lt;br /&gt;
* [[Presentations]]&lt;br /&gt;
&lt;br /&gt;
==Web Developers==&lt;br /&gt;
* [[Authoring|Using HTML in your Web site]]&lt;br /&gt;
* [[Presentational elements and attributes]]&lt;br /&gt;
* [[HTML vs. XHTML]]&lt;br /&gt;
&lt;br /&gt;
==Spec Development==&lt;br /&gt;
* [[Best Practices for Implementors]]&lt;br /&gt;
* [[:Category:Spec coordination|Spec coordination]]&lt;br /&gt;
* [[:Category:Proposals|Proposals]]&lt;br /&gt;
* [[:Category:Registries|Registries]]&lt;br /&gt;
* [[New Features Awaiting Implementation Interest]]&lt;br /&gt;
* [[Testsuite]]&lt;br /&gt;
* [[Style]]&lt;br /&gt;
&lt;br /&gt;
==WHATWG Specifications==&lt;br /&gt;
* [http://www.whatwg.org/specs Complete list of specifications actively developed at the WHATWG]&lt;br /&gt;
* [http://whatwg.org/html HTML]&lt;br /&gt;
* [[HTML derivatives]]&lt;br /&gt;
* [[HTML snapshots]]&lt;br /&gt;
* [[Fork tracking]]&lt;br /&gt;
&lt;br /&gt;
==Communicating with the community==&lt;br /&gt;
The WHATWG community has several channels of communication:&lt;br /&gt;
* [[IRC]] and [http://www.whatwg.org/mailing-list mailing lists]&lt;br /&gt;
* [http://forums.whatwg.org/ Forums]&lt;br /&gt;
* [http://blog.whatwg.org/ The WHATWG Blog], including [http://blog.whatwg.org/category/weekly-review WHATWG Weekly]&lt;br /&gt;
* [http://twitter.com/WHATWG @WHATWG] on twitter&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10100</id>
		<title>Fork tracking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10100"/>
		<updated>2016-10-11T16:55:11Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Confusion Persists */ add more canvas documents&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page exists to document the status of the outdated forks of various WHATWG specifications, and any progress toward clarifying their out-of-dateness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confusion Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* Fullscreen: https://fullscreen.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/fullscreen/&lt;br /&gt;
** Status: discontinued as a NOTE. ED URL (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html) redirects&lt;br /&gt;
&lt;br /&gt;
== Confusion Somewhat Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* URL: https://url.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/url/ plus various aliases and older versions (e.g. https://www.w3.org/TR/url-1/)&lt;br /&gt;
** Status: has a reasonable red disclaimer, but still exists.&lt;br /&gt;
** https://w3ctag.github.io/url/ has been fully discontinued, at least.&lt;br /&gt;
* Streams: https://streams.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/streams-api/&lt;br /&gt;
** Status: mostly gutted, with a reasonable red disclaimer.&lt;br /&gt;
* XMLHttpRequest: https://xhr.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest2/&lt;br /&gt;
** Forked to https://dvcs.w3.org/hg/xhr/raw-file/default/xhr-1/Overview.html&lt;br /&gt;
** Status: both /TR/ forks discontinued as a NOTE, although XHR2 directs visitors to both XHR1 and the XHR Standard for some reason. Editor&#039;s draft still exists.&lt;br /&gt;
&lt;br /&gt;
== Confusion Persists ==&lt;br /&gt;
&lt;br /&gt;
* Fetch: https://fetch.spec.whatwg.org/&lt;br /&gt;
** Obsolete subsections published as http://www.w3.org/TR/cors/&lt;br /&gt;
** Status: still exists as an outdated specification with no warning, causing confusion.&lt;br /&gt;
* DOM: https://dom.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/dom/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. And has a weird rename (&amp;quot;DOM4&amp;quot;) too.&lt;br /&gt;
* Encoding: https://encoding.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/encoding/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion&lt;br /&gt;
* Notifications: https://notifications.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/notifications/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. The spec model has diverged significantly in the meantime, and the outdated version is actively wrong, not just incomplete.&lt;br /&gt;
* HTML: https://html.spec.whatwg.org/multipage/&lt;br /&gt;
** Forked to http://www.w3.org/TR/html5/ as an outdated fork of a subset frozen in 2013.&lt;br /&gt;
** Forked to http://www.w3.org/TR/html51/ as an outdated fork of a subset frozen in 2015.&lt;br /&gt;
** Forked to https://w3c.github.io/html/ as an outdated fork of a subset frozen in early 2016 (see [https://annevankesteren.nl/2016/01/film-at-11 blog post]).&lt;br /&gt;
** In general all of these attempt to copy-and-paste HTML and then apply forked patches on top, but the scripts are wonky, leading to lots of errors.&lt;br /&gt;
** Subsets of HTML split out into other outdated forks, none with appropriate warnings:&lt;br /&gt;
*** http://www.w3.org/TR/webstorage/&lt;br /&gt;
*** http://www.w3.org/TR/workers/&lt;br /&gt;
*** http://www.w3.org/TR/webmessaging/ (ED is nice at least https://w3c.github.io/webmessaging/)&lt;br /&gt;
*** http://www.w3.org/TR/websockets/ (ED is nice at least https://w3c.github.io/websockets/)&lt;br /&gt;
*** http://www.w3.org/TR/eventsource/ (ED is nice at least https://w3c.github.io/eventsource/)&lt;br /&gt;
*** http://www.w3.org/TR/2dcontext/&lt;br /&gt;
*** https://dev.w3.org/2006/canvas-api/canvas-2d-api.html&lt;br /&gt;
*** https://www.w3.org/TR/2dcontext2/&lt;br /&gt;
*** https://www.w3.org/TR/microdata/ (published as NOTE, but still contains a bunch of outdated content)&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10098</id>
		<title>Fork tracking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Fork_tracking&amp;diff=10098"/>
		<updated>2016-10-11T14:21:40Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Confusion Mitigated */ add a URL I found for XHR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page exists to document the status of the outdated forks of various WHATWG specifications, and any progress toward clarifying their out-of-dateness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confusion Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* Fullscreen: https://fullscreen.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/fullscreen/&lt;br /&gt;
** Status: discontinued as a NOTE. ED URL (http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html) redirects&lt;br /&gt;
* XMLHttpRequest: https://xhr.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest/&lt;br /&gt;
** Forked to http://www.w3.org/TR/XMLHttpRequest2/&lt;br /&gt;
** Forked to https://dvcs.w3.org/hg/xhr/raw-file/default/xhr-1/Overview.html&lt;br /&gt;
** Status: both forks discontinued as a NOTE, although XHR2 directs visitors to both XHR1 and the XHR Standard for some reason.&lt;br /&gt;
&lt;br /&gt;
== Confusion Somewhat Mitigated ==&lt;br /&gt;
&lt;br /&gt;
* URL: https://url.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/url/ plus various aliases and older versions (e.g. https://www.w3.org/TR/url-1/)&lt;br /&gt;
** Status: has a reasonable red disclaimer, but still exists.&lt;br /&gt;
** https://w3ctag.github.io/url/ has been fully discontinued, at least.&lt;br /&gt;
* Streams: https://streams.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/streams-api/&lt;br /&gt;
** Status: mostly gutted, with a reasonable red disclaimer.&lt;br /&gt;
&lt;br /&gt;
== Confusion Persists ==&lt;br /&gt;
&lt;br /&gt;
* Fetch: https://fetch.spec.whatwg.org/&lt;br /&gt;
** Obsolete subsections published as http://www.w3.org/TR/cors/&lt;br /&gt;
** Status: still exists as an outdated specification with no warning, causing confusion.&lt;br /&gt;
* DOM: https://dom.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/dom/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. And has a weird rename (&amp;quot;DOM4&amp;quot;) too.&lt;br /&gt;
* Encoding: https://encoding.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/encoding/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion&lt;br /&gt;
* Notifications: https://notifications.spec.whatwg.org/&lt;br /&gt;
** Forked to http://www.w3.org/TR/notifications/&lt;br /&gt;
** Status: still exists as an outdated snapshot with no warning, causing confusion. The spec model has diverged significantly in the meantime, and the outdated version is actively wrong, not just incomplete.&lt;br /&gt;
* HTML: https://html.spec.whatwg.org/multipage/&lt;br /&gt;
** Forked to http://www.w3.org/TR/html5/ as an outdated fork of a subset frozen in 2013.&lt;br /&gt;
** Forked to http://www.w3.org/TR/html51/ as an outdated fork of a subset frozen in 2015.&lt;br /&gt;
** Forked to https://w3c.github.io/html/ as an outdated fork of a subset frozen in early 2016 (see [https://annevankesteren.nl/2016/01/film-at-11 blog post]).&lt;br /&gt;
** In general all of these attempt to copy-and-paste HTML and then apply forked patches on top, but the scripts are wonky, leading to lots of errors.&lt;br /&gt;
** Subsets of HTML split out into other outdated forks, none with appropriate warnings:&lt;br /&gt;
*** http://www.w3.org/TR/webstorage/&lt;br /&gt;
*** http://www.w3.org/TR/workers/&lt;br /&gt;
*** http://www.w3.org/TR/webmessaging/ (ED is nice at least https://w3c.github.io/webmessaging/)&lt;br /&gt;
*** http://www.w3.org/TR/websockets/ (ED is nice at least https://w3c.github.io/websockets/)&lt;br /&gt;
*** http://www.w3.org/TR/eventsource/ (ED is nice at least https://w3c.github.io/eventsource/)&lt;br /&gt;
*** http://www.w3.org/TR/2dcontext/&lt;br /&gt;
*** https://www.w3.org/TR/microdata/ (published as NOTE, but still contains a bunch of outdated content)&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10057</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10057"/>
		<updated>2016-04-16T06:47:39Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? */ GitHub is a thing now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is Web standards, specifically:&lt;br /&gt;
&lt;br /&gt;
* [https://html.spec.whatwg.org/ HTML], which also includes Web Workers, Web Storage, the Web Sockets API, Server-Sent Events, Microdata, and the 2D Canvas.&lt;br /&gt;
* [https://fetch.spec.whatwg.org/ Fetch], including the &amp;lt;code&amp;gt;fetch()&amp;lt;/code&amp;gt; API&lt;br /&gt;
* [https://dom.spec.whatwg.org/ DOM], including DOM Events, DOM range, and mutation observers&lt;br /&gt;
* [https://url.spec.whatwg.org/ URLs], including an API for URLs&lt;br /&gt;
&lt;br /&gt;
...and [https://whatwg.org/specs a number of other specs].&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=hneN6aW-d9w This video from Domenic Denicola] is a good introduction to working with standards bodies.&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily [https://github.com/whatwg participate on GitHub] or subscribe to the [https://whatwg.org/mailing-list WHATWG mailing lists]. There are no meetings, since meetings prevent people with limited time or money from participating.&lt;br /&gt;
&lt;br /&gt;
=== Is there a Code of Conduct? ===&lt;br /&gt;
&lt;br /&gt;
Yes, see [[Code of Conduct]]. Please read it and respect it.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People [https://github.com/whatwg collaborate on GitHub] or send email to [https://whatwg.org/mailing-list#specs the mailing list].&lt;br /&gt;
&lt;br /&gt;
Each standard has one or more editors, who are responsible for dealing with feedback for that document. Those editors read all the feedback, and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc.) make language design decisions intended to address everyone&#039;s needs as well as possible while keeping the languages and APIs consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the relevant editor to change the spec any more (e.g., because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
For new features, or significant changes to the processing models, the relevant editor will typically describe the intended changes in the relevant bug or mailing list thread to give people a chance to point out problems with it before the spec is updated. Implementors, especially, are urged to indicate on such threads whether they approve of the suggested changes or new feature, so that we can avoid the spec containing material which implementors are later found to disagree with.&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach — there&#039;s no guarantee that everyone will be happy! There is also no voting. There is a small oversight committee (known historically as the &amp;quot;WHATWG members&amp;quot;, from the name that the original [https://whatwg.org/charter charter] used, though that terminology is misleading) who have the authority to override or replace editors if they start making bad decisions, but so far that has never happened in over ten years. This committee has a private mailing list, but it receives very few messages, usually going years with no emails at all. Discussions on that list are summarized and described on the public list, to make sure everyone is kept up to date.&lt;br /&gt;
&lt;br /&gt;
=== What happens with WHATWG mailing list discussions? ===&lt;br /&gt;
&lt;br /&gt;
On the WHATWG list, the burden is an the spec editors to evaluate the various positions that have been put forward in a discussion, and figure out which one is strongest (or find another position that strikes a better balance between all of them).&lt;br /&gt;
&lt;br /&gt;
The purpose of debate on the WHATWG list therefore isn&#039;t to convince everyone; it is to put forward the arguments that exist, so that the&lt;br /&gt;
relevant editor can make a well-informed decision. As a corollary: If some points are made, rebutted, and not further defended, then maybe the person making the arguments is hoping that the relevant editor will consider the rebuttals weak, or thinks that the argument they have presented is strong despite the rebuttals. If you find someone is not making good arguments, or is ignoring your arguments, your best bet is to stop responding. Repeating previously-stated arguments doesn&#039;t help, since the editors will see all the arguments when they look at the thread. Similarly, as soon as threads start being meta-threads about people&#039;s argumentation behaviour, we stop making any kind of&lt;br /&gt;
useful progress, since that isn&#039;t input that can help the decision-making process later.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
File an issue on the [https://whatwg.org/specs/ relevant standard] as indicated at the top of that standard. All feedback is supposed to be addressed in due course. You are also welcome to take a stab at addressing the problem yourself through a GitHub pull request.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g., because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editors know&#039;&#039;&#039; by either emailing them, or contacting them on [[IRC]]. Requests for priority feedback handling are handled confidentially if desired so other implementers won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_removing_bad_idesa_from_the_spec.3F}}Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* Occasionally, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward. If it&#039;s been a few years and there&#039;s no implementation, and no vendor is showing any interest in eventually implementing that section; or if it&#039;s a section that browsers previously implemented but where the momentum shows that browsers are actually removing support, then it is highly likely that the request to remove the section will be honoured. (Sometimes, a warning is first placed in the spec, as with [https://html.spec.whatwg.org/multipage/webappapis.html#dialogs-implemented-using-separate-documents showModalDialog()].)&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential or fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_adding_new_features_to_the_spec.3F}}Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
&lt;br /&gt;
# Forget about the particular solution you have in mind! Solution time is later!&lt;br /&gt;
# Write down a description of the underlying problem you&#039;re trying to solve. What are the use cases? A use case is an actual user wanting to do something. Then list requirements for each use case. For a good example of how to do this, see http://lists.w3.org/Archives/Public/public-webapps/2012JulSep/0835.html&lt;br /&gt;
# Get more people involved. Send your use cases and their requirements to [https://whatwg.org/mailing-list#specs whatwg@whatwg.org]. Ask fellow Web developers about their opinions (but remind them of step 1 above). Adjust the list of use cases and requirements as appropriate. Say which use cases are important and which are just nice to have.&lt;br /&gt;
# Optionally, your work is done at this point. If you have done a good job of the above steps and convinced other people that your use case is an important one to solve, they can do the remaining steps. (On the flip side, if nobody else cares about the use case, chances are solutions for it will not succeed despite being awesome.)&lt;br /&gt;
# Research existing solutions. Come up with new solutions. Try to keep the solutions as simple as possible, maybe only addressing the important use cases and leaving the nice to have use cases for later (when there&#039;s implementation experience). Send this list of solutions, old and new, again to [https://whatwg.org/mailing-list#specs whatwg@whatwg.org]. Ask browser vendors for feedback. Maybe some particular solutions don&#039;t fit with the browser&#039;s architecture, optimizations, etc., and just are not going to be implemented no matter how much you like them. Strike those solutions and don&#039;t grieve about the loss!&lt;br /&gt;
# Evaluate how well each of the remaining solutions address each use case and how well they meet the requirements. This step should show which solution is the technically best fit (might turn out to be someone else&#039;s solution).&lt;br /&gt;
# Ask the spec&#039;s editor to put that solution in the spec. Likely your text won&#039;t be taken verbatim but will be written in a style that is more suitable for implementors or better hooks in to the rest of the spec, etc.&lt;br /&gt;
# Ask browser vendors to implement the newly specified solution, even if it&#039;s just an experimental implementation. This implementation experience usually means that new problems are found with the solution that need to be addressed, or that a different solution is actually better.&lt;br /&gt;
# Write a test suite for the feature to see if the implementations match the spec. This usually highlights bugs in the implementations and also bugs in the spec.&lt;br /&gt;
# Participate in subsequent design discussions. When there are two or more mature implementations, it may be time to extend the feature to address the nice to have use cases (but this whole process should be repeated even for such extensions).&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which can even start before implementations start being written to the spec. We don&#039;t yet have a good story with respect to test suites, sadly. If you want to help us out, let the mailing list know! Be aware, though, it&#039;s a lot of work.&lt;br /&gt;
&lt;br /&gt;
=== Should I send new proposed text when I have a suggestion? ===&lt;br /&gt;
&lt;br /&gt;
Please do not suggest new text, instead, say what is wrong with the current text. Just proposing new text makes it impossible for the editor to determine if the problem is endemic (requiring more changes than you realise), or whether what the editor thinks of as mistakes in the new proposed text are intentional or not (and should be fixed or not), or whether stylistic differences are intentional or not, etc.&lt;br /&gt;
&lt;br /&gt;
=== What does &amp;quot;Living Standard&amp;quot; mean? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG specifications are described as Living Standards. This means that they are standards that are continuously updated as they receive feedback, either from Web designers, browser vendors, tool vendors, or indeed any other interested party. It also means that new features get added to them over time, at a rate intended to keep the specifications a little ahead of the implementations but not so far ahead that the implementations give up.&lt;br /&gt;
&lt;br /&gt;
Despite the continuous maintenance, or maybe we should say &#039;&#039;as part&#039;&#039; of the continuing maintenance, a significant effort is placed on getting the specifications and the implementations to converge — the parts of the specification that are mature and stable are not changed willy nilly. Maintenance means that the days where the specifications are brought down from the mountain and remain forever locked, even if it turns out that all the browsers do something else, or even if it turns out that the specification left some detail out and the browsers all disagree on how to implement it, are gone. Instead, we now make sure to update the specifications to be detailed enough that all the implementations (not just browsers, of course) can do the same thing. Instead of ignoring what the browsers do, we fix the spec to match what the browsers do. Instead of leaving the specification ambiguous, we fix the the specification to define how things work.&lt;br /&gt;
&lt;br /&gt;
=== Does that mean the specifications can change at any time? ===&lt;br /&gt;
&lt;br /&gt;
The specifications do not change arbitrarily: we are extremely careful! As parts of a specification mature, and implementations ship, the spec cannot be changed in backwards-incompatible ways (because the implementors would never agree to break compatibility unless for security reasons). The specifications are never complete, since the Web is continuously evolving. The last time HTML was described as &amp;quot;complete&amp;quot; was after HTML4, when development stopped for several years, leading to stagnation. (If the Web is replaced by something better and dies, the HTML spec will die with it.)&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s the patent story for WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG operates as a W3C Community Group and thus uses the W3C Community Group patent policies.&lt;br /&gt;
So far we have published one FSA with [http://www.w3.org/community/whatwg/spec/82/commitments patent commitments] from Google, Mozilla, and others covering the URL standard.&lt;br /&gt;
[https://blog.whatwg.org/make-patent-commitments You can make patent commitments too!]&lt;br /&gt;
Some of our specifications have also been forked and republished by the W3C with patent commitments from certain companies.&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML? === &lt;br /&gt;
&lt;br /&gt;
[https://html.spec.whatwg.org/multipage/ HTML] is one of the standards being worked on by the WHATWG community. It is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML and XML (XHTML) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before, yet are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? ===&lt;br /&gt;
&lt;br /&gt;
Going forward, the WHATWG is just working on &amp;quot;HTML&amp;quot;, without worrying about version numbers. When people talk about HTML5 in the context of the WHATWG, they usually mean just &amp;quot;the latest work on HTML&amp;quot;, not necessarily a specific version. For more details, see the section called [https://html.spec.whatwg.org/multipage/introduction.html#is-this-html5? &amp;quot;Is this HTML5?&amp;quot;] in the specification.&lt;br /&gt;
&lt;br /&gt;
=== How do I validate my pages? ===&lt;br /&gt;
&lt;br /&gt;
Use a [https://validator.whatwg.org/ validator].&lt;br /&gt;
&lt;br /&gt;
=== What parts of the specification are stable? ===&lt;br /&gt;
&lt;br /&gt;
The whole specification is more or less stable except where there are big messages pointing out some unresolved issue. (These are pretty rare.) There are some parts of the spec that describe new technology that has not yet been implemented, but at this point these additions are only added after the design itself is pretty stable.&lt;br /&gt;
&lt;br /&gt;
(In practice, implementations all follow the latest specification drafts anyway, not so-called &amp;quot;finished&amp;quot; snapshots. The problem with following a snapshot is that you end up following something that is &#039;&#039;known to be wrong&#039;&#039;. That&#039;s obviously not the way to get interoperability! This has in fact been a real problem at the W3C, where mistakes are found and fixed in the editors&#039; drafts of specifications, but implementors who aren&#039;t fully engaged in the process go and implement obsolete snapshots instead, including those bugs, without realising the problems, and resulting in differences between the browsers.)&lt;br /&gt;
&lt;br /&gt;
=== Will future browsers have any idea what older HTML documents mean?  ===&lt;br /&gt;
&lt;br /&gt;
Browsers do not implement HTML+, HTML2, HTML3.2 HTML4, HTML4.01, etc, as separate versions. They all just have a single implementation that covers all these versions at once. That is what the WHATWG HTML specification defines: how to write a browser (or other implementation) that handles &#039;&#039;all previous versions of HTML&#039;&#039;, as well as all the latest features.&lt;br /&gt;
&lt;br /&gt;
One of the main goals of the HTML specification and the WHATWG effort as a whole is to make it possible for archeologists hundreds of years from now to write a browser and view HTML content, regardless of when it was written. Making sure that we handle all documents is one of our most important goals. Not having versions does not preclude this; indeed it makes it significantly easier.&lt;br /&gt;
&lt;br /&gt;
=== How are developers to determine when certain parts of their pages will become invalid? ===&lt;br /&gt;
&lt;br /&gt;
It shouldn&#039;t matter if and when old pages become invalid.&lt;br /&gt;
&lt;br /&gt;
Validity (more often referred to as document conformance in the WHATWG) is a quality assurance tool to help authors avoid mistakes. We don&#039;t make things non-conforming (invalid) for the sake of it, we use conformance as a guide for developers to help them avoid bad practices or mistakes (like typos). So there&#039;s not really any need to worry about whether old pages are conforming or not, it&#039;s only helpful when you&#039;re writing a new page, and it&#039;s always most helpful to have the latest advice. It wouldn&#039;t be useful to check for compliance against last week&#039;s rules, for instance. After all, we fixed mistakes in those rules this week! For more details, see [https://html.spec.whatwg.org/multipage/introduction.html#conformance-requirements-for-authors part of the introduction] of the specification.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec:&lt;br /&gt;
&lt;br /&gt;
* The Twitter feed: [https://twitter.com/htmlstandard @htmlstandard]&lt;br /&gt;
&lt;br /&gt;
* The [https://github.com/whatwg/html/commits/master GitHub commits log]&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [https://github.com/whatwg/html/ Git repository]. You may use any Git client to check out the latest version and use your client&amp;amp;rsquo;s diff tools to compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* At a broader level, Anne and Simon once wrote a document that gave a high-level overview of changes to HTML over the last decade or so: https://html-differences.whatwg.org/&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the HTML spec? ===&lt;br /&gt;
&lt;br /&gt;
The HTML Standard is available in two forms: [https://html.spec.whatwg.org/ single-page] (&#039;&#039;very large&#039;&#039;) and &#039;&#039;&#039;[https://html.spec.whatwg.org/multipage/ multi-page]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The WHATWG [https://whatwg.org/specs/ also works on other standards], such as the DOM, URL, and XMLHttpRequest standards.&lt;br /&gt;
&lt;br /&gt;
The W3C publishes some forked versions of these specifications. We have requested that they stop publishing these but they have refused. They copy most of our fixes into their forks, but their forks are usually weeks to months behind. They also make intentional changes, and sometimes even unintentional changes, to their versions. We highly recommend not paying any attention to the W3C forks of WHATWG standards.&lt;br /&gt;
&lt;br /&gt;
=== Are there versions of the HTML specification aimed specifically at authors/implementors? ===&lt;br /&gt;
&lt;br /&gt;
Yes! [https://developers.whatwg.org/ developers.whatwg.org]&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites to help you work out what you can use:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.info/&lt;br /&gt;
* http://caniuse.com/&lt;br /&gt;
* http://html5doctor.com/&lt;br /&gt;
* https://developer.mozilla.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, then remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG is now using a Living Standard development model, so this question is no longer really pertinent. See above, under &amp;quot;[[FAQ#What_is_HTML.3F|What is HTML5?]]&amp;quot;. The real question is, when can you use new features? For an answer to &#039;that&#039; question, see &amp;quot;[[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s this I hear about 2022? ===&lt;br /&gt;
&lt;br /&gt;
Before the WHATWG transitioned to an unversioned model for HTML, when we were still working on HTML5 and still thought in terms of snapshot drafts reaching milestones as a whole rather than on a per-section basis, the editor estimated that we&#039;d reach Last Call in October 2009, Candidate Recommendation in the year 2012, and Recommendation in the year 2022 or later. This would be approximately 18-20 years of development, since beginning in mid-2004, which is on par with the amount of work that other specs of similar size and similar maturity receive to get to the same level of quality. For instance, it&#039;s in line with the timeline of CSS2/2.1. Compared to HTML4&#039;s timetable it may seem long, but consider: work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hadn&#039;t reached the level that we want to reach with HTML now. There was no real test suite, there are many parts of the HTML4 spec that are lacking real implementations, there are big parts of HTML4 that aren&#039;t interoperable, and the HTML4 spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than the WHATWG is aiming for. We now look for two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve moved to a more incremental model without macro-level milestones, the 2022 date is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft started implementing new parts of the contemporary HTML standard in IE8 and has been adding more to IE since.&lt;br /&gt;
&lt;br /&gt;
HTML is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Rationale]] — a page that documents some reasons behind decisions in the spec, originally written and maintained by Variable. If anyone wants to help him out, try to grab someone on [[IRC]] (e.g. Hixie), we&#039;re always looking for more contributors and this is a good place to start.&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]] or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see &#039;&#039;HTML feature proposals&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
== HTML syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What is the DOCTYPE for modern HTML documents? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary. However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
Fundamentally, this is an XML issue, and is not specific to XHTML.&lt;br /&gt;
&lt;br /&gt;
=== How are documents from HTML4 and earlier versions parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by the HTML spec. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax as now defined therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed as described by the new HTML specification.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [https://validator.whatwg.org/ HTML validator] that follows the latest specification.&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in the HTML specification. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike the situation as of XHTML1, the HTML specification says that XHTML must no longer be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 back to HTML.&lt;br /&gt;
&lt;br /&gt;
The new HTML specification also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
Yes. Find guidance in [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|HTML vs. XHTML]] and [http://dev.w3.org/html5/html-xhtml-author-guide/html-xhtml-authoring-guide.html Polyglot Markup: HTML-Compatible XHTML Documents].&lt;br /&gt;
&lt;br /&gt;
A word of warning though. You have to be &#039;&#039;&#039;really&#039;&#039;&#039; careful for this to work, and it&#039;s almost certainly not worth it. You&#039;d be better off just using an HTML-to-XML parser. That way you can just use HTML normally while still using XML pipeline tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to the latest HTML specification, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does this new HTML spec legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;amp;lt;a&amp;amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML. The main reason this isn&#039;t in HTML is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;amp;lt;a&amp;amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;figcaption&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;figcaption&amp;gt;Apples&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This is a styling problem and should be fixed in CSS. There&#039;s no reason to add a grouping element to HTML, as the semantics are already unambiguous.&lt;br /&gt;
&lt;br /&gt;
There are multiple problems with adding something like &amp;amp;lt;di&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* It would require parsing changes. These are relatively expensive.&lt;br /&gt;
* It would have a poor backwards-compatibility story until the parsers were all updated.&lt;br /&gt;
* It would have a poor backwards-compatibility story with legacy code that handles &amp;amp;lt;dl&amp;gt;s, since they&#039;re not expecting &amp;amp;lt;di&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
The cost just doesn&#039;t seem worth it, given that a CSS solution would also solve a bunch of other problems (like styling implied sections).&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers). While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
=== Where&#039;s the harm in adding— ===&lt;br /&gt;
&lt;br /&gt;
Every feature we add to the Web platform has a cost:&lt;br /&gt;
&lt;br /&gt;
* Implementation: someone has to write code for it in each browser&lt;br /&gt;
* Testing: someone has to write the tests to check the features is working&lt;br /&gt;
* QA: someone has to regularly run the tests to make sure the feature doesn&#039;t regress&lt;br /&gt;
* Code maintenance: when browser vendors refactor code, they have to refactor more code if there&#039;s more features&lt;br /&gt;
* Tutorials: people who write tutorials have to include the feature, or handle feedback asking for them to do so&lt;br /&gt;
* Cognitive load: authors learning the platform have more documentation to wade through even if they don&#039;t care about the feature&lt;br /&gt;
* [http://www.nngroup.com/articles/stagnating-expertise/ Extra features discourage exploration]: Having more features means less overall feature usage.&lt;br /&gt;
* Page maintenance: authors have to know how to maintain the feature if other people have used it in pages they now maintain&lt;br /&gt;
* Spec writing: someone has to write the spec for the feature and ensure it&#039;s maintained&lt;br /&gt;
* Bug fixing: when bugs are found in the spec or implementations, someone has to figure out a fix, implement it, test it, ship it, tests have to be fixed, documentation has to be updated, etc&lt;br /&gt;
* Code size: each feature increases the size of browsers (both on-disk binaries and in-memory resident size)&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
No. The two groups have different goals. The WHATWG spec is intended to describe what browsers should aim for, introducing new features and describing reality in as much, and as accurate, detail as possible. The W3C spec is intended to follow the W3C process to REC.&lt;br /&gt;
&lt;br /&gt;
On the WHATWG side, the editors read the feedback sent to both groups and take all input into account — and indeed there are far more places where input on HTML is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc). (In particular, the editors do not look at the source of technical arguments when attempting to determine what path to take on an issue or other.)&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The two groups have different specs, so each has authority over its spec. The specs can and have diverged on some topics; unfortunately, these differences are not documented anywhere.&lt;br /&gt;
&lt;br /&gt;
=== Isn&#039;t it bad that the specs have forked? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The WHATWG originally committed to remaining consistent with the W3C spec unless the W3C working group showed a lapse in judgement. When that (in Hixie&#039;s opinion) occurred, there was little choice left but to let the specs diverge.&lt;br /&gt;
&lt;br /&gt;
The plan to get the specs to converge again, such as it is, is to just do a better job with the WHATWG spec, such that it becomes the logical and obvious choice for anyone wanting to figure out which spec they should use.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki]&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/introduction.html#history0 The history section in the HTML standard itself]&lt;br /&gt;
&lt;br /&gt;
== Using HTML ==&lt;br /&gt;
&lt;br /&gt;
=== Do you have any hints on how to use &amp;amp;lt;section&amp;gt; and &amp;amp;lt;article&amp;gt; and so on? ===&lt;br /&gt;
&lt;br /&gt;
Some hopefully helpful hints:&lt;br /&gt;
&lt;br /&gt;
* One way to look at it is how would you draw the page outline/table-of-contents? Each entry in the table of contents should be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;, and if it&#039;s not in the table of contents and doesn&#039;t have an &amp;amp;lt;h1&amp;gt;, it should probably not be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;.&lt;br /&gt;
* You can still use &amp;amp;lt;div&amp;gt;. It&#039;s the right element if you need a styling hook because CSS can&#039;t give you enough to do what you want.&lt;br /&gt;
* Generally, &amp;amp;lt;section&amp;gt;s should start with an &amp;amp;lt;h1&amp;gt; and the section title. It&#039;s not a hard-and-fast rule, but if you find yourself in a situation where an &amp;amp;lt;h1&amp;gt; would be inappropriate, you probably want &amp;amp;lt;div&amp;gt; rather than &amp;amp;lt;section&amp;gt;.&lt;br /&gt;
* Sections can contain Articles, and vice versa. e.g. you can have a section that is news, a section that is editorials, a section that is sports, each with many articles, and each of those can have subsections, and each section can have comments, which are marked up using &amp;amp;lt;article&amp;gt;, and each comment could be big enough that it has separate &amp;amp;lt;section&amp;gt;s, and so on.&lt;br /&gt;
&lt;br /&gt;
== Other specifications ==&lt;br /&gt;
&lt;br /&gt;
=== What ever happened to...? ===&lt;br /&gt;
&lt;br /&gt;
The Web Forms 2.0 specification was folded into what is now the HTML specification.&lt;br /&gt;
&lt;br /&gt;
The Web Controls 1.0 specification was overtaken by events and has been abandoned. Its problem space is mostly handled by ARIA and Web Components now.&lt;br /&gt;
&lt;br /&gt;
The DOM Parsing specification was abandoned by the WHATWG because the W3C was doing a better job of maintaining that specification. We do not want to cause confusion in the market place, so when another organisation writes a specification that covers the same technology as one of ours, we only continue to publish it if our version is technically superior.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== +1 ===&lt;br /&gt;
&lt;br /&gt;
Please note that content-free agreement (such as +1s) have no effect on &lt;br /&gt;
the WHATWG list and are therefore discouraged. Editors of specs discussed &lt;br /&gt;
in the WHATWG only consider the quality of the arguments presented, and &lt;br /&gt;
not the volume of agreement.&lt;br /&gt;
&lt;br /&gt;
You should therefore only post to the list if you have a substantive new point&lt;br /&gt;
to make, for example if you have seen a flaw in an argument presented so far,&lt;br /&gt;
or have a new idea to contribute, or have some information that has not yet&lt;br /&gt;
been brought to the table.&lt;br /&gt;
&lt;br /&gt;
=== Making Outlook quote email messages properly ===&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please reply inline or make the reply self-contained, and trim extraneous quotes from previous emails in your replies.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your email makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your email backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post emails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write email.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write email?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10056</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=10056"/>
		<updated>2016-04-16T06:42:51Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* What is the WHATWG working on? */ add Fetch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is Web standards, specifically:&lt;br /&gt;
&lt;br /&gt;
* [https://html.spec.whatwg.org/ HTML], which also includes Web Workers, Web Storage, the Web Sockets API, Server-Sent Events, Microdata, and the 2D Canvas.&lt;br /&gt;
* [https://fetch.spec.whatwg.org/ Fetch], including the &amp;lt;code&amp;gt;fetch()&amp;lt;/code&amp;gt; API&lt;br /&gt;
* [https://dom.spec.whatwg.org/ DOM], including DOM Events, DOM range, and mutation observers&lt;br /&gt;
* [https://url.spec.whatwg.org/ URLs], including an API for URLs&lt;br /&gt;
&lt;br /&gt;
...and [https://whatwg.org/specs a number of other specs].&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=hneN6aW-d9w This video from Domenic Denicola] is a good introduction to working with standards bodies.&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily [https://github.com/whatwg participate on GitHub] or subscribe to the [https://whatwg.org/mailing-list WHATWG mailing lists]. There are no meetings, since meetings prevent people with limited time or money from participating.&lt;br /&gt;
&lt;br /&gt;
=== Is there a Code of Conduct? ===&lt;br /&gt;
&lt;br /&gt;
Yes, see [[Code of Conduct]]. Please read it and respect it.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People [https://github.com/whatwg collaborate on GitHub] or send email to [https://whatwg.org/mailing-list#specs the mailing list].&lt;br /&gt;
&lt;br /&gt;
Each standard has one or more editors, who are responsible for dealing with feedback for that document. Those editors read all the feedback, and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc.) make language design decisions intended to address everyone&#039;s needs as well as possible while keeping the languages and APIs consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the relevant editor to change the spec any more (e.g., because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
For new features, or significant changes to the processing models, the relevant editor will typically describe the intended changes in the relevant bug or mailing list thread to give people a chance to point out problems with it before the spec is updated. Implementors, especially, are urged to indicate on such threads whether they approve of the suggested changes or new feature, so that we can avoid the spec containing material which implementors are later found to disagree with.&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach — there&#039;s no guarantee that everyone will be happy! There is also no voting. There is a small oversight committee (known historically as the &amp;quot;WHATWG members&amp;quot;, from the name that the original [https://whatwg.org/charter charter] used, though that terminology is misleading) who have the authority to override or replace editors if they start making bad decisions, but so far that has never happened in over ten years. This committee has a private mailing list, but it receives very few messages, usually going years with no emails at all. Discussions on that list are summarized and described on the public list, to make sure everyone is kept up to date.&lt;br /&gt;
&lt;br /&gt;
=== What happens with WHATWG mailing list discussions? ===&lt;br /&gt;
&lt;br /&gt;
On the WHATWG list, the burden is an the spec editors to evaluate the various positions that have been put forward in a discussion, and figure out which one is strongest (or find another position that strikes a better balance between all of them).&lt;br /&gt;
&lt;br /&gt;
The purpose of debate on the WHATWG list therefore isn&#039;t to convince everyone; it is to put forward the arguments that exist, so that the&lt;br /&gt;
relevant editor can make a well-informed decision. As a corollary: If some points are made, rebutted, and not further defended, then maybe the person making the arguments is hoping that the relevant editor will consider the rebuttals weak, or thinks that the argument they have presented is strong despite the rebuttals. If you find someone is not making good arguments, or is ignoring your arguments, your best bet is to stop responding. Repeating previously-stated arguments doesn&#039;t help, since the editors will see all the arguments when they look at the thread. Similarly, as soon as threads start being meta-threads about people&#039;s argumentation behaviour, we stop making any kind of&lt;br /&gt;
useful progress, since that isn&#039;t input that can help the decision-making process later.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
Feedback on a feature should be sent to whatwg@whatwg.org (but you have to [https://whatwg.org/mailing-list#specs join the mailing list] first), or the editor of the [https://whatwg.org/specs/ relevant spec]. All feedback is supposed to receive a reply in due course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g., because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editors know&#039;&#039;&#039; by either emailing them, or contacting them on [[IRC]]. Requests for priority feedback handling are handled confidentially if desired so other implementers won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
Questions and requests for clarifications should be asked either on the mailing list or on [[IRC]], in the #whatwg channel on Freenode.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_removing_bad_idesa_from_the_spec.3F}}Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* Occasionally, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward. If it&#039;s been a few years and there&#039;s no implementation, and no vendor is showing any interest in eventually implementing that section; or if it&#039;s a section that browsers previously implemented but where the momentum shows that browsers are actually removing support, then it is highly likely that the request to remove the section will be honoured. (Sometimes, a warning is first placed in the spec, as with [https://html.spec.whatwg.org/multipage/webappapis.html#dialogs-implemented-using-separate-documents showModalDialog()].)&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential or fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== {{anchor|Is_there_a_process_for_adding_new_features_to_the_spec.3F}}Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
&lt;br /&gt;
# Forget about the particular solution you have in mind! Solution time is later!&lt;br /&gt;
# Write down a description of the underlying problem you&#039;re trying to solve. What are the use cases? A use case is an actual user wanting to do something. Then list requirements for each use case. For a good example of how to do this, see http://lists.w3.org/Archives/Public/public-webapps/2012JulSep/0835.html&lt;br /&gt;
# Get more people involved. Send your use cases and their requirements to [https://whatwg.org/mailing-list#specs whatwg@whatwg.org]. Ask fellow Web developers about their opinions (but remind them of step 1 above). Adjust the list of use cases and requirements as appropriate. Say which use cases are important and which are just nice to have.&lt;br /&gt;
# Optionally, your work is done at this point. If you have done a good job of the above steps and convinced other people that your use case is an important one to solve, they can do the remaining steps. (On the flip side, if nobody else cares about the use case, chances are solutions for it will not succeed despite being awesome.)&lt;br /&gt;
# Research existing solutions. Come up with new solutions. Try to keep the solutions as simple as possible, maybe only addressing the important use cases and leaving the nice to have use cases for later (when there&#039;s implementation experience). Send this list of solutions, old and new, again to [https://whatwg.org/mailing-list#specs whatwg@whatwg.org]. Ask browser vendors for feedback. Maybe some particular solutions don&#039;t fit with the browser&#039;s architecture, optimizations, etc., and just are not going to be implemented no matter how much you like them. Strike those solutions and don&#039;t grieve about the loss!&lt;br /&gt;
# Evaluate how well each of the remaining solutions address each use case and how well they meet the requirements. This step should show which solution is the technically best fit (might turn out to be someone else&#039;s solution).&lt;br /&gt;
# Ask the spec&#039;s editor to put that solution in the spec. Likely your text won&#039;t be taken verbatim but will be written in a style that is more suitable for implementors or better hooks in to the rest of the spec, etc.&lt;br /&gt;
# Ask browser vendors to implement the newly specified solution, even if it&#039;s just an experimental implementation. This implementation experience usually means that new problems are found with the solution that need to be addressed, or that a different solution is actually better.&lt;br /&gt;
# Write a test suite for the feature to see if the implementations match the spec. This usually highlights bugs in the implementations and also bugs in the spec.&lt;br /&gt;
# Participate in subsequent design discussions. When there are two or more mature implementations, it may be time to extend the feature to address the nice to have use cases (but this whole process should be repeated even for such extensions).&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which can even start before implementations start being written to the spec. We don&#039;t yet have a good story with respect to test suites, sadly. If you want to help us out, let the mailing list know! Be aware, though, it&#039;s a lot of work.&lt;br /&gt;
&lt;br /&gt;
=== Should I send new proposed text when I have a suggestion? ===&lt;br /&gt;
&lt;br /&gt;
Please do not suggest new text, instead, say what is wrong with the current text. Just proposing new text makes it impossible for the editor to determine if the problem is endemic (requiring more changes than you realise), or whether what the editor thinks of as mistakes in the new proposed text are intentional or not (and should be fixed or not), or whether stylistic differences are intentional or not, etc.&lt;br /&gt;
&lt;br /&gt;
=== What does &amp;quot;Living Standard&amp;quot; mean? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG specifications are described as Living Standards. This means that they are standards that are continuously updated as they receive feedback, either from Web designers, browser vendors, tool vendors, or indeed any other interested party. It also means that new features get added to them over time, at a rate intended to keep the specifications a little ahead of the implementations but not so far ahead that the implementations give up.&lt;br /&gt;
&lt;br /&gt;
Despite the continuous maintenance, or maybe we should say &#039;&#039;as part&#039;&#039; of the continuing maintenance, a significant effort is placed on getting the specifications and the implementations to converge — the parts of the specification that are mature and stable are not changed willy nilly. Maintenance means that the days where the specifications are brought down from the mountain and remain forever locked, even if it turns out that all the browsers do something else, or even if it turns out that the specification left some detail out and the browsers all disagree on how to implement it, are gone. Instead, we now make sure to update the specifications to be detailed enough that all the implementations (not just browsers, of course) can do the same thing. Instead of ignoring what the browsers do, we fix the spec to match what the browsers do. Instead of leaving the specification ambiguous, we fix the the specification to define how things work.&lt;br /&gt;
&lt;br /&gt;
=== Does that mean the specifications can change at any time? ===&lt;br /&gt;
&lt;br /&gt;
The specifications do not change arbitrarily: we are extremely careful! As parts of a specification mature, and implementations ship, the spec cannot be changed in backwards-incompatible ways (because the implementors would never agree to break compatibility unless for security reasons). The specifications are never complete, since the Web is continuously evolving. The last time HTML was described as &amp;quot;complete&amp;quot; was after HTML4, when development stopped for several years, leading to stagnation. (If the Web is replaced by something better and dies, the HTML spec will die with it.)&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s the patent story for WHATWG standards? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG operates as a W3C Community Group and thus uses the W3C Community Group patent policies.&lt;br /&gt;
So far we have published one FSA with [http://www.w3.org/community/whatwg/spec/82/commitments patent commitments] from Google, Mozilla, and others covering the URL standard.&lt;br /&gt;
[https://blog.whatwg.org/make-patent-commitments You can make patent commitments too!]&lt;br /&gt;
Some of our specifications have also been forked and republished by the W3C with patent commitments from certain companies.&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML? === &lt;br /&gt;
&lt;br /&gt;
[https://html.spec.whatwg.org/multipage/ HTML] is one of the standards being worked on by the WHATWG community. It is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML and XML (XHTML) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before, yet are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? ===&lt;br /&gt;
&lt;br /&gt;
Going forward, the WHATWG is just working on &amp;quot;HTML&amp;quot;, without worrying about version numbers. When people talk about HTML5 in the context of the WHATWG, they usually mean just &amp;quot;the latest work on HTML&amp;quot;, not necessarily a specific version. For more details, see the section called [https://html.spec.whatwg.org/multipage/introduction.html#is-this-html5? &amp;quot;Is this HTML5?&amp;quot;] in the specification.&lt;br /&gt;
&lt;br /&gt;
=== How do I validate my pages? ===&lt;br /&gt;
&lt;br /&gt;
Use a [https://validator.whatwg.org/ validator].&lt;br /&gt;
&lt;br /&gt;
=== What parts of the specification are stable? ===&lt;br /&gt;
&lt;br /&gt;
The whole specification is more or less stable except where there are big messages pointing out some unresolved issue. (These are pretty rare.) There are some parts of the spec that describe new technology that has not yet been implemented, but at this point these additions are only added after the design itself is pretty stable.&lt;br /&gt;
&lt;br /&gt;
(In practice, implementations all follow the latest specification drafts anyway, not so-called &amp;quot;finished&amp;quot; snapshots. The problem with following a snapshot is that you end up following something that is &#039;&#039;known to be wrong&#039;&#039;. That&#039;s obviously not the way to get interoperability! This has in fact been a real problem at the W3C, where mistakes are found and fixed in the editors&#039; drafts of specifications, but implementors who aren&#039;t fully engaged in the process go and implement obsolete snapshots instead, including those bugs, without realising the problems, and resulting in differences between the browsers.)&lt;br /&gt;
&lt;br /&gt;
=== Will future browsers have any idea what older HTML documents mean?  ===&lt;br /&gt;
&lt;br /&gt;
Browsers do not implement HTML+, HTML2, HTML3.2 HTML4, HTML4.01, etc, as separate versions. They all just have a single implementation that covers all these versions at once. That is what the WHATWG HTML specification defines: how to write a browser (or other implementation) that handles &#039;&#039;all previous versions of HTML&#039;&#039;, as well as all the latest features.&lt;br /&gt;
&lt;br /&gt;
One of the main goals of the HTML specification and the WHATWG effort as a whole is to make it possible for archeologists hundreds of years from now to write a browser and view HTML content, regardless of when it was written. Making sure that we handle all documents is one of our most important goals. Not having versions does not preclude this; indeed it makes it significantly easier.&lt;br /&gt;
&lt;br /&gt;
=== How are developers to determine when certain parts of their pages will become invalid? ===&lt;br /&gt;
&lt;br /&gt;
It shouldn&#039;t matter if and when old pages become invalid.&lt;br /&gt;
&lt;br /&gt;
Validity (more often referred to as document conformance in the WHATWG) is a quality assurance tool to help authors avoid mistakes. We don&#039;t make things non-conforming (invalid) for the sake of it, we use conformance as a guide for developers to help them avoid bad practices or mistakes (like typos). So there&#039;s not really any need to worry about whether old pages are conforming or not, it&#039;s only helpful when you&#039;re writing a new page, and it&#039;s always most helpful to have the latest advice. It wouldn&#039;t be useful to check for compliance against last week&#039;s rules, for instance. After all, we fixed mistakes in those rules this week! For more details, see [https://html.spec.whatwg.org/multipage/introduction.html#conformance-requirements-for-authors part of the introduction] of the specification.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec:&lt;br /&gt;
&lt;br /&gt;
* The Twitter feed: [https://twitter.com/htmlstandard @htmlstandard]&lt;br /&gt;
&lt;br /&gt;
* The [https://github.com/whatwg/html/commits/master GitHub commits log]&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [https://github.com/whatwg/html/ Git repository]. You may use any Git client to check out the latest version and use your client&amp;amp;rsquo;s diff tools to compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* At a broader level, Anne and Simon once wrote a document that gave a high-level overview of changes to HTML over the last decade or so: https://html-differences.whatwg.org/&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the HTML spec? ===&lt;br /&gt;
&lt;br /&gt;
The HTML Standard is available in two forms: [https://html.spec.whatwg.org/ single-page] (&#039;&#039;very large&#039;&#039;) and &#039;&#039;&#039;[https://html.spec.whatwg.org/multipage/ multi-page]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The WHATWG [https://whatwg.org/specs/ also works on other standards], such as the DOM, URL, and XMLHttpRequest standards.&lt;br /&gt;
&lt;br /&gt;
The W3C publishes some forked versions of these specifications. We have requested that they stop publishing these but they have refused. They copy most of our fixes into their forks, but their forks are usually weeks to months behind. They also make intentional changes, and sometimes even unintentional changes, to their versions. We highly recommend not paying any attention to the W3C forks of WHATWG standards.&lt;br /&gt;
&lt;br /&gt;
=== Are there versions of the HTML specification aimed specifically at authors/implementors? ===&lt;br /&gt;
&lt;br /&gt;
Yes! [https://developers.whatwg.org/ developers.whatwg.org]&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites to help you work out what you can use:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.info/&lt;br /&gt;
* http://caniuse.com/&lt;br /&gt;
* http://html5doctor.com/&lt;br /&gt;
* https://developer.mozilla.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, then remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
The WHATWG is now using a Living Standard development model, so this question is no longer really pertinent. See above, under &amp;quot;[[FAQ#What_is_HTML.3F|What is HTML5?]]&amp;quot;. The real question is, when can you use new features? For an answer to &#039;that&#039; question, see &amp;quot;[[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s this I hear about 2022? ===&lt;br /&gt;
&lt;br /&gt;
Before the WHATWG transitioned to an unversioned model for HTML, when we were still working on HTML5 and still thought in terms of snapshot drafts reaching milestones as a whole rather than on a per-section basis, the editor estimated that we&#039;d reach Last Call in October 2009, Candidate Recommendation in the year 2012, and Recommendation in the year 2022 or later. This would be approximately 18-20 years of development, since beginning in mid-2004, which is on par with the amount of work that other specs of similar size and similar maturity receive to get to the same level of quality. For instance, it&#039;s in line with the timeline of CSS2/2.1. Compared to HTML4&#039;s timetable it may seem long, but consider: work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hadn&#039;t reached the level that we want to reach with HTML now. There was no real test suite, there are many parts of the HTML4 spec that are lacking real implementations, there are big parts of HTML4 that aren&#039;t interoperable, and the HTML4 spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than the WHATWG is aiming for. We now look for two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
Now that we&#039;ve moved to a more incremental model without macro-level milestones, the 2022 date is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft started implementing new parts of the contemporary HTML standard in IE8 and has been adding more to IE since.&lt;br /&gt;
&lt;br /&gt;
HTML is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Rationale]] — a page that documents some reasons behind decisions in the spec, originally written and maintained by Variable. If anyone wants to help him out, try to grab someone on [[IRC]] (e.g. Hixie), we&#039;re always looking for more contributors and this is a good place to start.&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]] or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see &#039;&#039;HTML feature proposals&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
== HTML syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What is the DOCTYPE for modern HTML documents? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary. However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
Fundamentally, this is an XML issue, and is not specific to XHTML.&lt;br /&gt;
&lt;br /&gt;
=== How are documents from HTML4 and earlier versions parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by the HTML spec. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax as now defined therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed as described by the new HTML specification.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [https://validator.whatwg.org/ HTML validator] that follows the latest specification.&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in the HTML specification. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike the situation as of XHTML1, the HTML specification says that XHTML must no longer be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 back to HTML.&lt;br /&gt;
&lt;br /&gt;
The new HTML specification also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
Yes. Find guidance in [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|HTML vs. XHTML]] and [http://dev.w3.org/html5/html-xhtml-author-guide/html-xhtml-authoring-guide.html Polyglot Markup: HTML-Compatible XHTML Documents].&lt;br /&gt;
&lt;br /&gt;
A word of warning though. You have to be &#039;&#039;&#039;really&#039;&#039;&#039; careful for this to work, and it&#039;s almost certainly not worth it. You&#039;d be better off just using an HTML-to-XML parser. That way you can just use HTML normally while still using XML pipeline tools.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to the latest HTML specification, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does this new HTML spec legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;amp;lt;a&amp;amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML. The main reason this isn&#039;t in HTML is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;amp;lt;a&amp;amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;figcaption&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;figcaption&amp;gt;Apples&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This is a styling problem and should be fixed in CSS. There&#039;s no reason to add a grouping element to HTML, as the semantics are already unambiguous.&lt;br /&gt;
&lt;br /&gt;
There are multiple problems with adding something like &amp;amp;lt;di&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* It would require parsing changes. These are relatively expensive.&lt;br /&gt;
* It would have a poor backwards-compatibility story until the parsers were all updated.&lt;br /&gt;
* It would have a poor backwards-compatibility story with legacy code that handles &amp;amp;lt;dl&amp;gt;s, since they&#039;re not expecting &amp;amp;lt;di&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
The cost just doesn&#039;t seem worth it, given that a CSS solution would also solve a bunch of other problems (like styling implied sections).&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers). While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
=== Where&#039;s the harm in adding— ===&lt;br /&gt;
&lt;br /&gt;
Every feature we add to the Web platform has a cost:&lt;br /&gt;
&lt;br /&gt;
* Implementation: someone has to write code for it in each browser&lt;br /&gt;
* Testing: someone has to write the tests to check the features is working&lt;br /&gt;
* QA: someone has to regularly run the tests to make sure the feature doesn&#039;t regress&lt;br /&gt;
* Code maintenance: when browser vendors refactor code, they have to refactor more code if there&#039;s more features&lt;br /&gt;
* Tutorials: people who write tutorials have to include the feature, or handle feedback asking for them to do so&lt;br /&gt;
* Cognitive load: authors learning the platform have more documentation to wade through even if they don&#039;t care about the feature&lt;br /&gt;
* [http://www.nngroup.com/articles/stagnating-expertise/ Extra features discourage exploration]: Having more features means less overall feature usage.&lt;br /&gt;
* Page maintenance: authors have to know how to maintain the feature if other people have used it in pages they now maintain&lt;br /&gt;
* Spec writing: someone has to write the spec for the feature and ensure it&#039;s maintained&lt;br /&gt;
* Bug fixing: when bugs are found in the spec or implementations, someone has to figure out a fix, implement it, test it, ship it, tests have to be fixed, documentation has to be updated, etc&lt;br /&gt;
* Code size: each feature increases the size of browsers (both on-disk binaries and in-memory resident size)&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
No. The two groups have different goals. The WHATWG spec is intended to describe what browsers should aim for, introducing new features and describing reality in as much, and as accurate, detail as possible. The W3C spec is intended to follow the W3C process to REC.&lt;br /&gt;
&lt;br /&gt;
On the WHATWG side, the editors read the feedback sent to both groups and take all input into account — and indeed there are far more places where input on HTML is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc). (In particular, the editors do not look at the source of technical arguments when attempting to determine what path to take on an issue or other.)&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The two groups have different specs, so each has authority over its spec. The specs can and have diverged on some topics; unfortunately, these differences are not documented anywhere.&lt;br /&gt;
&lt;br /&gt;
=== Isn&#039;t it bad that the specs have forked? ===&lt;br /&gt;
&lt;br /&gt;
Yes. The WHATWG originally committed to remaining consistent with the W3C spec unless the W3C working group showed a lapse in judgement. When that (in Hixie&#039;s opinion) occurred, there was little choice left but to let the specs diverge.&lt;br /&gt;
&lt;br /&gt;
The plan to get the specs to converge again, such as it is, is to just do a better job with the WHATWG spec, such that it becomes the logical and obvious choice for anyone wanting to figure out which spec they should use.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki]&lt;br /&gt;
* [https://html.spec.whatwg.org/multipage/introduction.html#history0 The history section in the HTML standard itself]&lt;br /&gt;
&lt;br /&gt;
== Using HTML ==&lt;br /&gt;
&lt;br /&gt;
=== Do you have any hints on how to use &amp;amp;lt;section&amp;gt; and &amp;amp;lt;article&amp;gt; and so on? ===&lt;br /&gt;
&lt;br /&gt;
Some hopefully helpful hints:&lt;br /&gt;
&lt;br /&gt;
* One way to look at it is how would you draw the page outline/table-of-contents? Each entry in the table of contents should be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;, and if it&#039;s not in the table of contents and doesn&#039;t have an &amp;amp;lt;h1&amp;gt;, it should probably not be a &amp;amp;lt;section&amp;gt;/&amp;amp;lt;article&amp;gt;/&amp;amp;lt;aside&amp;gt;/&amp;amp;lt;nav&amp;gt;.&lt;br /&gt;
* You can still use &amp;amp;lt;div&amp;gt;. It&#039;s the right element if you need a styling hook because CSS can&#039;t give you enough to do what you want.&lt;br /&gt;
* Generally, &amp;amp;lt;section&amp;gt;s should start with an &amp;amp;lt;h1&amp;gt; and the section title. It&#039;s not a hard-and-fast rule, but if you find yourself in a situation where an &amp;amp;lt;h1&amp;gt; would be inappropriate, you probably want &amp;amp;lt;div&amp;gt; rather than &amp;amp;lt;section&amp;gt;.&lt;br /&gt;
* Sections can contain Articles, and vice versa. e.g. you can have a section that is news, a section that is editorials, a section that is sports, each with many articles, and each of those can have subsections, and each section can have comments, which are marked up using &amp;amp;lt;article&amp;gt;, and each comment could be big enough that it has separate &amp;amp;lt;section&amp;gt;s, and so on.&lt;br /&gt;
&lt;br /&gt;
== Other specifications ==&lt;br /&gt;
&lt;br /&gt;
=== What ever happened to...? ===&lt;br /&gt;
&lt;br /&gt;
The Web Forms 2.0 specification was folded into what is now the HTML specification.&lt;br /&gt;
&lt;br /&gt;
The Web Controls 1.0 specification was overtaken by events and has been abandoned. Its problem space is mostly handled by ARIA and Web Components now.&lt;br /&gt;
&lt;br /&gt;
The DOM Parsing specification was abandoned by the WHATWG because the W3C was doing a better job of maintaining that specification. We do not want to cause confusion in the market place, so when another organisation writes a specification that covers the same technology as one of ours, we only continue to publish it if our version is technically superior.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== +1 ===&lt;br /&gt;
&lt;br /&gt;
Please note that content-free agreement (such as +1s) have no effect on &lt;br /&gt;
the WHATWG list and are therefore discouraged. Editors of specs discussed &lt;br /&gt;
in the WHATWG only consider the quality of the arguments presented, and &lt;br /&gt;
not the volume of agreement.&lt;br /&gt;
&lt;br /&gt;
You should therefore only post to the list if you have a substantive new point&lt;br /&gt;
to make, for example if you have seen a flaw in an argument presented so far,&lt;br /&gt;
or have a new idea to contribute, or have some information that has not yet&lt;br /&gt;
been brought to the table.&lt;br /&gt;
&lt;br /&gt;
=== Making Outlook quote email messages properly ===&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please reply inline or make the reply self-contained, and trim extraneous quotes from previous emails in your replies.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your email makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your email backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post emails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write email.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write email?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10054</id>
		<title>IRC</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=IRC&amp;diff=10054"/>
		<updated>2016-04-12T07:09:07Z</updated>

		<summary type="html">&lt;p&gt;Annevk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Freenode IRC network has a channel called [irc://irc.freenode.net/whatwg #whatwg] where some of the more active WHATWG community members hang out. Feel free to join us!&lt;br /&gt;
&lt;br /&gt;
If you want to run a bot, let us know. If they are useful, e.g. providing logging facilities, then they are more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
&lt;br /&gt;
Logs for the #whatwg channel can be found here:&lt;br /&gt;
&lt;br /&gt;
* http://logbot.glob.com.au/?c=freenode%23whatwg&amp;amp;s=today&lt;br /&gt;
* http://krijnhoetmer.nl/irc-logs/whatwg/ (not updated for the last couple of months)&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
A list of regulars, sorted by nick, and their normal timezones (winter/summer).&lt;br /&gt;
&lt;br /&gt;
* {{irc user|Adactio|adactio|+0000/+0100}}&lt;br /&gt;
* {{irc user|Annevk|annevk|.../...}}&lt;br /&gt;
* {{irc user|Dglazkov|dglazkov|.../...}}&lt;br /&gt;
* {{irc user|Domenic|Domenic|-0500/-0400}}&lt;br /&gt;
* {{irc user|GPHemsley|GPHemsley|-0500/-0400}}&lt;br /&gt;
* {{irc user|Hixie|Hixie|-0800/-0700}}&lt;br /&gt;
* {{irc user|EdwardOConnor|hober|-0800/-0700}}&lt;br /&gt;
* {{irc user|Jgraham|jgraham|.../...}}&lt;br /&gt;
* {{irc user|kennyluck|kennyluck|+0800/+0800}}&lt;br /&gt;
* {{irc user|Mathias|matjas|.../...}}&lt;br /&gt;
* {{irc user|Ms2ger|Ms2ger|.../...}}&lt;br /&gt;
* {{irc user|Mjs|othermaciej|-0800/-0700}}&lt;br /&gt;
* {{irc user|ShaneHudson|ShaneHudson|+0000/+0100}}&lt;br /&gt;
* {{irc user|Xanthir|tabatkins|-0800/-0700}}&lt;br /&gt;
* {{irc user|Tantek|tantek|-0800/-0700}}&lt;br /&gt;
* {{irc user|Yuhong|yuhong|-0800/-0700}}&lt;br /&gt;
* {{irc user|Wilto|Wilto|.../...}}&lt;br /&gt;
* {{irc user|Zcorpan|zcorpan|.../...}}&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=DOM_XSLTProcessor&amp;diff=10045</id>
		<title>DOM XSLTProcessor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=DOM_XSLTProcessor&amp;diff=10045"/>
		<updated>2016-02-29T08:27:33Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* Issue for standardization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Issue for standardization ==&lt;br /&gt;
&lt;br /&gt;
https://github.com/whatwg/dom/issues/181&lt;br /&gt;
&lt;br /&gt;
== IDL ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Constructor]&lt;br /&gt;
interface XSLTProcessor {&lt;br /&gt;
  void importStylesheet(Node style);&lt;br /&gt;
  DocumentFragment transformToFragment(Node source, Document output);&lt;br /&gt;
  Document transformToDocument(Node source);&lt;br /&gt;
  void setParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName, any value);&lt;br /&gt;
  any getParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName);&lt;br /&gt;
  void removeParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName);&lt;br /&gt;
  void clearParameters();&lt;br /&gt;
  void reset();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MDN ==&lt;br /&gt;
&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=DOM_XSLTProcessor&amp;diff=10044</id>
		<title>DOM XSLTProcessor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=DOM_XSLTProcessor&amp;diff=10044"/>
		<updated>2016-02-29T08:24:35Z</updated>

		<summary type="html">&lt;p&gt;Annevk: /* IDL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Issue for standardization ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== IDL ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Constructor]&lt;br /&gt;
interface XSLTProcessor {&lt;br /&gt;
  void importStylesheet(Node style);&lt;br /&gt;
  DocumentFragment transformToFragment(Node source, Document output);&lt;br /&gt;
  Document transformToDocument(Node source);&lt;br /&gt;
  void setParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName, any value);&lt;br /&gt;
  any getParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName);&lt;br /&gt;
  void removeParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName);&lt;br /&gt;
  void clearParameters();&lt;br /&gt;
  void reset();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MDN ==&lt;br /&gt;
&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=DOM_XSLTProcessor&amp;diff=10043</id>
		<title>DOM XSLTProcessor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=DOM_XSLTProcessor&amp;diff=10043"/>
		<updated>2016-02-29T08:24:21Z</updated>

		<summary type="html">&lt;p&gt;Annevk: Created page with &amp;quot;== Issue for standardization ==  ...  == IDL ==  &amp;lt;pre&amp;gt; Constructor] interface XSLTProcessor {   void importStylesheet(Node style);   DocumentFragment transformToFragment(Node...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Issue for standardization ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== IDL ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Constructor]&lt;br /&gt;
interface XSLTProcessor {&lt;br /&gt;
  void importStylesheet(Node style);&lt;br /&gt;
  DocumentFragment transformToFragment(Node source, Document output);&lt;br /&gt;
  Document transformToDocument(Node source);&lt;br /&gt;
  void setParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName, any value);&lt;br /&gt;
  any getParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName);&lt;br /&gt;
  void removeParameter([TreatNullAs=EmptyString] DOMString namespaceURI, DOMString localName);&lt;br /&gt;
  void clearParameters();&lt;br /&gt;
  void reset();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MDN ==&lt;br /&gt;
&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor&lt;/div&gt;</summary>
		<author><name>Annevk</name></author>
	</entry>
</feed>