<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Real Constructors &amp; WebIDL Last Call</title>
	<atom:link href="http://infrequently.org/2011/10/real-constructors-webidl-last-call/feed/" rel="self" type="application/rss+xml" />
	<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/</link>
	<description>Alex Russell on browsers, standards, and the process of progress.</description>
	<lastBuildDate>Thu, 11 Apr 2013 16:50:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: haraken</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238821</link>
		<dc:creator>haraken</dc:creator>
		<pubDate>Tue, 11 Oct 2011 04:23:20 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238821</guid>
		<description><![CDATA[Hi, Alex and Anne

Recently I have been implementing constructors for DOM objects (of course after defining IDL specs:-). Sooner or later I am planning to implement [NamedConstructor] IDL, and then propose specs and implement constructors for HTMLElement, although I have not yet considered the specs in detail. Making HTMLElement constructable is essential to the Component Model (http://wiki.whatwg.org/wiki/Component_Model).]]></description>
		<content:encoded><![CDATA[<p>Hi, Alex and Anne</p>
<p>Recently I have been implementing constructors for DOM objects (of course after defining IDL specs:-). Sooner or later I am planning to implement [NamedConstructor] IDL, and then propose specs and implement constructors for HTMLElement, although I have not yet considered the specs in detail. Making HTMLElement constructable is essential to the Component Model (<a href="http://wiki.whatwg.org/wiki/Component_Model" rel="nofollow">http://wiki.whatwg.org/wiki/Component_Model</a>).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dean Edwards</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238784</link>
		<dc:creator>Dean Edwards</dc:creator>
		<pubDate>Wed, 05 Oct 2011 18:29:32 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238784</guid>
		<description><![CDATA[Sounds good. I&#039;ll take you out for some real London ale.]]></description>
		<content:encoded><![CDATA[<p>Sounds good. I&#8217;ll take you out for some real London ale.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238783</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Wed, 05 Oct 2011 15:52:22 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238783</guid>
		<description><![CDATA[I&#039;m back in London on the 14th. Perhaps we can catch up then?]]></description>
		<content:encoded><![CDATA[<p>I&#8217;m back in London on the 14th. Perhaps we can catch up then?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dean Edwards</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238775</link>
		<dc:creator>Dean Edwards</dc:creator>
		<pubDate>Tue, 04 Oct 2011 15:30:47 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238775</guid>
		<description><![CDATA[Alex, sorry, I guess my comment is a bit whiny. :)

I&#039;d love to meet for a pint. My phone number is still the same.]]></description>
		<content:encoded><![CDATA[<p>Alex, sorry, I guess my comment is a bit whiny. :)</p>
<p>I&#8217;d love to meet for a pint. My phone number is still the same.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Justin Long</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238774</link>
		<dc:creator>Justin Long</dc:creator>
		<pubDate>Tue, 04 Oct 2011 15:29:41 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238774</guid>
		<description><![CDATA[I think that IDL&#039;s purpose is noble, and it should continue to keep that.  Having Dash come along shows now, more than ever, we should experiment, and keeping in IDL would do that.

HOWEVER, working every day with the DOM and the fact that it leaves so much to interpretation, there should be another working group, which specifies how JSDOM works.  Because as it goes right now, JS is THE language of the web, however keeping it open for more languages to interact with DOM elements is a good cause.

I think keeping IDL is great, and allowing for a committee to say, &quot;Hey, this is how JS should work with HTML&quot; is worth it.  That belongs neither in the HTML spec nor in the ECMAScript spec, and putting it in a middle one would be the best solution.]]></description>
		<content:encoded><![CDATA[<p>I think that IDL&#8217;s purpose is noble, and it should continue to keep that.  Having Dash come along shows now, more than ever, we should experiment, and keeping in IDL would do that.</p>
<p>HOWEVER, working every day with the DOM and the fact that it leaves so much to interpretation, there should be another working group, which specifies how JSDOM works.  Because as it goes right now, JS is THE language of the web, however keeping it open for more languages to interact with DOM elements is a good cause.</p>
<p>I think keeping IDL is great, and allowing for a committee to say, &#8220;Hey, this is how JS should work with HTML&#8221; is worth it.  That belongs neither in the HTML spec nor in the ECMAScript spec, and putting it in a middle one would be the best solution.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238771</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Tue, 04 Oct 2011 10:26:08 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238771</guid>
		<description><![CDATA[Hey Dean,

I&#039;m not sure anyone is pretending anything. I&#039;m saying that it&#039;s pretty tough medicine to swallow that WebIDL is keeping some APIs less idiomatic than they could be. It&#039;s the sort of thing I &lt;em&gt;hope&lt;/em&gt; webdevs will appreciate now but I&#039;m not kidding myself. This is pretty inside-baseball.

Anyway, I&#039;m in London. Let me know if you want to get a pint and talk it over.

Regards]]></description>
		<content:encoded><![CDATA[<p>Hey Dean,</p>
<p>I&#8217;m not sure anyone is pretending anything. I&#8217;m saying that it&#8217;s pretty tough medicine to swallow that WebIDL is keeping some APIs less idiomatic than they could be. It&#8217;s the sort of thing I <em>hope</em> webdevs will appreciate now but I&#8217;m not kidding myself. This is pretty inside-baseball.</p>
<p>Anyway, I&#8217;m in London. Let me know if you want to get a pint and talk it over.</p>
<p>Regards</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dean Edwards</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238768</link>
		<dc:creator>Dean Edwards</dc:creator>
		<pubDate>Tue, 04 Oct 2011 00:12:02 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238768</guid>
		<description><![CDATA[You guys should stop pretending that you represent real developers. That stopped being true some time ago. Don&#039;t get me wrong, WebIDL is a great idea and I&#039;m glad that it has been specified. But the pace that this spec (and countless others) has been developed, leaves us normal folk gasping for breath. I&#039;m sure that everything is open and above-board but unless you are directly involved it is impossible to keep up.]]></description>
		<content:encoded><![CDATA[<p>You guys should stop pretending that you represent real developers. That stopped being true some time ago. Don&#8217;t get me wrong, WebIDL is a great idea and I&#8217;m glad that it has been specified. But the pace that this spec (and countless others) has been developed, leaves us normal folk gasping for breath. I&#8217;m sure that everything is open and above-board but unless you are directly involved it is impossible to keep up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anne van Kesteren</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238765</link>
		<dc:creator>Anne van Kesteren</dc:creator>
		<pubDate>Mon, 03 Oct 2011 15:35:46 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238765</guid>
		<description><![CDATA[I think certainly think of quite a few cases where it does not make sense to have a constructor (XMLHttpRequestUpload, XMLHttpRequestEventTarget, Element, Node, CharacterData, EventTarget, EventListener, Window, WindowProxy, Navigator), but my point is that a specification needs to be precise. You cannot just say it will &quot;do the logical thing&quot;. Those details need to be defined.

That the node document of new HTMLDivElement() is the Document object associated with the global object on which the constructor was invoked is such a detail. new XMLHttpRequest() has something similar. new Event() needs to set the initialized flag.

Before these details are defined they need to be worked out. If you flip a switch in IDL that will not result in them being worked out. [NoConstructor] will just be added all over the place, until it is figured out what should happen.]]></description>
		<content:encoded><![CDATA[<p>I think certainly think of quite a few cases where it does not make sense to have a constructor (XMLHttpRequestUpload, XMLHttpRequestEventTarget, Element, Node, CharacterData, EventTarget, EventListener, Window, WindowProxy, Navigator), but my point is that a specification needs to be precise. You cannot just say it will &#8220;do the logical thing&#8221;. Those details need to be defined.</p>
<p>That the node document of new HTMLDivElement() is the Document object associated with the global object on which the constructor was invoked is such a detail. new XMLHttpRequest() has something similar. new Event() needs to set the initialized flag.</p>
<p>Before these details are defined they need to be worked out. If you flip a switch in IDL that will not result in them being worked out. [NoConstructor] will just be added all over the place, until it is figured out what should happen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238764</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Mon, 03 Oct 2011 15:02:58 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238764</guid>
		<description><![CDATA[Namespace? It&#039;s HTML. &lt;code&gt;appendChild()&lt;/code&gt; can reject what it needs to in any case. And if &lt;code&gt;Element&lt;/code&gt; really needs to be a pure virtual, it can take the new &lt;code&gt;[NoConstructor]&lt;/code&gt; or whatever. It really is a special case (as is &lt;code&gt;Node&lt;/code&gt;)...which means it should be special-case&#039;d ;-)]]></description>
		<content:encoded><![CDATA[<p>Namespace? It&#8217;s HTML. <code>appendChild()</code> can reject what it needs to in any case. And if <code>Element</code> really needs to be a pure virtual, it can take the new <code>[NoConstructor]</code> or whatever. It really is a special case (as is <code>Node</code>)&#8230;which means it should be special-case&#8217;d ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238763</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Mon, 03 Oct 2011 14:50:06 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238763</guid>
		<description><![CDATA[I think we disagree on the larger point: it&#039;s nearly &lt;em&gt;always&lt;/em&gt; sane to have a constructor. Saying we should go fight this on a spec-by-spec basis seems incongruous. Sure, we could, but &lt;em&gt;why&lt;/em&gt;? WebIDL specifies what should happen in lots of other cases for JS APIs by default (conversions, etc.) which have over-rides.

We don&#039;t go fight those battles door-to-door, why should we do so here?

In any case, it&#039;s not just &quot;meaningful&quot; constructors. DOM is hostile to JS because even default ctors are missing. Yes, we can do better by taking arguments, but the default is nearly always meaningful, so just flipping the bit &lt;em&gt;does&lt;/em&gt; have tons of value.]]></description>
		<content:encoded><![CDATA[<p>I think we disagree on the larger point: it&#8217;s nearly <em>always</em> sane to have a constructor. Saying we should go fight this on a spec-by-spec basis seems incongruous. Sure, we could, but <em>why</em>? WebIDL specifies what should happen in lots of other cases for JS APIs by default (conversions, etc.) which have over-rides.</p>
<p>We don&#8217;t go fight those battles door-to-door, why should we do so here?</p>
<p>In any case, it&#8217;s not just &#8220;meaningful&#8221; constructors. DOM is hostile to JS because even default ctors are missing. Yes, we can do better by taking arguments, but the default is nearly always meaningful, so just flipping the bit <em>does</em> have tons of value.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anne van Kesteren</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238762</link>
		<dc:creator>Anne van Kesteren</dc:creator>
		<pubDate>Mon, 03 Oct 2011 14:49:46 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238762</guid>
		<description><![CDATA[The problem is that what happens with new Element() and e.g. appendChild() if you do not set its local name. And even if you could give a local name its namespace would likely not be what you want and its interface would likely not be what you want either.

Adding meaningful constructors for existing interfaces is a non-trivial exercise that should not be forced, but rather carefully thought out.]]></description>
		<content:encoded><![CDATA[<p>The problem is that what happens with new Element() and e.g. appendChild() if you do not set its local name. And even if you could give a local name its namespace would likely not be what you want and its interface would likely not be what you want either.</p>
<p>Adding meaningful constructors for existing interfaces is a non-trivial exercise that should not be forced, but rather carefully thought out.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anne van Kesteren</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238761</link>
		<dc:creator>Anne van Kesteren</dc:creator>
		<pubDate>Mon, 03 Oct 2011 14:44:43 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238761</guid>
		<description><![CDATA[I do not think you need to force the issue. I think most people agree on what we want here (e.g. earlier this year I introduced new Event() and company and got them implemented by WebKit and Opera more recently). As I suggested earlier you should file bugs on the specifications that do not have constructors where you think it would be sensible to have them.]]></description>
		<content:encoded><![CDATA[<p>I do not think you need to force the issue. I think most people agree on what we want here (e.g. earlier this year I introduced new Event() and company and got them implemented by WebKit and Opera more recently). As I suggested earlier you should file bugs on the specifications that do not have constructors where you think it would be sensible to have them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238760</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Mon, 03 Oct 2011 14:44:40 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238760</guid>
		<description><![CDATA[&lt;code&gt;new Element()&lt;/code&gt; can have a writable &lt;code&gt;tagName&lt;/code&gt; property or allow it to be passed in. &lt;em&gt;That&lt;/em&gt; behavior needs specification, but nothing is forcing the issue today. I think you&#039;re making my point for me = )]]></description>
		<content:encoded><![CDATA[<p><code>new Element()</code> can have a writable <code>tagName</code> property or allow it to be passed in. <em>That</em> behavior needs specification, but nothing is forcing the issue today. I think you&#8217;re making my point for me = )</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anne van Kesteren</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238759</link>
		<dc:creator>Anne van Kesteren</dc:creator>
		<pubDate>Mon, 03 Oct 2011 14:42:31 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238759</guid>
		<description><![CDATA[Note that I am not opposed to having this feature, I am just saying that flipping a switch in IDL will not make it work.

You would also get lots of undefined behavior. new Element(). What is its local name? new Node() or new CharacterData(). What are their types? How do they interact with appendChild()? Etc.]]></description>
		<content:encoded><![CDATA[<p>Note that I am not opposed to having this feature, I am just saying that flipping a switch in IDL will not make it work.</p>
<p>You would also get lots of undefined behavior. new Element(). What is its local name? new Node() or new CharacterData(). What are their types? How do they interact with appendChild()? Etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://infrequently.org/2011/10/real-constructors-webidl-last-call/comment-page-1/#comment-238758</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Mon, 03 Oct 2011 14:41:09 +0000</pubDate>
		<guid isPermaLink="false">http://infrequently.org/?p=1693#comment-238758</guid>
		<description><![CDATA[Anne:

There&#039;s a meta point here, which is why do these memory ownership details need anything but defaults specified for the generated constructors? Maybe we&#039;re just arguing a small point which seems large, but saying &quot;you need to define it&quot; seems to be to be the follow-on from the argument that we should FORCE the issue by causing things to have constructors by default.

Note that I&#039;m not saying that flipping the default is all that needs to happen, only that it&#039;s a necessary first step. Perhaps you don&#039;t agree? If not, I haven&#039;t seen you propose a different mechanism by which to start getting these mis-designs fixed in a systemic way. WebIDL has leverage to force the issue.

Regards]]></description>
		<content:encoded><![CDATA[<p>Anne:</p>
<p>There&#8217;s a meta point here, which is why do these memory ownership details need anything but defaults specified for the generated constructors? Maybe we&#8217;re just arguing a small point which seems large, but saying &#8220;you need to define it&#8221; seems to be to be the follow-on from the argument that we should FORCE the issue by causing things to have constructors by default.</p>
<p>Note that I&#8217;m not saying that flipping the default is all that needs to happen, only that it&#8217;s a necessary first step. Perhaps you don&#8217;t agree? If not, I haven&#8217;t seen you propose a different mechanism by which to start getting these mis-designs fixed in a systemic way. WebIDL has leverage to force the issue.</p>
<p>Regards</p>
]]></content:encoded>
	</item>
</channel>
</rss>
