<?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=Aryeh+Gregor</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=Aryeh+Gregor"/>
	<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/wiki/Special:Contributions/Aryeh_Gregor"/>
	<updated>2026-04-23T23:38:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTTP&amp;diff=8550</id>
		<title>HTTP</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTTP&amp;diff=8550"/>
		<updated>2012-10-17T08:45:42Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Assume Vary: User-Agent */ This doesn&amp;#039;t make sense&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an attempt to document some discrepancies between browsers and RFC 2616 (and its successor, RFC 2616) because the HTTP WG seems unwilling to resolve those issues. Hopefully one day someone writes HTTP5 and takes this into account.&lt;br /&gt;
&lt;br /&gt;
== Redirects ==&lt;br /&gt;
&lt;br /&gt;
For 301 and 302 redirects browsers uniformly ignore HTTP and use GET for the subsequent request if the initial request uses an unsafe method. (And the user is not prompted.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Raised:&#039;&#039;&#039; http://lists.w3.org/Archives/Public/ietf-http-wg/2007JanMar/thread.html#msg225&lt;br /&gt;
&lt;br /&gt;
== Location header ==&lt;br /&gt;
&lt;br /&gt;
Browsers handle relative URIs and URIs with invalid characters in interoperable fashion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Raised:&#039;&#039;&#039; http://lists.w3.org/Archives/Public/ietf-http-wg/2009JanMar/thread.html#msg276&lt;br /&gt;
&lt;br /&gt;
== Content-Location header ==&lt;br /&gt;
&lt;br /&gt;
Browsers cannot support this header.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Raised:&#039;&#039;&#039; http://lists.w3.org/Archives/Public/ietf-http-wg/2006OctDec/thread.html#msg190&lt;br /&gt;
&lt;br /&gt;
This has apparently been fixed by making Content-Location have no UA conformance criteria. (It&#039;s not clear what it&#039;s good for at this point.)&lt;br /&gt;
&lt;br /&gt;
== Accept header ==&lt;br /&gt;
&lt;br /&gt;
Accept header should preferably be done without spaces.&lt;br /&gt;
&lt;br /&gt;
(not raised, odinho: I came across a site that didn&#039;t like the spaces, the developer said he&#039;d gotten it off php.net or stackoverflow. He fixed the site. This could be disputed.)&lt;br /&gt;
&lt;br /&gt;
== Requiring two interoperable browser implementations ==&lt;br /&gt;
&lt;br /&gt;
To proof that RFC 2616 can be implemented there should be two compatible implementations in browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Raised:&#039;&#039;&#039; http://lists.w3.org/Archives/Public/ietf-http-wg/2007JanMar/0222.html&lt;br /&gt;
&lt;br /&gt;
== Assume Vary: User-Agent ==&lt;br /&gt;
&lt;br /&gt;
UAs and intermediary caches should act as if all responses had Vary: User-Agent specified since many pages on the Web serve different content depending on the User-Agent header but do not bother specifying Vary: User-Agent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Raised:&#039;&#039;&#039; http://lists.w3.org/Archives/Public/ietf-http-wg/2012OctDec/0114.html&lt;br /&gt;
&lt;br /&gt;
:You may as well not have a cache if you do this.  It&#039;s hard to find two users with the same User-Agent string if you try.  It varies based on minor browser version, major OS version, and in old IE doesn&#039;t it vary based on installed plugins?  Yes, some pages will break if you run a transparent caching proxy and don&#039;t vary based on UA, but it will be a small minority and somewhat random, and generally they&#039;ll fix themselves if you force-refresh.  (Browsers send Cache-Control: no-cache when you force-refresh, which will skip a normally-configured cache.)  Even if you vary based on UA, caching proxies will break some pages, because some sites serve incorrect caching headers and a caching proxy will make you hit these more often even in the single-user case.  (E.g., hitting refresh will skip browser cache for the current page but not proxy cache, right?)&amp;lt;p&amp;gt;So basically, this is a performance vs. correctness tradeoff, and the correct answer for the vast majority of users is not to have a caching proxy at all.  Some will want a caching proxy that serves them some incorrect pages.  No one wants a caching proxy that varies based on UA, because then the cache will be useless.  The only case I could think of where this might make sense is in an office with a homogeneous browser environment, which wants caching for its standard browsers (which all have the same UA string), but still wants to be relatively correct for people using Wi-Fi on their laptops with different browsers.  But it&#039;s not something that makes any sense to require across the board. [[User:Aryeh Gregor|Aryeh Gregor]] 08:45, 17 October 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Category:Spec_coordination]]&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Editing_use-cases&amp;diff=7906</id>
		<title>Editing use-cases</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Editing_use-cases&amp;diff=7906"/>
		<updated>2012-01-26T17:10:32Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Create page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a page to document use-cases for editing that are not well served by the current contenteditable feature as specced or implemented.&lt;br /&gt;
&lt;br /&gt;
Interesting link: http://www.mediawiki.org/wiki/Special:VisualEditorSandbox&lt;br /&gt;
&lt;br /&gt;
Initial version of this page is thanks to feedback from Roan Kattouw and Trevor Parscal of Wikimedia.&lt;br /&gt;
&lt;br /&gt;
== An atomic chunk of HTML ==&lt;br /&gt;
&#039;&#039;&#039;Use-case:&#039;&#039;&#039; A Wikipedia page has embedded templates or other data with special meaning, such as a reference or a &amp;quot;[citation needed]&amp;quot; link.  It must not be possible for the user to place the cursor inside the chunk of HTML, or to modify it internally in any way.  If the user attempts to move, copy, or delete the chunk of HTML, the author must be allowed to decide what happens.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; The chunk of HTML should be marked contenteditable=false.  Per spec, this will not allow it to be modified or deleted, but will let it be moved.  But more features are needed for authors to be able to control moving, copying, and deleting.  For instance, it might be desirable to let it be deleted if the author backspaces over it.  It might also be desirable to specify special behavior if it&#039;s copied.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7593</id>
		<title>UndoManager Problem Descriptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7593"/>
		<updated>2011-11-07T20:24:09Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Collaborative editing */ Update requirement to leave it up in the air&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use-cases from [http://rniwa.com/editing/undomanager-usecases.html rniwa&#039;s page] and [http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-October/033630.html a whatwg thread], patterned after [[Microdata Problem Descriptions]].&lt;br /&gt;
&lt;br /&gt;
General principles:&lt;br /&gt;
&lt;br /&gt;
* Try to make every use-case as easy as possible to deal with.  Don&#039;t make the common use-cases harder for the sake of allowing rarer use-cases.&lt;br /&gt;
* Don&#039;t allow any functionality that isn&#039;t required by a use-case.  This adds complexity for no clear reason.  If a use-case we didn&#039;t think of comes up later, add new functionality then, when we know exactly what we&#039;re looking for.&lt;br /&gt;
&lt;br /&gt;
== Managing DOM changes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A site wants to allow adding a special type of site-specific markup, say &amp;amp;lt;span class=foo&amp;gt;.&lt;br /&gt;
* A rich text editor provides a source code view that lets users edit HTML directly. In such an app, going to a source code view, edit HTML, and coming back to WYSIWYG view should be treated as one editing operation.&lt;br /&gt;
* A code editor that implements auto-completion should be able to use user agent&#039;s undo transaction history.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible to associate a set of DOM changes with a custom entry in the undo history.  The changes might be to non-editable areas.&lt;br /&gt;
* The author must have control over exactly what appears in the undo history.  It must be possible to have multiple different DOM changes be one undo history entry, or multiple ones, with customizable labels.&lt;br /&gt;
* The author should have to do no special work to undo the action.  The UA should track and undo the DOM changes just like for any command.&lt;br /&gt;
* Nothing in these use-cases requires that the author be able to specify any special action to be taken on undo/redo.  All relevant state is in the DOM, or could be put in the DOM, so the UA can automatically handle undo/redo.&lt;br /&gt;
&lt;br /&gt;
== Separate undo histories ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A rich text editor has a widget to draw a vector-based illustration. The user should be able to open the widget and modify the illustration while leaving the undo transaction history of the main editor intact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The undo history for the vector image must not be intermixed with the undo history for the rest of the page.&lt;br /&gt;
&lt;br /&gt;
== Non-DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A canvas-based drawing app that uses server-side storage. Such an application should provide undo and redo menu items on the user agent&#039;s native UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible for the author to track non-DOM state (such as canvas operations) in addition to just DOM state.&lt;br /&gt;
* It must be possible for the author to run arbitrary JavaScript, such as XHR, on apply/unapply/reapply of a transaction.&lt;br /&gt;
* DOM state should still be controlled by the UA.  Nothing in the use-case implies that the author wants to make any DOM changes that aren&#039;t undone/redone like any other DOM changes.  The author must not be forced to deal with manually handling DOM state just because they want to handle non-DOM state.&lt;br /&gt;
&lt;br /&gt;
== Collaborative editing ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Real-time syncing of rich-text edited data with simultaneous multi-user editing. Data pulled in from other users should modify the DOM, but not be included in the undo history.  When a user tries to undo something, it needs to undo only that user&#039;s changes, using some type of intelligent merge algorithm.&lt;br /&gt;
* Collaborative editing of non-rich-text things, such as canvas, as in the previous use-cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The author must be able to decide exactly how undo/redo are executed if they so choose.  They might want to use application-specific heuristics to undo changes when there are conflicts.&lt;br /&gt;
* If browsers try to merge changes themselves, the algorithm should be well-defined if possible.  Otherwise it will just confuse authors and not be useful, because it will succeed in some browsers and fail in others, or have unpredictable results.  &#039;&#039;&#039;Issue:&#039;&#039;&#039; Is this doable?  Refer to mailing list discussion.&lt;br /&gt;
* It must be possible to have some parts of the page author-controlled, and some parts of the page UA-controlled.  For instance, there might be a collaborative editor on the same page as some unrelated inputs.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the parts of the page that are collaboratively edited, there is no reason for the UA to make any automatic DOM changes at all.&lt;br /&gt;
&lt;br /&gt;
== Author-managed UI ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A standard rich-text editor with various buttons and drop-downs.  Undo/redo should not automatically affect any of the UI&#039;s state.  E.g., if the user selects &amp;quot;red&amp;quot; in the color drop-down, undo should not change it back to the previous selection.&lt;br /&gt;
* A slideshow app.  There are multiple slides, each of which contains some editable content.  The user is allowed to do rich-text editing on the slides using contenteditable, but also take other actions like adding or removing slides.  There is UI that gives a list of slides, and some user actions will modify it (such as adding or removing a slide).  However, some actions that are not tracked by undo/redo might also modify the UI, such as moving to the next or previous slide.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The browser must not touch the UI parts of the page, but still has to fully manage the non-UI parts.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the UI parts of the page, there is no reason for the UA to make any automatic DOM changes at all.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7591</id>
		<title>UndoManager Problem Descriptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7591"/>
		<updated>2011-11-07T20:07:07Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Update one requirement with a key clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use-cases from [http://rniwa.com/editing/undomanager-usecases.html rniwa&#039;s page] and [http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-October/033630.html a whatwg thread], patterned after [[Microdata Problem Descriptions]].&lt;br /&gt;
&lt;br /&gt;
General principles:&lt;br /&gt;
&lt;br /&gt;
* Try to make every use-case as easy as possible to deal with.  Don&#039;t make the common use-cases harder for the sake of allowing rarer use-cases.&lt;br /&gt;
* Don&#039;t allow any functionality that isn&#039;t required by a use-case.  This adds complexity for no clear reason.  If a use-case we didn&#039;t think of comes up later, add new functionality then, when we know exactly what we&#039;re looking for.&lt;br /&gt;
&lt;br /&gt;
== Managing DOM changes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A site wants to allow adding a special type of site-specific markup, say &amp;amp;lt;span class=foo&amp;gt;.&lt;br /&gt;
* A rich text editor provides a source code view that lets users edit HTML directly. In such an app, going to a source code view, edit HTML, and coming back to WYSIWYG view should be treated as one editing operation.&lt;br /&gt;
* A code editor that implements auto-completion should be able to use user agent&#039;s undo transaction history.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible to associate a set of DOM changes with a custom entry in the undo history.  The changes might be to non-editable areas.&lt;br /&gt;
* The author must have control over exactly what appears in the undo history.  It must be possible to have multiple different DOM changes be one undo history entry, or multiple ones, with customizable labels.&lt;br /&gt;
* The author should have to do no special work to undo the action.  The UA should track and undo the DOM changes just like for any command.&lt;br /&gt;
* Nothing in these use-cases requires that the author be able to specify any special action to be taken on undo/redo.  All relevant state is in the DOM, or could be put in the DOM, so the UA can automatically handle undo/redo.&lt;br /&gt;
&lt;br /&gt;
== Separate undo histories ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A rich text editor has a widget to draw a vector-based illustration. The user should be able to open the widget and modify the illustration while leaving the undo transaction history of the main editor intact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The undo history for the vector image must not be intermixed with the undo history for the rest of the page.&lt;br /&gt;
&lt;br /&gt;
== Non-DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A canvas-based drawing app that uses server-side storage. Such an application should provide undo and redo menu items on the user agent&#039;s native UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible for the author to track non-DOM state (such as canvas operations) in addition to just DOM state.&lt;br /&gt;
* It must be possible for the author to run arbitrary JavaScript, such as XHR, on apply/unapply/reapply of a transaction.&lt;br /&gt;
* DOM state should still be controlled by the UA.  Nothing in the use-case implies that the author wants to make any DOM changes that aren&#039;t undone/redone like any other DOM changes.  The author must not be forced to deal with manually handling DOM state just because they want to handle non-DOM state.&lt;br /&gt;
&lt;br /&gt;
== Collaborative editing ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Real-time syncing of rich-text edited data with simultaneous multi-user editing. Data pulled in from other users should modify the DOM, but not be included in the undo history.  When a user tries to undo something, it needs to undo only that user&#039;s changes, using some type of intelligent merge algorithm.&lt;br /&gt;
* Collaborative editing of non-rich-text things, such as canvas, as in the previous use-cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The author must be able to decide exactly how undo/redo are executed if they so choose.  They might want to use application-specific heuristics to undo changes when there are conflicts.&lt;br /&gt;
* If browsers try to merge changes themselves, the algorithm should be well-defined if possible.  Otherwise it will just confuse authors and not be useful, because it will succeed in some browsers and fail in others, or have unpredictable results.  However, this might be impossible to attain, because authors can always make DOM changes outside of any transaction, and thereby mess everything up.&lt;br /&gt;
* It must be possible to have some parts of the page author-controlled, and some parts of the page UA-controlled.  For instance, there might be a collaborative editor on the same page as some unrelated inputs.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the parts of the page that are collaboratively edited, there is no reason for the UA to make any automatic DOM changes at all.&lt;br /&gt;
&lt;br /&gt;
== Author-managed UI ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A standard rich-text editor with various buttons and drop-downs.  Undo/redo should not automatically affect any of the UI&#039;s state.  E.g., if the user selects &amp;quot;red&amp;quot; in the color drop-down, undo should not change it back to the previous selection.&lt;br /&gt;
* A slideshow app.  There are multiple slides, each of which contains some editable content.  The user is allowed to do rich-text editing on the slides using contenteditable, but also take other actions like adding or removing slides.  There is UI that gives a list of slides, and some user actions will modify it (such as adding or removing a slide).  However, some actions that are not tracked by undo/redo might also modify the UI, such as moving to the next or previous slide.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The browser must not touch the UI parts of the page, but still has to fully manage the non-UI parts.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the UI parts of the page, there is no reason for the UA to make any automatic DOM changes at all.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7589</id>
		<title>UndoManager Problem Descriptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7589"/>
		<updated>2011-11-07T19:39:48Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: More adjustment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use-cases from [http://rniwa.com/editing/undomanager-usecases.html rniwa&#039;s page] and [http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-October/033630.html a whatwg thread], patterned after [[Microdata Problem Descriptions]].&lt;br /&gt;
&lt;br /&gt;
General principles:&lt;br /&gt;
&lt;br /&gt;
* Try to make every use-case as easy as possible to deal with.  Don&#039;t make the common use-cases harder for the sake of allowing rarer use-cases.&lt;br /&gt;
* Don&#039;t allow any functionality that isn&#039;t required by a use-case.  This adds complexity for no clear reason.  If a use-case we didn&#039;t think of comes up later, add new functionality then, when we know exactly what we&#039;re looking for.&lt;br /&gt;
&lt;br /&gt;
== Managing DOM changes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A site wants to allow adding a special type of site-specific markup, say &amp;amp;lt;span class=foo&amp;gt;.&lt;br /&gt;
* A rich text editor provides a source code view that lets users edit HTML directly. In such an app, going to a source code view, edit HTML, and coming back to WYSIWYG view should be treated as one editing operation.&lt;br /&gt;
* A code editor that implements auto-completion should be able to use user agent&#039;s undo transaction history.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible to associate a set of DOM changes with a custom entry in the undo history.  The changes might be to non-editable areas.&lt;br /&gt;
* The author must have control over exactly what appears in the undo history.  It must be possible to have multiple different DOM changes be one undo history entry, or multiple ones, with customizable labels.&lt;br /&gt;
* The author should have to do no special work to undo the action.  The UA should track and undo the DOM changes just like for any command.&lt;br /&gt;
* Nothing in these use-cases requires that the author be able to specify any special action to be taken on undo/redo.  All relevant state is in the DOM, or could be put in the DOM, so the UA can automatically handle undo/redo.&lt;br /&gt;
&lt;br /&gt;
== Separate undo histories ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A rich text editor has a widget to draw a vector-based illustration. The user should be able to open the widget and modify the illustration while leaving the undo transaction history of the main editor intact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The undo history for the vector image must not be intermixed with the undo history for the rest of the page.&lt;br /&gt;
&lt;br /&gt;
== Non-DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A canvas-based drawing app that uses server-side storage. Such an application should provide undo and redo menu items on the user agent&#039;s native UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible for the author to track non-DOM state (such as canvas operations) in addition to just DOM state.&lt;br /&gt;
* It must be possible for the author to run arbitrary JavaScript, such as XHR, on apply/unapply/reapply of a transaction.&lt;br /&gt;
* DOM state should still be controlled by the UA.  Nothing in the use-case implies that the author wants to make any DOM changes that aren&#039;t undone/redone like any other DOM changes.  The author must not be forced to deal with manually handling DOM state just because they want to handle non-DOM state.&lt;br /&gt;
&lt;br /&gt;
== Collaborative editing ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Real-time syncing of rich-text edited data with simultaneous multi-user editing. Data pulled in from other users should modify the DOM, but not be included in the undo history.  When a user tries to undo something, it needs to undo only that user&#039;s changes, using some type of intelligent merge algorithm.&lt;br /&gt;
* Collaborative editing of non-rich-text things, such as canvas, as in the previous use-cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The author must be able to decide exactly how undo/redo are executed if they so choose.  They might want to use application-specific heuristics to undo changes when there are conflicts.&lt;br /&gt;
* If browsers try to merge changes themselves, the algorithm must be well-defined.  Otherwise it will just confuse authors and not be useful, because it will succeed in some browsers and fail in others, or have unpredictable results.&lt;br /&gt;
* It must be possible to have some parts of the page author-controlled, and some parts of the page UA-controlled.  For instance, there might be a collaborative editor on the same page as some unrelated inputs.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the parts of the page that are collaboratively edited, there is no reason for the UA to make any automatic DOM changes at all.&lt;br /&gt;
&lt;br /&gt;
== Author-managed UI ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A standard rich-text editor with various buttons and drop-downs.  Undo/redo should not automatically affect any of the UI&#039;s state.  E.g., if the user selects &amp;quot;red&amp;quot; in the color drop-down, undo should not change it back to the previous selection.&lt;br /&gt;
* A slideshow app.  There are multiple slides, each of which contains some editable content.  The user is allowed to do rich-text editing on the slides using contenteditable, but also take other actions like adding or removing slides.  There is UI that gives a list of slides, and some user actions will modify it (such as adding or removing a slide).  However, some actions that are not tracked by undo/redo might also modify the UI, such as moving to the next or previous slide.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The browser must not touch the UI parts of the page, but still has to fully manage the non-UI parts.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the UI parts of the page, there is no reason for the UA to make any automatic DOM changes at all.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7588</id>
		<title>UndoManager Problem Descriptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7588"/>
		<updated>2011-11-07T19:33:42Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Refine one of the use-cases&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use-cases from [http://rniwa.com/editing/undomanager-usecases.html rniwa&#039;s page] and [http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-October/033630.html a whatwg thread], patterned after [[Microdata Problem Descriptions]].&lt;br /&gt;
&lt;br /&gt;
General principles:&lt;br /&gt;
&lt;br /&gt;
* Try to make every use-case as easy as possible to deal with.  Don&#039;t make the common use-cases harder for the sake of allowing rarer use-cases.&lt;br /&gt;
* Don&#039;t allow any functionality that isn&#039;t required by a use-case.  This adds complexity for no clear reason.  If a use-case we didn&#039;t think of comes up later, add new functionality then, when we know exactly what we&#039;re looking for.&lt;br /&gt;
&lt;br /&gt;
== Managing DOM changes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A site wants to allow adding a special type of site-specific markup, say &amp;amp;lt;span class=foo&amp;gt;.&lt;br /&gt;
* A rich text editor provides a source code view that lets users edit HTML directly. In such an app, going to a source code view, edit HTML, and coming back to WYSIWYG view should be treated as one editing operation.&lt;br /&gt;
* A code editor that implements auto-completion should be able to use user agent&#039;s undo transaction history.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible to associate a set of DOM changes with a custom entry in the undo history.  The changes might be to non-editable areas.&lt;br /&gt;
* The author must have control over exactly what appears in the undo history.  It must be possible to have multiple different DOM changes be one undo history entry, or multiple ones, with customizable labels.&lt;br /&gt;
* The author should have to do no special work to undo the action.  The UA should track and undo the DOM changes just like for any command.&lt;br /&gt;
* Nothing in these use-cases requires that the author be able to specify any special action to be taken on undo/redo.  All relevant state is in the DOM, or could be put in the DOM, so the UA can automatically handle undo/redo.&lt;br /&gt;
&lt;br /&gt;
== Separate undo histories ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A rich text editor has a widget to draw a vector-based illustration. The user should be able to open the widget and modify the illustration while leaving the undo transaction history of the main editor intact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The undo history for the vector image must not be intermixed with the undo history for the rest of the page.&lt;br /&gt;
&lt;br /&gt;
== Non-DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A canvas-based drawing app that uses server-side storage. Such an application should provide undo and redo menu items on the user agent&#039;s native UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible for the author to track non-DOM state (such as canvas operations) in addition to just DOM state.&lt;br /&gt;
* It must be possible for the author to run arbitrary JavaScript, such as XHR, on apply/unapply/reapply of a transaction.&lt;br /&gt;
* DOM state should still be controlled by the UA.  Nothing in the use-case implies that the author wants to make any DOM changes that aren&#039;t undone/redone like any other DOM changes.  The author must not be forced to deal with manually handling DOM state just because they want to handle non-DOM state.&lt;br /&gt;
&lt;br /&gt;
== Full custom control of DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Real-time syncing of rich-text edited data with simultaneous multi-user editing. Data pulled in from other users should modify the DOM, but not be included in the undo history.  When a user tries to undo something, it needs to undo only that user&#039;s changes, using some type of intelligent merge algorithm.&lt;br /&gt;
* Collaborative editing of non-rich-text things, such as canvas, as in the previous use-cases.&lt;br /&gt;
* A slideshow app.  There are multiple slides, each of which contains some editable content.  The user is allowed to do rich-text editing on the slides using contenteditable, but also take other actions like adding or removing slides.  There is UI that gives a list of slides, and some user actions will modify it (such as adding or removing a slide).  However, some actions that are not tracked by undo/redo might also modify the UI, such as moving to the next or previous slide.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The author must be able to decide exactly how undo/redo are executed if they so choose.  They might want to use application-specific heuristics to undo changes when there are conflicts.&lt;br /&gt;
* If browsers try to merge changes themselves, the algorithm must be well-defined.  Otherwise it will just confuse authors and not be useful, because it will succeed in some browsers and fail in others, or have unpredictable results.&lt;br /&gt;
* It must be possible to have some parts of the page author-controlled, and some parts of the page UA-controlled.  For instance, there might be a collaborative editor on the same page as some unrelated inputs.  Likewise for the slideshow app.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the parts of the page that are collaboratively edited, there is no reason for the UA to make any automatic DOM changes at all.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7587</id>
		<title>UndoManager Problem Descriptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7587"/>
		<updated>2011-11-07T19:27:31Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Complete an unfinished sentence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use-cases from [http://rniwa.com/editing/undomanager-usecases.html rniwa&#039;s page] and [http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-October/033630.html a whatwg thread], patterned after [[Microdata Problem Descriptions]].&lt;br /&gt;
&lt;br /&gt;
General principles:&lt;br /&gt;
&lt;br /&gt;
* Try to make every use-case as easy as possible to deal with.  Don&#039;t make the common use-cases harder for the sake of allowing rarer use-cases.&lt;br /&gt;
* Don&#039;t allow any functionality that isn&#039;t required by a use-case.  This adds complexity for no clear reason.  If a use-case we didn&#039;t think of comes up later, add new functionality then, when we know exactly what we&#039;re looking for.&lt;br /&gt;
&lt;br /&gt;
== Managing DOM changes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A site wants to allow adding a special type of site-specific markup, say &amp;amp;lt;span class=foo&amp;gt;.&lt;br /&gt;
* A slideshow app.  There are multiple slides, each of which contains some editable content.  The user is allowed to do rich-text editing on the slides using contenteditable, but also take other actions like adding or removing slides.  All changes are either in the DOM, or could be stored in the DOM (using data-* or such).&lt;br /&gt;
* A rich text editor provides a source code view that lets users edit HTML directly. In such an app, going to a source code view, edit HTML, and coming back to WYSIWYG view should be treated as one editing operation.&lt;br /&gt;
* A code editor that implements auto-completion should be able to use user agent&#039;s undo transaction history.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible to associate a set of DOM changes with a custom entry in the undo history.  The changes might be to non-editable areas.&lt;br /&gt;
* The author must have control over exactly what appears in the undo history.  It must be possible to have multiple different DOM changes be one undo history entry, or multiple ones, with customizable labels.&lt;br /&gt;
* The author should have to do no special work to undo the action.  The UA should track and undo the DOM changes just like for any command.&lt;br /&gt;
* Nothing in these use-cases requires that the author be able to specify any special action to be taken on undo/redo.  All relevant state is in the DOM, or could be put in the DOM, so the UA can automatically handle undo/redo.&lt;br /&gt;
&lt;br /&gt;
== Separate undo histories ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A rich text editor has a widget to draw a vector-based illustration. The user should be able to open the widget and modify the illustration while leaving the undo transaction history of the main editor intact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The undo history for the vector image must not be intermixed with the undo history for the rest of the page.&lt;br /&gt;
&lt;br /&gt;
== Non-DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A canvas-based drawing app that uses server-side storage. Such an application should provide undo and redo menu items on the user agent&#039;s native UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible for the author to track non-DOM state (such as canvas operations) in addition to just DOM state.&lt;br /&gt;
* It must be possible for the author to run arbitrary JavaScript, such as XHR, on apply/unapply/reapply of a transaction.&lt;br /&gt;
* DOM state should still be controlled by the UA.  Nothing in the use-case implies that the author wants to make any DOM changes that aren&#039;t undone/redone like any other DOM changes.  The author must not be forced to deal with manually handling DOM state just because they want to handle non-DOM state.&lt;br /&gt;
&lt;br /&gt;
== Custom control of DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Real-time syncing of rich-text edited data with simultaneous multi-user editing. Data pulled in from other users should modify the DOM, but not be included in the undo history.  When a user tries to undo something, it needs to undo only that user&#039;s changes, using some type of intelligent merge algorithm.&lt;br /&gt;
* Collaborative editing of non-rich-text things, such as canvas, as in the previous use-cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The author must be able to decide exactly how undo/redo are executed if they so choose.  They might want to use application-specific heuristics to undo changes when there are conflicts.&lt;br /&gt;
* If browsers try to merge changes themselves, the algorithm must be well-defined.  Otherwise it will just confuse authors and not be useful, because it will succeed in some browsers and fail in others, or have unpredictable results.&lt;br /&gt;
* It must be possible to have some parts of the page author-controlled, and some parts of the page UA-controlled.  For instance, there might be a collaborative editor on the same page as some unrelated inputs.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the parts of the page that are collaboratively edited, there is no reason for the UA to make any automatic DOM changes at all.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7586</id>
		<title>UndoManager Problem Descriptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=UndoManager_Problem_Descriptions&amp;diff=7586"/>
		<updated>2011-11-07T19:21:32Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Create page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use-cases from [http://rniwa.com/editing/undomanager-usecases.html rniwa&#039;s page] and [http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-October/033630.html a whatwg thread], patterned after [[Microdata Problem Descriptions]].&lt;br /&gt;
&lt;br /&gt;
General principles:&lt;br /&gt;
&lt;br /&gt;
* Try to make every use-case as easy as possible to deal with.  Don&#039;t make the common use-cases harder for the sake of allowing rarer use-cases.&lt;br /&gt;
* Don&#039;t allow any functionality that &lt;br /&gt;
&lt;br /&gt;
== Managing DOM changes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A site wants to allow adding a special type of site-specific markup, say &amp;amp;lt;span class=foo&amp;gt;.&lt;br /&gt;
* A slideshow app.  There are multiple slides, each of which contains some editable content.  The user is allowed to do rich-text editing on the slides using contenteditable, but also take other actions like adding or removing slides.  All changes are either in the DOM, or could be stored in the DOM (using data-* or such).&lt;br /&gt;
* A rich text editor provides a source code view that lets users edit HTML directly. In such an app, going to a source code view, edit HTML, and coming back to WYSIWYG view should be treated as one editing operation.&lt;br /&gt;
* A code editor that implements auto-completion should be able to use user agent&#039;s undo transaction history.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible to associate a set of DOM changes with a custom entry in the undo history.  The changes might be to non-editable areas.&lt;br /&gt;
* The author must have control over exactly what appears in the undo history.  It must be possible to have multiple different DOM changes be one undo history entry, or multiple ones, with customizable labels.&lt;br /&gt;
* The author should have to do no special work to undo the action.  The UA should track and undo the DOM changes just like for any command.&lt;br /&gt;
* Nothing in these use-cases requires that the author be able to specify any special action to be taken on undo/redo.  All relevant state is in the DOM, or could be put in the DOM, so the UA can automatically handle undo/redo.&lt;br /&gt;
&lt;br /&gt;
== Separate undo histories ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A rich text editor has a widget to draw a vector-based illustration. The user should be able to open the widget and modify the illustration while leaving the undo transaction history of the main editor intact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The undo history for the vector image must not be intermixed with the undo history for the rest of the page.&lt;br /&gt;
&lt;br /&gt;
== Non-DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* A canvas-based drawing app that uses server-side storage. Such an application should provide undo and redo menu items on the user agent&#039;s native UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* It must be possible for the author to track non-DOM state (such as canvas operations) in addition to just DOM state.&lt;br /&gt;
* It must be possible for the author to run arbitrary JavaScript, such as XHR, on apply/unapply/reapply of a transaction.&lt;br /&gt;
* DOM state should still be controlled by the UA.  Nothing in the use-case implies that the author wants to make any DOM changes that aren&#039;t undone/redone like any other DOM changes.  The author must not be forced to deal with manually handling DOM state just because they want to handle non-DOM state.&lt;br /&gt;
&lt;br /&gt;
== Custom control of DOM state ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scenarios:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Real-time syncing of rich-text edited data with simultaneous multi-user editing. Data pulled in from other users should modify the DOM, but not be included in the undo history.  When a user tries to undo something, it needs to undo only that user&#039;s changes, using some type of intelligent merge algorithm.&lt;br /&gt;
* Collaborative editing of non-rich-text things, such as canvas, as in the previous use-cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The author must be able to decide exactly how undo/redo are executed if they so choose.  They might want to use application-specific heuristics to undo changes when there are conflicts.&lt;br /&gt;
* If browsers try to merge changes themselves, the algorithm must be well-defined.  Otherwise it will just confuse authors and not be useful, because it will succeed in some browsers and fail in others, or have unpredictable results.&lt;br /&gt;
* It must be possible to have some parts of the page author-controlled, and some parts of the page UA-controlled.  For instance, there might be a collaborative editor on the same page as some unrelated inputs.&lt;br /&gt;
* Nothing in the use-case requires that changes to any one node be tracked by both the UA and the author.  In the parts of the page that are collaboratively edited, there is no reason for the UA to make any automatic DOM changes at all.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Bugzilla_conventions&amp;diff=6601</id>
		<title>Bugzilla conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Bugzilla_conventions&amp;diff=6601"/>
		<updated>2011-06-24T17:06:35Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Priorities */ Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the conventions used for bugs filed in the W3C Bugzilla for specs also maintained by the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Subject prefixes ==&lt;br /&gt;
&lt;br /&gt;
Some specific topics have prefixes in the bug summaries to help group the bugs.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;&amp;amp;lt;video&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:bugs relating to  &amp;amp;lt;video&amp;gt;, &amp;amp;lt;audio&amp;gt;, HTMLMediaElement, Controller, WebVTT, WebRTC (PeerConnection and Stream), and closely related topics.&lt;br /&gt;
;&#039;&#039;&#039;WF2:&#039;&#039;&#039;&lt;br /&gt;
:bugs relating to form controls.&lt;br /&gt;
;&#039;&#039;&#039;WF3:&#039;&#039;&#039;&lt;br /&gt;
:feature requests relating to form controls.&lt;br /&gt;
;&#039;&#039;&#039;PUB:&#039;&#039;&#039;&lt;br /&gt;
:something relating to the spec publication process (including anolis, spec splitter, the START and END markers, etc)&lt;br /&gt;
&lt;br /&gt;
== Priorities ==&lt;br /&gt;
&lt;br /&gt;
See [http://lists.w3.org/Archives/Public/public-html/2011Jun/0315.html bug priority policy according to the chairs].  Initial commenters are only allowed to set priority to P3 or lower.  Editors and editorial assistants can change it freely.  Chairs can decide on a final priority.  P1 is very urgent.  P2 or P3 is for technical comments except possibly feature requests.  P4 or P5 is editorial or non-technical, or feature requests.&lt;br /&gt;
&lt;br /&gt;
== Severities ==&lt;br /&gt;
&lt;br /&gt;
All bugs should be normal severity by default. Typos, grammar mistakes that don&#039;t affect normative status, and other such trivial matters can be marked &amp;quot;trivial&amp;quot;. Feature requests should be marked &amp;quot;enhancement&amp;quot;. Bugs that affect the parser algorithm should be marked &amp;quot;critical&amp;quot;. Bugs that are immediately affecting implementors should be marked &amp;quot;blocker&amp;quot;. &amp;quot;major&amp;quot; and &amp;quot;minor&amp;quot; are currently unused. The severity field is &amp;quot;owned&amp;quot; by the editor.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
The bug filing system should automatically pick the right component. The components are pretty self-explanatory. WHATWG-specific issues should be moved to the &amp;quot;other Hixie drafts&amp;quot; component.&lt;br /&gt;
&lt;br /&gt;
== Resolutions ==&lt;br /&gt;
&lt;br /&gt;
The boilerplate used when resolving the bug comes from: http://lists.w3.org/Archives/Public/public-html/2009Oct/0680.html&lt;br /&gt;
&lt;br /&gt;
The requirements for use of different resolutions are here:&lt;br /&gt;
&lt;br /&gt;
http://dev.w3.org/html5/decision-policy/decision-policy-v2.html#bug-resolutions&lt;br /&gt;
&lt;br /&gt;
== Helpful query links ==&lt;br /&gt;
&lt;br /&gt;
* [http://goo.gl/Zh9tC List of all open and deferred HTML-related bugs]&lt;br /&gt;
* [http://www.w3.org/Bugs/Public/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=HTML+WG&amp;amp;longdesc_type=allwordssubstr&amp;amp;longdesc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;resolution=LATER&amp;amp;resolution=REMIND&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bug_id_type=anyexact&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0= List of LATERed bugs]. Some of these are commonly duped. In particular [http://www.w3.org/Bugs/Public/show_bug.cgi?id=7798 bug 7798] is TextMetrics.height which is often requested.&lt;br /&gt;
* [http://www.w3.org/Bugs/Public/buglist.cgi?bug_file_loc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_id=&amp;amp;bug_id_type=anyexact&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;component=HTML%20Canvas%202D%20Context%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=HTML%20Microdata%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=HTML5%20spec%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=other%20Hixie%20drafts%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=pre-LC1%20HTML%20Canvas%202D%20Context%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=pre-LC1%20HTML%20Microdata%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=pre-LC1%20HTML5%20spec%20%28editor%3A%20Ian%20Hickson%29&amp;amp;email1=&amp;amp;email2=&amp;amp;emailtype1=substring&amp;amp;emailtype2=substring&amp;amp;field0-0-0=noop&amp;amp;keywords=&amp;amp;keywords_type=allwords&amp;amp;longdesc=&amp;amp;longdesc_type=allwordssubstr&amp;amp;product=HTML%20WG&amp;amp;query_format=advanced&amp;amp;short_desc=&amp;amp;short_desc_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;type0-0-0=noop&amp;amp;value0-0-0=&amp;amp;votes=&amp;amp;query_based_on=&amp;amp;columnlist=bug_severity%2Cpriority%2Creporter%2Cbug_status%2Cresolution%2Cop_sys%2Cshort_desc%2Cchangeddate List of all open bugs in specs edited by Hixie, sorted by ascending last change time]&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Bugzilla_conventions&amp;diff=6597</id>
		<title>Bugzilla conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Bugzilla_conventions&amp;diff=6597"/>
		<updated>2011-06-23T23:04:49Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Helpful query links */ Add a helpful link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the conventions used for bugs filed in the W3C Bugzilla for specs also maintained by the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Subject prefixes ==&lt;br /&gt;
&lt;br /&gt;
Some specific topics have prefixes in the bug summaries to help group the bugs.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;&amp;amp;lt;video&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:bugs relating to  &amp;amp;lt;video&amp;gt;, &amp;amp;lt;audio&amp;gt;, HTMLMediaElement, Controller, WebVTT, WebRTC (PeerConnection and Stream), and closely related topics.&lt;br /&gt;
;&#039;&#039;&#039;WF2:&#039;&#039;&#039;&lt;br /&gt;
:bugs relating to form controls.&lt;br /&gt;
;&#039;&#039;&#039;WF3:&#039;&#039;&#039;&lt;br /&gt;
:feature requests relating to form controls.&lt;br /&gt;
;&#039;&#039;&#039;PUB:&#039;&#039;&#039;&lt;br /&gt;
:something relating to the spec publication process (including anolis, spec splitter, the START and END markers, etc)&lt;br /&gt;
&lt;br /&gt;
== Priorities ==&lt;br /&gt;
&lt;br /&gt;
See [http://lists.w3.org/Archives/Public/public-html/2011Jun/0315.html bug priority policy according to the chairs].  Initial commenters are only allowed to set priority to P3 or lower.  Editors and editorial assistants can change it freely.  Chairs can decide on a final priority.  P1 is very urgent.  P2 or P3 is for technical comments except possible feature requests.  P4 or P5 is editorial or non-technical, or feature requests.&lt;br /&gt;
&lt;br /&gt;
== Severities ==&lt;br /&gt;
&lt;br /&gt;
All bugs should be normal severity by default. Typos, grammar mistakes that don&#039;t affect normative status, and other such trivial matters can be marked &amp;quot;trivial&amp;quot;. Feature requests should be marked &amp;quot;enhancement&amp;quot;. Bugs that affect the parser algorithm should be marked &amp;quot;critical&amp;quot;. Bugs that are immediately affecting implementors should be marked &amp;quot;blocker&amp;quot;. &amp;quot;major&amp;quot; and &amp;quot;minor&amp;quot; are currently unused. The severity field is &amp;quot;owned&amp;quot; by the editor.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
The bug filing system should automatically pick the right component. The components are pretty self-explanatory. WHATWG-specific issues should be moved to the &amp;quot;other Hixie drafts&amp;quot; component.&lt;br /&gt;
&lt;br /&gt;
== Resolutions ==&lt;br /&gt;
&lt;br /&gt;
The boilerplate used when resolving the bug comes from: http://lists.w3.org/Archives/Public/public-html/2009Oct/0680.html&lt;br /&gt;
&lt;br /&gt;
The requirements for use of different resolutions are here:&lt;br /&gt;
&lt;br /&gt;
http://dev.w3.org/html5/decision-policy/decision-policy-v2.html#bug-resolutions&lt;br /&gt;
&lt;br /&gt;
== Helpful query links ==&lt;br /&gt;
&lt;br /&gt;
* [http://goo.gl/Zh9tC List of all open and deferred HTML-related bugs]&lt;br /&gt;
* [http://www.w3.org/Bugs/Public/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=HTML+WG&amp;amp;longdesc_type=allwordssubstr&amp;amp;longdesc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;resolution=LATER&amp;amp;resolution=REMIND&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bug_id_type=anyexact&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0= List of LATERed bugs]. Some of these are commonly duped. In particular [http://www.w3.org/Bugs/Public/show_bug.cgi?id=7798 bug 7798] is TextMetrics.height which is often requested.&lt;br /&gt;
* [http://www.w3.org/Bugs/Public/buglist.cgi?bug_file_loc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_id=&amp;amp;bug_id_type=anyexact&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;component=HTML%20Canvas%202D%20Context%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=HTML%20Microdata%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=HTML5%20spec%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=other%20Hixie%20drafts%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=pre-LC1%20HTML%20Canvas%202D%20Context%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=pre-LC1%20HTML%20Microdata%20%28editor%3A%20Ian%20Hickson%29&amp;amp;component=pre-LC1%20HTML5%20spec%20%28editor%3A%20Ian%20Hickson%29&amp;amp;email1=&amp;amp;email2=&amp;amp;emailtype1=substring&amp;amp;emailtype2=substring&amp;amp;field0-0-0=noop&amp;amp;keywords=&amp;amp;keywords_type=allwords&amp;amp;longdesc=&amp;amp;longdesc_type=allwordssubstr&amp;amp;product=HTML%20WG&amp;amp;query_format=advanced&amp;amp;short_desc=&amp;amp;short_desc_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;type0-0-0=noop&amp;amp;value0-0-0=&amp;amp;votes=&amp;amp;query_based_on=&amp;amp;columnlist=bug_severity%2Cpriority%2Creporter%2Cbug_status%2Cresolution%2Cop_sys%2Cshort_desc%2Cchangeddate List of all open bugs in specs edited by Hixie, sorted by ascending last change time]&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Bugzilla_conventions&amp;diff=6594</id>
		<title>Bugzilla conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Bugzilla_conventions&amp;diff=6594"/>
		<updated>2011-06-23T16:36:34Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Priorities and Severities */ Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the conventions used for bugs filed in the W3C Bugzilla for specs also maintained by the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Subject prefixes ==&lt;br /&gt;
&lt;br /&gt;
Some specific topics have prefixes in the bug summaries to help group the bugs.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;&amp;amp;lt;video&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:bugs relating to  &amp;amp;lt;video&amp;gt;, &amp;amp;lt;audio&amp;gt;, HTMLMediaElement, Controller, WebVTT, WebRTC (PeerConnection and Stream), and closely related topics.&lt;br /&gt;
;&#039;&#039;&#039;WF2:&#039;&#039;&#039;&lt;br /&gt;
:bugs relating to form controls.&lt;br /&gt;
;&#039;&#039;&#039;WF3:&#039;&#039;&#039;&lt;br /&gt;
:feature requests relating to form controls.&lt;br /&gt;
;&#039;&#039;&#039;PUB:&#039;&#039;&#039;&lt;br /&gt;
:something relating to the spec publication process (including anolis, spec splitter, the START and END markers, etc)&lt;br /&gt;
&lt;br /&gt;
== Priorities ==&lt;br /&gt;
&lt;br /&gt;
See [http://lists.w3.org/Archives/Public/public-html/2011Jun/0315.html bug priority policy according to the chairs].  Initial commenters are only allowed to set priority to P3 or lower.  Editors and editorial assistants can change it freely.  Chairs can decide on a final priority.  P1 is very urgent.  P2 or P3 is for technical comments except possible feature requests.  P4 or P5 is editorial or non-technical, or feature requests.&lt;br /&gt;
&lt;br /&gt;
== Severities ==&lt;br /&gt;
&lt;br /&gt;
All bugs should be normal severity by default. Typos, grammar mistakes that don&#039;t affect normative status, and other such trivial matters can be marked &amp;quot;trivial&amp;quot;. Feature requests should be marked &amp;quot;enhancement&amp;quot;. Bugs that affect the parser algorithm should be marked &amp;quot;critical&amp;quot;. Bugs that are immediately affecting implementors should be marked &amp;quot;blocker&amp;quot;. &amp;quot;major&amp;quot; and &amp;quot;minor&amp;quot; are currently unused. The severity field is &amp;quot;owned&amp;quot; by the editor.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
The bug filing system should automatically pick the right component. The components are pretty self-explanatory. WHATWG-specific issues should be moved to the &amp;quot;other Hixie drafts&amp;quot; component.&lt;br /&gt;
&lt;br /&gt;
== Resolutions ==&lt;br /&gt;
&lt;br /&gt;
The boilerplate used when resolving the bug comes from: http://lists.w3.org/Archives/Public/public-html/2009Oct/0680.html&lt;br /&gt;
&lt;br /&gt;
The requirements for use of different resolutions are here:&lt;br /&gt;
&lt;br /&gt;
http://dev.w3.org/html5/decision-policy/decision-policy-v2.html#bug-resolutions&lt;br /&gt;
&lt;br /&gt;
== Helpful query links ==&lt;br /&gt;
&lt;br /&gt;
* [http://goo.gl/Zh9tC List of all open and deferred HTML-related bugs]&lt;br /&gt;
* [http://www.w3.org/Bugs/Public/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=HTML+WG&amp;amp;longdesc_type=allwordssubstr&amp;amp;longdesc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;resolution=LATER&amp;amp;resolution=REMIND&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bug_id_type=anyexact&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0= List of LATERed bugs]. Some of these are commonly duped. In particular [http://www.w3.org/Bugs/Public/show_bug.cgi?id=7798 bug 7798] is TextMetrics.height which is often requested.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6407</id>
		<title>Forking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6407"/>
		<updated>2011-05-04T20:15:56Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Existing forks of HTML */ Describe some of the forks a bit.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The purpose of this page is to summarize information and arguments relevant to whether it makes sense for web specification copyright licenses to permit [[Wikipedia:Fork (software development)|forking]].&lt;br /&gt;
&lt;br /&gt;
For our purposes, there are two different approaches to forking.&lt;br /&gt;
&lt;br /&gt;
: Language Forking&lt;br /&gt;
:: An alternative development path for the language created without using existing specification text as the basis of the work.&lt;br /&gt;
: Specification Forking&lt;br /&gt;
:: An alternative development path using existing specification text as the basis of a derivative work.&lt;br /&gt;
&lt;br /&gt;
Since a &#039;&#039;language fork&#039;&#039; is not a derivative work according to copyright law, it may be done without the permission of the copyright holder.  A &#039;&#039;specification fork&#039;&#039;, however, requires a permissive licence or explicit permission from the copyright holder.&lt;br /&gt;
&lt;br /&gt;
Standard licenses that permit specification forking include [https://creativecommons.org/publicdomain/zero/1.0/ CC0], the [http://opensource.org/licenses/mit-license.php MIT license], and the [http://www.opensource.org/licenses/bsd-license.php BSD licenses].&lt;br /&gt;
&lt;br /&gt;
This page focuses on whether the W3C&#039;s HTML5 specification should allow forks, as the WHATWG version always has.&lt;br /&gt;
&lt;br /&gt;
== Existing forks of HTML ==&lt;br /&gt;
(based on [http://krijnhoetmer.nl/irc-logs/whatwg/20110430#l-179 IRC comment] by Maciej; possibly not everything here is strictly a fork, could use classification and explanation work)&lt;br /&gt;
&lt;br /&gt;
=== W3C-hosted forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-basic/ XHTML Basic]&lt;br /&gt;
* [http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/ HTML 4 Mobile]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml2/ XHTML 2]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-print/ XHTML-Print]&lt;br /&gt;
* [http://dev.w3.org/html5/spec-author-view/ HTML5 Edition for Web Authors]&lt;br /&gt;
* [http://dev.w3.org/html5/markup/ HTML: The Markup Language]&lt;br /&gt;
&lt;br /&gt;
=== W3C-published but disavowed forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/NOTE-Submission-HDML-spec.html HDML]&lt;br /&gt;
* [http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131/ XHTML+SMIL]&lt;br /&gt;
* [http://www.w3.org/TR/1998/NOTE-compactHTML-19980209/ CHTML]&lt;br /&gt;
&lt;br /&gt;
=== Other forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.scss.tcd.ie/misc/15445/15445.html ISO HTML]: Diff spec.&lt;br /&gt;
* [http://www.openmobilealliance.org/tech/affiliates/wap/wap-277-xhtmlmp-20011029-a.pdf XHTML-MP]: Apparently no free download.  Reportedly not widely used.&lt;br /&gt;
* [http://www.wapforum.org/what/technical.htm WML]: Apparently no free download.  Reportedly very widely used and extremely harmful.&lt;br /&gt;
* [http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=19886 WTVML]: Apparently no free download.&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/ WHATWG HTML]: No comment.&lt;br /&gt;
* [http://www.ce.org/Standards/browseByCommittee_2757.asp CE-HTML]: Apparently only a preview is available for free, which contains almost nothing beyond the table of contents.&lt;br /&gt;
* [http://idpf.org/epub/30/spec/epub30-publications.html EPUB]: Diff spec.&lt;br /&gt;
* [http://html4all.org/HTMLDraft.html HTML 4.1]: Accessibility-oriented fork.  Seems to attempt to respec from scratch, but it doesn&#039;t sound like it has anyone actually implementing it.&lt;br /&gt;
&lt;br /&gt;
=== Not really forks ===&lt;br /&gt;
* [http://developers.whatwg.org HTML5 for Web developers]: A subset of WHATWG HTML.&lt;br /&gt;
* [http://w3c-test.org/html/tests/submission/PhilipTaylor/annotated-spec/canvas.html Philip Taylor&#039;s annotated canvas spec]: No normative differences, or at least isn&#039;t supposed to have normative differences.&lt;br /&gt;
&lt;br /&gt;
== Organizational forks ==&lt;br /&gt;
One argument presented in favor of allowing forks is that if the W3C ever makes poor decisions that compromise the quality of its standards, other organizations should have the right to issue competing standards, with implementers agreeing to follow the better standard.  When the W3C owns the right to large, established specifications that it doesn&#039;t permit others to fork, this becomes harder.  Looking at cases where standards authors have abandoned an existing standards group to form their own should give an idea of whether this tends to be a good or bad thing.&lt;br /&gt;
&lt;br /&gt;
=== W3C competing with IETF ===&lt;br /&gt;
The W3C itself was founded at least partly because Tim Berners-Lee felt that standardization at the IETF wasn&#039;t working well.  As he writes in his book, [http://www.w3.org/People/Berners-Lee/Weaving/Overview.html &#039;&#039;Weaving the Web&#039;&#039;] (pp. 62-3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Progress in the [IETF&#039;s] URI working group was slow, partly due to the number of endless philosophical rat holes down which technical conversations would disappear. . . . Sometimes there was a core philosophy being argued, and from my point of view that was not up for compromise.  Sometimes there was a basically arbitrary decision (like which punctuation characters to use) that I had already made, and changing it would only mean that millions of Web browsers and existing links would have to be changed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, the W3C has wound up cooperating with the IETF more than competing.&lt;br /&gt;
&lt;br /&gt;
=== WHATWG competing with W3C ===&lt;br /&gt;
After HTML 4.01 was finalized in 1998, no new features were added to the HTML markup language other than in XHTML variants that browsers didn&#039;t implement.  Thus HTML as a standard markup language did not progress at all between about 1998 and 2004.  In 2004, Mozilla and Opera requested permission from the W3C to work on improving non-XML-based versions of HTML, and they were denied permission.  Apple, Mozilla, and Opera then founded the WHATWG, which began work on a new version of the HTML specification outside the W3C.  In a couple of years, the WHATWG rewrote the HTML standard from scratch, made it drastically more precise, and added many new highly-demanded features (such as video and canvas) that were previously only available through proprietary plugins.  In 2007, the W3C formed an HTML Working Group again to work on non-XML-based versions of HTML, based on and in conjunction with the work of the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Modularization ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/TR/xhtml-modularization/ XHTML Modularization] has the goal of &amp;quot;providing a means for subsetting and extending XHTML, a feature needed for extending XHTML&#039;s reach onto emerging platforms&amp;quot;. Although this is not technically a fork (in the sense that it does not imply taking the W3C spec text and rewriting portions of it), the ability to create new HTML-derived specs that add or replace functionality carries many of the same risks that are brought up in the context of forking.&lt;br /&gt;
&lt;br /&gt;
== Supposed risks of forking ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;A national government could create its own intentionally incompatible national version of the html specification in order to prevent general Web access from within that country&amp;quot;: This argument is wrong at multiple levels:&lt;br /&gt;
** A national government could exempt itself from copyright anyway. Even [http://arstechnica.com/tech-policy/news/2008/08/air-force-cracks-software-carpet-bombs-dmca.ars the US government] does not consider itself bound by copyright law in all cases.&lt;br /&gt;
** A specification is only needed if there is a desire for multiple independent interoperable implementations, i.e., if competition is being encouraged. But what government would on the one hand encourage competition amongst browser vendors and on the other hand prevent those browser vendors from implementing other versions of HTML?&lt;br /&gt;
** In practice, it would be economically impractical to control the Web by developing a parallel HTML that is similar enough that the W3C spec could be used as a basis, but different enough that it is incompatible with the Web&#039;s HTML. In reality, countries use content filtering software to do such control (q.v., China).&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other undesirable forks could be for device specific variants of specs where it would be better for those groups to come into W3C [...] than to splinter html&amp;quot;: When the W3C forks HTML (as it has in the past, see the list above), it is just as bad as when anyone else does. There is nothing special about the W3C here.&lt;br /&gt;
** In practice, vendors who want to add device-specific features commonly just add new features without forking the spec.  For instance, Apple has made up its own [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html proprietary features] such as &amp;amp;lt;meta name=&amp;quot;apple-touch-icon&amp;quot;&amp;gt; and &amp;amp;lt;meta name=&amp;quot;apple-mobile-web-app-capable&amp;quot;&amp;gt; to allow web pages to integrate better with the iOS browser.  Forking the whole HTML spec would be a waste of time.&lt;br /&gt;
&lt;br /&gt;
== Advantages of allowing forking ==&lt;br /&gt;
&lt;br /&gt;
* It encourages the W3C to do a good job, because of the risk that if the W3C does &#039;&#039;not&#039;&#039; do a good job, it will lose relevance. This has already been shown to be beneficial both to the W3C and the Web at large with HTML5 itself: the W3C tried to strongarm the Web into abandoning HTML, and when the WHATWG worked on it instead, the W3C changed its mind. This demonstrates the benefit of allowing forking (though in this case, it turns out copyright restrictions were not any kind of barrier to forking, because HTML4 wasn&#039;t good enough to be a useful starting point and we instead started from scratch).&lt;br /&gt;
&lt;br /&gt;
== Reasons preventing forking is not necessary ==&lt;br /&gt;
&lt;br /&gt;
* If the W3C is the best place to work on specs, then people will not need to fork, they&#039;ll just work on them at the W3C.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6397</id>
		<title>Forking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6397"/>
		<updated>2011-05-02T14:17:46Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Supposed risks of forking */ Mention Apple making up proprietary features to support iOS instead of forking the spec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The purpose of this page is to summarize information and arguments relevant to whether it makes sense for web specification copyright licenses to permit [[Wikipedia:Fork (software development)|forking]].&lt;br /&gt;
&lt;br /&gt;
For our purposes, there are two different approaches to forking.&lt;br /&gt;
&lt;br /&gt;
: Language Forking&lt;br /&gt;
:: An alternative development path for the language created without using existing specification text as the basis of the work.&lt;br /&gt;
: Specification Forking&lt;br /&gt;
:: An alternative development path using existing specification text as the basis of a derivative work.&lt;br /&gt;
&lt;br /&gt;
Since a &#039;&#039;language fork&#039;&#039; is not a derivative work according to copyright law, it may be done without the permission of the copyright holder.  A &#039;&#039;specification fork&#039;&#039;, however, requires a permissive licence or explicit permission from the copyright holder.&lt;br /&gt;
&lt;br /&gt;
Standard licenses that permit specification forking include [https://creativecommons.org/publicdomain/zero/1.0/ CC0], the [http://opensource.org/licenses/mit-license.php MIT license], and the [http://www.opensource.org/licenses/bsd-license.php BSD licenses].&lt;br /&gt;
&lt;br /&gt;
This page focuses on whether the W3C&#039;s HTML5 specification should allow forks, as the WHATWG version always has.&lt;br /&gt;
&lt;br /&gt;
== Existing forks of HTML ==&lt;br /&gt;
(based on [http://krijnhoetmer.nl/irc-logs/whatwg/20110430#l-179 IRC comment] by Maciej; possibly not everything here is strictly a fork, could use classification and explanation work)&lt;br /&gt;
&lt;br /&gt;
=== W3C-hosted forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-basic/ XHTML Basic]&lt;br /&gt;
* [http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/ HTML 4 Mobile]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml2/ XHTML 2]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-print/ XHTML-Print]&lt;br /&gt;
&lt;br /&gt;
=== W3C-published but disavowed forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/NOTE-Submission-HDML-spec.html HDML]&lt;br /&gt;
* [http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131/ XHTML+SMIL]&lt;br /&gt;
* [http://www.w3.org/TR/1998/NOTE-compactHTML-19980209/ CHTML]&lt;br /&gt;
&lt;br /&gt;
=== Other forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://jp29.org/iso.htm ISO HTML]&lt;br /&gt;
* [http://www.openmobilealliance.org/tech/affiliates/wap/wap-277-xhtmlmp-20011029-a.pdf XHTML-MP]&lt;br /&gt;
* [http://www.wapforum.org/what/technical.htm WML] (apparently no free download)&lt;br /&gt;
* [http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=19886 WTVML] (apparently no free download)&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/ WHATWG HTML]&lt;br /&gt;
* [http://www.ce.org/Standards/browseByCommittee_2757.asp CE-HTML] (apparently only a preview available for free)&lt;br /&gt;
* [http://idpf.org/epub/30/spec/epub30-publications.html EPUB]&lt;br /&gt;
* [http://html4all.org/HTMLDraft.html HTML 4.1]&lt;br /&gt;
&lt;br /&gt;
== Organizational forks ==&lt;br /&gt;
One argument presented in favor of allowing forks is that if the W3C ever makes poor decisions that compromise the quality of its standards, other organizations should have the right to issue competing standards, with implementers agreeing to follow the better standard.  When the W3C owns the right to large, established specifications that it doesn&#039;t permit others to fork, this becomes harder.  Looking at cases where standards authors have abandoned an existing standards group to form their own should give an idea of whether this tends to be a good or bad thing.&lt;br /&gt;
&lt;br /&gt;
=== W3C competing with IETF ===&lt;br /&gt;
The W3C itself was founded at least partly because Tim Berners-Lee felt that standardization at the IETF wasn&#039;t working well.  As he writes in his book, [http://www.w3.org/People/Berners-Lee/Weaving/Overview.html &#039;&#039;Weaving the Web&#039;&#039;] (pp. 62-3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Progress in the [IETF&#039;s] URI working group was slow, partly due to the number of endless philosophical rat holes down which technical conversations would disappear. . . . Sometimes there was a core philosophy being argued, and from my point of view that was not up for compromise.  Sometimes there was a basically arbitrary decision (like which punctuation characters to use) that I had already made, and changing it would only mean that millions of Web browsers and existing links would have to be changed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, the W3C has wound up cooperating with the IETF more than competing.&lt;br /&gt;
&lt;br /&gt;
=== WHATWG competing with W3C ===&lt;br /&gt;
After HTML 4.01 was finalized in 1998, no new features were added to the HTML markup language other than in XHTML variants that browsers didn&#039;t implement.  Thus HTML as a standard markup language did not progress at all between about 1998 and 2004.  In 2004, Mozilla and Opera requested permission from the W3C to work on improving non-XML-based versions of HTML, and they were denied permission.  Apple, Mozilla, and Opera then founded the WHATWG, which began work on a new version of the HTML specification outside the W3C.  In a couple of years, the WHATWG rewrote the HTML standard from scratch, made it drastically more precise, and added many new highly-demanded features (such as video and canvas) that were previously only available through proprietary plugins.  In 2007, the W3C formed an HTML Working Group again to work on non-XML-based versions of HTML, based on and in conjunction with the work of the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Modularization ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/TR/xhtml-modularization/ XHTML Modularization] has the goal of &amp;quot;providing a means for subsetting and extending XHTML, a feature needed for extending XHTML&#039;s reach onto emerging platforms&amp;quot;. Although this is not technically a fork (in the sense that it does not imply taking the W3C spec text and rewriting portions of it), the ability to create new HTML-derived specs that add or replace functionality carries many of the same risks that are brought up in the context of forking.&lt;br /&gt;
&lt;br /&gt;
== Supposed risks of forking ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;A national government could create its own intentionally incompatible national version of the html specification in order to prevent general Web access from within that country&amp;quot;: This argument is wrong at multiple levels:&lt;br /&gt;
** A national government could exempt itself from copyright anyway. Even [http://arstechnica.com/tech-policy/news/2008/08/air-force-cracks-software-carpet-bombs-dmca.ars the US government] does not consider itself bound by copyright law in all cases.&lt;br /&gt;
** A specification is only needed if there is a desire for multiple independent interoperable implementations, i.e., if competition is being encouraged. But what government would on the one hand encourage competition amongst browser vendors and on the other hand prevent those browser vendors from implementing other versions of HTML?&lt;br /&gt;
** In practice, it would be economically impractical to control the Web by developing a parallel HTML that is similar enough that the W3C spec could be used as a basis, but different enough that it is incompatible with the Web&#039;s HTML. In reality, countries use content filtering software to do such control (e.g., China).&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other undesirable forks could be for device specific variants of specs where it would be better for those groups to come into W3C [...] than to splinter html&amp;quot;: When the W3C forks HTML (as it has in the past, see the list above), it is just as bad as when anyone else does. There is nothing special about the W3C here.&lt;br /&gt;
** In practice, vendors who want to add device-specific features commonly just add new features without forking the spec.  For instance, Apple has made up its own [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html proprietary features] such as &amp;amp;lt;meta name=&amp;quot;apple-touch-icon&amp;quot;&amp;gt; and &amp;amp;lt;meta name=&amp;quot;apple-mobile-web-app-capable&amp;quot;&amp;gt; to allow web pages to integrate better with the iOS browser.  Forking the whole HTML spec would be a waste of time.&lt;br /&gt;
&lt;br /&gt;
== Advantages of allowing forking ==&lt;br /&gt;
&lt;br /&gt;
* It encourages the W3C to do a good job, because of the risk that if the W3C does &#039;&#039;not&#039;&#039; do a good job, it will lose relevance. This has already been shown to be beneficial both to the W3C and the Web at large with HTML5 itself: the W3C tried to strongarm the Web into abandoning HTML, and when the WHATWG worked on it instead, the W3C changed its mind. This demonstrates the benefit of allowing forking (though in this case, it turns out copyright restrictions were not any kind of barrier to forking, because HTML4 wasn&#039;t good enough to be a useful starting point and we instead started from scratch).&lt;br /&gt;
&lt;br /&gt;
== Reasons preventing forking is not necessary ==&lt;br /&gt;
&lt;br /&gt;
* If the W3C is the best place to work on specs, then people will not need to fork, they&#039;ll just work on them at the W3C.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6396</id>
		<title>Forking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6396"/>
		<updated>2011-05-02T14:14:09Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Supposed risks of forking */ Remove something that&amp;#039;s not an argument against the risks of forking, it&amp;#039;s an argument about the irrelevance of W3C licensing to the *possibility* of forking.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The purpose of this page is to summarize information and arguments relevant to whether it makes sense for web specification copyright licenses to permit [[Wikipedia:Fork (software development)|forking]].&lt;br /&gt;
&lt;br /&gt;
For our purposes, there are two different approaches to forking.&lt;br /&gt;
&lt;br /&gt;
: Language Forking&lt;br /&gt;
:: An alternative development path for the language created without using existing specification text as the basis of the work.&lt;br /&gt;
: Specification Forking&lt;br /&gt;
:: An alternative development path using existing specification text as the basis of a derivative work.&lt;br /&gt;
&lt;br /&gt;
Since a &#039;&#039;language fork&#039;&#039; is not a derivative work according to copyright law, it may be done without the permission of the copyright holder.  A &#039;&#039;specification fork&#039;&#039;, however, requires a permissive licence or explicit permission from the copyright holder.&lt;br /&gt;
&lt;br /&gt;
Standard licenses that permit specification forking include [https://creativecommons.org/publicdomain/zero/1.0/ CC0], the [http://opensource.org/licenses/mit-license.php MIT license], and the [http://www.opensource.org/licenses/bsd-license.php BSD licenses].&lt;br /&gt;
&lt;br /&gt;
This page focuses on whether the W3C&#039;s HTML5 specification should allow forks, as the WHATWG version always has.&lt;br /&gt;
&lt;br /&gt;
== Existing forks of HTML ==&lt;br /&gt;
(based on [http://krijnhoetmer.nl/irc-logs/whatwg/20110430#l-179 IRC comment] by Maciej; possibly not everything here is strictly a fork, could use classification and explanation work)&lt;br /&gt;
&lt;br /&gt;
=== W3C-hosted forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-basic/ XHTML Basic]&lt;br /&gt;
* [http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/ HTML 4 Mobile]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml2/ XHTML 2]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-print/ XHTML-Print]&lt;br /&gt;
&lt;br /&gt;
=== W3C-published but disavowed forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/NOTE-Submission-HDML-spec.html HDML]&lt;br /&gt;
* [http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131/ XHTML+SMIL]&lt;br /&gt;
* [http://www.w3.org/TR/1998/NOTE-compactHTML-19980209/ CHTML]&lt;br /&gt;
&lt;br /&gt;
=== Other forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://jp29.org/iso.htm ISO HTML]&lt;br /&gt;
* [http://www.openmobilealliance.org/tech/affiliates/wap/wap-277-xhtmlmp-20011029-a.pdf XHTML-MP]&lt;br /&gt;
* [http://www.wapforum.org/what/technical.htm WML] (apparently no free download)&lt;br /&gt;
* [http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=19886 WTVML] (apparently no free download)&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/ WHATWG HTML]&lt;br /&gt;
* [http://www.ce.org/Standards/browseByCommittee_2757.asp CE-HTML] (apparently only a preview available for free)&lt;br /&gt;
* [http://idpf.org/epub/30/spec/epub30-publications.html EPUB]&lt;br /&gt;
* [http://html4all.org/HTMLDraft.html HTML 4.1]&lt;br /&gt;
&lt;br /&gt;
== Organizational forks ==&lt;br /&gt;
One argument presented in favor of allowing forks is that if the W3C ever makes poor decisions that compromise the quality of its standards, other organizations should have the right to issue competing standards, with implementers agreeing to follow the better standard.  When the W3C owns the right to large, established specifications that it doesn&#039;t permit others to fork, this becomes harder.  Looking at cases where standards authors have abandoned an existing standards group to form their own should give an idea of whether this tends to be a good or bad thing.&lt;br /&gt;
&lt;br /&gt;
=== W3C competing with IETF ===&lt;br /&gt;
The W3C itself was founded at least partly because Tim Berners-Lee felt that standardization at the IETF wasn&#039;t working well.  As he writes in his book, [http://www.w3.org/People/Berners-Lee/Weaving/Overview.html &#039;&#039;Weaving the Web&#039;&#039;] (pp. 62-3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Progress in the [IETF&#039;s] URI working group was slow, partly due to the number of endless philosophical rat holes down which technical conversations would disappear. . . . Sometimes there was a core philosophy being argued, and from my point of view that was not up for compromise.  Sometimes there was a basically arbitrary decision (like which punctuation characters to use) that I had already made, and changing it would only mean that millions of Web browsers and existing links would have to be changed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, the W3C has wound up cooperating with the IETF more than competing.&lt;br /&gt;
&lt;br /&gt;
=== WHATWG competing with W3C ===&lt;br /&gt;
After HTML 4.01 was finalized in 1998, no new features were added to the HTML markup language other than in XHTML variants that browsers didn&#039;t implement.  Thus HTML as a standard markup language did not progress at all between about 1998 and 2004.  In 2004, Mozilla and Opera requested permission from the W3C to work on improving non-XML-based versions of HTML, and they were denied permission.  Apple, Mozilla, and Opera then founded the WHATWG, which began work on a new version of the HTML specification outside the W3C.  In a couple of years, the WHATWG rewrote the HTML standard from scratch, made it drastically more precise, and added many new highly-demanded features (such as video and canvas) that were previously only available through proprietary plugins.  In 2007, the W3C formed an HTML Working Group again to work on non-XML-based versions of HTML, based on and in conjunction with the work of the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Modularization ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/TR/xhtml-modularization/ XHTML Modularization] has the goal of &amp;quot;providing a means for subsetting and extending XHTML, a feature needed for extending XHTML&#039;s reach onto emerging platforms&amp;quot;. Although this is not technically a fork (in the sense that it does not imply taking the W3C spec text and rewriting portions of it), the ability to create new HTML-derived specs that add or replace functionality carries many of the same risks that are brought up in the context of forking.&lt;br /&gt;
&lt;br /&gt;
== Supposed risks of forking ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;A national government could create its own intentionally incompatible national version of the html specification in order to prevent general Web access from within that country&amp;quot;: This argument is wrong at multiple levels:&lt;br /&gt;
** A national government could exempt itself from copyright anyway. Even [http://arstechnica.com/tech-policy/news/2008/08/air-force-cracks-software-carpet-bombs-dmca.ars the US government] does not consider itself bound by copyright law in all cases.&lt;br /&gt;
** A specification is only needed if there is a desire for multiple independent interoperable implementations, i.e., if competition is being encouraged. But what government would on the one hand encourage competition amongst browser vendors and on the other hand prevent those browser vendors from implementing other versions of HTML?&lt;br /&gt;
** In practice, it would be economically impractical to control the Web by developing a parallel HTML that is similar enough that the W3C spec could be used as a basis, but different enough that it is incompatible with the Web&#039;s HTML. In reality, countries use content filtering software to do such control (c.f. China).&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other undesirable forks could be for device specific variants of specs where it would be better for those groups to come into W3C [...] than to splinter html&amp;quot;: When the W3C forks HTML (as it has in the past, see the list above), it is just as bad as when anyone else does. There is nothing special about the W3C here.&lt;br /&gt;
&lt;br /&gt;
== Advantages of allowing forking ==&lt;br /&gt;
&lt;br /&gt;
* It encourages the W3C to do a good job, because of the risk that if the W3C does &#039;&#039;not&#039;&#039; do a good job, it will lose relevance. This has already been shown to be beneficial both to the W3C and the Web at large with HTML5 itself: the W3C tried to strongarm the Web into abandoning HTML, and when the WHATWG worked on it instead, the W3C changed its mind. This demonstrates the benefit of allowing forking (though in this case, it turns out copyright restrictions were not any kind of barrier to forking, because HTML4 wasn&#039;t good enough to be a useful starting point and we instead started from scratch).&lt;br /&gt;
&lt;br /&gt;
== Reasons preventing forking is not necessary ==&lt;br /&gt;
&lt;br /&gt;
* If the W3C is the best place to work on specs, then people will not need to fork, they&#039;ll just work on them at the W3C.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6395</id>
		<title>Forking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6395"/>
		<updated>2011-05-02T14:12:41Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: /* Supposed risks of forking */ Clarify copyright law&amp;#039;s effect on governments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The purpose of this page is to summarize information and arguments relevant to whether it makes sense for web specification copyright licenses to permit [[Wikipedia:Fork (software development)|forking]].&lt;br /&gt;
&lt;br /&gt;
For our purposes, there are two different approaches to forking.&lt;br /&gt;
&lt;br /&gt;
: Language Forking&lt;br /&gt;
:: An alternative development path for the language created without using existing specification text as the basis of the work.&lt;br /&gt;
: Specification Forking&lt;br /&gt;
:: An alternative development path using existing specification text as the basis of a derivative work.&lt;br /&gt;
&lt;br /&gt;
Since a &#039;&#039;language fork&#039;&#039; is not a derivative work according to copyright law, it may be done without the permission of the copyright holder.  A &#039;&#039;specification fork&#039;&#039;, however, requires a permissive licence or explicit permission from the copyright holder.&lt;br /&gt;
&lt;br /&gt;
Standard licenses that permit specification forking include [https://creativecommons.org/publicdomain/zero/1.0/ CC0], the [http://opensource.org/licenses/mit-license.php MIT license], and the [http://www.opensource.org/licenses/bsd-license.php BSD licenses].&lt;br /&gt;
&lt;br /&gt;
This page focuses on whether the W3C&#039;s HTML5 specification should allow forks, as the WHATWG version always has.&lt;br /&gt;
&lt;br /&gt;
== Existing forks of HTML ==&lt;br /&gt;
(based on [http://krijnhoetmer.nl/irc-logs/whatwg/20110430#l-179 IRC comment] by Maciej; possibly not everything here is strictly a fork, could use classification and explanation work)&lt;br /&gt;
&lt;br /&gt;
=== W3C-hosted forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-basic/ XHTML Basic]&lt;br /&gt;
* [http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/ HTML 4 Mobile]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml2/ XHTML 2]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-print/ XHTML-Print]&lt;br /&gt;
&lt;br /&gt;
=== W3C-published but disavowed forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/NOTE-Submission-HDML-spec.html HDML]&lt;br /&gt;
* [http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131/ XHTML+SMIL]&lt;br /&gt;
* [http://www.w3.org/TR/1998/NOTE-compactHTML-19980209/ CHTML]&lt;br /&gt;
&lt;br /&gt;
=== Other forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://jp29.org/iso.htm ISO HTML]&lt;br /&gt;
* [http://www.openmobilealliance.org/tech/affiliates/wap/wap-277-xhtmlmp-20011029-a.pdf XHTML-MP]&lt;br /&gt;
* [http://www.wapforum.org/what/technical.htm WML] (apparently no free download)&lt;br /&gt;
* [http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=19886 WTVML] (apparently no free download)&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/ WHATWG HTML]&lt;br /&gt;
* [http://www.ce.org/Standards/browseByCommittee_2757.asp CE-HTML] (apparently only a preview available for free)&lt;br /&gt;
* [http://idpf.org/epub/30/spec/epub30-publications.html EPUB]&lt;br /&gt;
* [http://html4all.org/HTMLDraft.html HTML 4.1]&lt;br /&gt;
&lt;br /&gt;
== Organizational forks ==&lt;br /&gt;
One argument presented in favor of allowing forks is that if the W3C ever makes poor decisions that compromise the quality of its standards, other organizations should have the right to issue competing standards, with implementers agreeing to follow the better standard.  When the W3C owns the right to large, established specifications that it doesn&#039;t permit others to fork, this becomes harder.  Looking at cases where standards authors have abandoned an existing standards group to form their own should give an idea of whether this tends to be a good or bad thing.&lt;br /&gt;
&lt;br /&gt;
=== W3C competing with IETF ===&lt;br /&gt;
The W3C itself was founded at least partly because Tim Berners-Lee felt that standardization at the IETF wasn&#039;t working well.  As he writes in his book, [http://www.w3.org/People/Berners-Lee/Weaving/Overview.html &#039;&#039;Weaving the Web&#039;&#039;] (pp. 62-3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Progress in the [IETF&#039;s] URI working group was slow, partly due to the number of endless philosophical rat holes down which technical conversations would disappear. . . . Sometimes there was a core philosophy being argued, and from my point of view that was not up for compromise.  Sometimes there was a basically arbitrary decision (like which punctuation characters to use) that I had already made, and changing it would only mean that millions of Web browsers and existing links would have to be changed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, the W3C has wound up cooperating with the IETF more than competing.&lt;br /&gt;
&lt;br /&gt;
=== WHATWG competing with W3C ===&lt;br /&gt;
After HTML 4.01 was finalized in 1998, no new features were added to the HTML markup language other than in XHTML variants that browsers didn&#039;t implement.  Thus HTML as a standard markup language did not progress at all between about 1998 and 2004.  In 2004, Mozilla and Opera requested permission from the W3C to work on improving non-XML-based versions of HTML, and they were denied permission.  Apple, Mozilla, and Opera then founded the WHATWG, which began work on a new version of the HTML specification outside the W3C.  In a couple of years, the WHATWG rewrote the HTML standard from scratch, made it drastically more precise, and added many new highly-demanded features (such as video and canvas) that were previously only available through proprietary plugins.  In 2007, the W3C formed an HTML Working Group again to work on non-XML-based versions of HTML, based on and in conjunction with the work of the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Modularization ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/TR/xhtml-modularization/ XHTML Modularization] has the goal of &amp;quot;providing a means for subsetting and extending XHTML, a feature needed for extending XHTML&#039;s reach onto emerging platforms&amp;quot;. Although this is not technically a fork (in the sense that it does not imply taking the W3C spec text and rewriting portions of it), the ability to create new HTML-derived specs that add or replace functionality carries many of the same risks that are brought up in the context of forking.&lt;br /&gt;
&lt;br /&gt;
== Supposed risks of forking ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;A national government could create its own intentionally incompatible national version of the html specification in order to prevent general Web access from within that country&amp;quot;: This argument is wrong at multiple levels:&lt;br /&gt;
** A national government could exempt itself from copyright anyway. Even [http://arstechnica.com/tech-policy/news/2008/08/air-force-cracks-software-carpet-bombs-dmca.ars the US government] does not consider itself bound by copyright law in all cases.&lt;br /&gt;
** A specification is only needed if there is a desire for multiple independent interoperable implementations, i.e., if competition is being encouraged. But what government would on the one hand encourage competition amongst browser vendors and on the other hand prevent those browser vendors from implementing other versions of HTML?&lt;br /&gt;
** In practice, it would be economically impractical to control the Web by developing a parallel HTML that is similar enough that the W3C spec could be used as a basis, but different enough that it is incompatible with the Web&#039;s HTML. In reality, countries use content filtering software to do such control (c.f. China).&lt;br /&gt;
** Whether the W3C allows forking or not, and even if we grant that a license could stop this, this scenario could already happen because the entire HTML spec is already under a liberal license at the WHATWG.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other undesirable forks could be for device specific variants of specs where it would be better for those groups to come into W3C [...] than to splinter html&amp;quot;: When the W3C forks HTML (as it has in the past, see the list above), it is just as bad as when anyone else does. There is nothing special about the W3C here.&lt;br /&gt;
&lt;br /&gt;
== Advantages of allowing forking ==&lt;br /&gt;
&lt;br /&gt;
* It encourages the W3C to do a good job, because of the risk that if the W3C does &#039;&#039;not&#039;&#039; do a good job, it will lose relevance. This has already been shown to be beneficial both to the W3C and the Web at large with HTML5 itself: the W3C tried to strongarm the Web into abandoning HTML, and when the WHATWG worked on it instead, the W3C changed its mind. This demonstrates the benefit of allowing forking (though in this case, it turns out copyright restrictions were not any kind of barrier to forking, because HTML4 wasn&#039;t good enough to be a useful starting point and we instead started from scratch).&lt;br /&gt;
&lt;br /&gt;
== Reasons preventing forking is not necessary ==&lt;br /&gt;
&lt;br /&gt;
* If the W3C is the best place to work on specs, then people will not need to fork, they&#039;ll just work on them at the W3C.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6386</id>
		<title>Forking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6386"/>
		<updated>2011-05-01T18:33:34Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Start a page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The purpose of this page is to summarize information and arguments relevant to whether it makes sense for web specification copyright licenses to permit [[Wikipedia:Fork (software development)|forking]].  For our purposes, forking means the ability for a third party to redistribute modified versions of the specification without the permission of the copyright holders.  Standard licenses that permit forking include [http://creativecommons.org/choose/zero/ CC0], the [http://opensource.org/licenses/mit-license.php MIT license], and the [http://www.opensource.org/licenses/bsd-license.php BSD licenses].&lt;br /&gt;
&lt;br /&gt;
More specifically, this page focuses on whether the W3C&#039;s HTML5 specification should allow forks, as the WHATWG version always has.&lt;br /&gt;
&lt;br /&gt;
== Existing forks of HTML ==&lt;br /&gt;
(based on [http://krijnhoetmer.nl/irc-logs/whatwg/20110430#l-179 IRC comment] by Maciej; possibly not everything here is strictly a fork, could use classification and explanation work)&lt;br /&gt;
&lt;br /&gt;
=== W3C-hosted forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/1998/NOTE-compactHTML-19980209/ CHTML]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-basic/ XHTML Basic]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml2/ XHTML 2]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-print/ XHTML-Print]&lt;br /&gt;
* [http://www.w3.org/TR/NOTE-Submission-HDML-spec.html HDML]&lt;br /&gt;
&lt;br /&gt;
=== Other forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://jp29.org/iso.htm ISO HTML]&lt;br /&gt;
* [http://www.openmobilealliance.org/tech/affiliates/wap/wap-277-xhtmlmp-20011029-a.pdf XHTML-MP]&lt;br /&gt;
* [http://www.wapforum.org/what/technical.htm WML] (apparently no free download)&lt;br /&gt;
* [http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=19886 WTVML] (apparently no free download)&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/ WHATWG HTML]&lt;br /&gt;
* [http://www.ce.org/Standards/browseByCommittee_2757.asp CE-HTML] (apparently only a preview available for free)&lt;br /&gt;
* [http://idpf.org/epub/30/spec/epub30-publications.html EPUB]&lt;br /&gt;
&lt;br /&gt;
== Organizational forks ==&lt;br /&gt;
One argument presented in favor of allowing forks is that if the W3C ever makes poor decisions that compromise the quality of its standards, other organizations should have the right to issue competing standards, with implementers agreeing to follow the better standard.  When the W3C owns the right to large, established specifications that it doesn&#039;t permit others to fork, this becomes harder.  Looking at cases where standards authors have abandoned an existing standards group to form their own should give an idea of whether this tends to be a good or bad thing.&lt;br /&gt;
&lt;br /&gt;
=== W3C competing with IETF ===&lt;br /&gt;
The W3C itself was founded at least partly because Tim Berners-Lee felt that standardization at the IETF wasn&#039;t working well.  As he writes in his book, [http://www.w3.org/People/Berners-Lee/Weaving/Overview.html &#039;&#039;Weaving the Web&#039;&#039;] (pp. 62-3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Progress in the [IETF&#039;s] URI working group was slow, partly due to the number of endless philosophical rat holes down which technical conversations would disappear. . . . Sometimes there was a core philosophy being argued, and from my point of view that was not up for compromise.  Sometimes there was a basically arbitrary decision (like which punctuation characters to use) that I had already made, and changing it would only mean that millions of Web browsers and existing links would have to be changed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, the W3C has wound up cooperating with the IETF more than competing.&lt;br /&gt;
&lt;br /&gt;
=== WHATWG competing with W3C ===&lt;br /&gt;
After HTML 4.01 was finalized in 1998, no new features were added to the HTML markup language other than in XHTML variants that browsers didn&#039;t implement.  Thus HTML as a standard markup language did not progress at all between about 1998 and 2004.  In 2004, Mozilla and Opera requested permission from the W3C to work on improving non-XML-based versions of HTML, and they were denied permission.  Apple, Mozilla, and Opera then founded the WHATWG, which began work on a new version of the HTML specification outside the W3C.  In a couple of years, the WHATWG rewrote the HTML standard from scratch, made it drastically more precise, and added many new highly-demanded features (such as video and canvas) that were previously only available through proprietary plugins.  In 2007, the W3C formed an HTML Working Group again to work on non-XML-based versions of HTML, based on and in conjunction with the work of the WHATWG.&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User:Aryeh_Gregor&amp;diff=4831</id>
		<title>User:Aryeh Gregor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User:Aryeh_Gregor&amp;diff=4831"/>
		<updated>2010-05-06T01:23:09Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Revert test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A.k.a. [[mw:User:Simetrical|Simetrical]].&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User:Aryeh_Gregor&amp;diff=4830</id>
		<title>User:Aryeh Gregor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User:Aryeh_Gregor&amp;diff=4830"/>
		<updated>2010-05-06T01:22:59Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A.k.a. [[mw:User:Simetrical|Simetrical]].&lt;br /&gt;
&lt;br /&gt;
http://whatwg.org&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=User:Aryeh_Gregor&amp;diff=4829</id>
		<title>User:Aryeh Gregor</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=User:Aryeh_Gregor&amp;diff=4829"/>
		<updated>2010-05-06T01:17:48Z</updated>

		<summary type="html">&lt;p&gt;Aryeh Gregor: Created page with &amp;#039;A.k.a. Simetrical.&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A.k.a. [[mw:User:Simetrical|Simetrical]].&lt;/div&gt;</summary>
		<author><name>Aryeh Gregor</name></author>
	</entry>
</feed>