Some issues with existing element APIs:
Consistency of Attributes/Properties
There should be more consistency of attributes, properties etc. Basically a comprehensive review and uplift. For example, some elements have an icon property called "image", others "src", some both.
Comprehensive Review of Public vs. Private
Non-public methods, properties and fields should be prefixed with m or _. When JS2 comes, these should be genuinely private.
Some Stuff Shouldn't Be In Toolkit
Firefox regularly makes changes to the tabbrowser. It's of little real interest to other apps. There are also some not-necessary other items in there that potentially require many months of review and uplift. Some items should move into browser, some items should move into a real toplevel mozapps directory so that the uplift work on the "supported" toolkit is simpler.
Counter-Intuitive Binding Attachment
Binding attachment is not intuitive. You ideally write code like so:
const XUL2NS = "http://www.mozilla.org/2006/xul"; var foo = document.createElementNS(XUL2NS, "foo"); foo.bar = true; docElt.appendChild(foo);
...but it seldom works out that well. If an item has no frames constructed, attachment doesn't occur until it is inserted into the document.
allowevent and mousethrough
The allowevent and mousethrough attributes are a bit confusing.