I suppose to determine if it is buggy, you have to have a baseline that
is not buggy. So I suspected that some of the "buggy" behavior and
accompanying workarounds would be mystical incantations.
The querying in jQuery 1.41 (for example), uses an oddly named variable
called "Zizzle" to abstract the two layers (QSA and some really
off-the-wall and error-filled DOM traversal).
The original Sizzle is "declared" as follows:-
window.Sizzle = Sizzle;
Well, of course it is. Some things never change. :(
if ( document.querySelectorAll ) {
Bad feature detection (of course). I can easily see that blowing up in
some future IE incarnation (or who knows what other browser as host
objects can do what they want on type conversion).
(function(){
var oldSizzle = Sizzle, div = document.createElement("div");
div.innerHTML = "<p class='TEST'></p>";
Same old story. Needlessly tangling up feature testing with the
notoriously flaky innerHTML property.
// Safari can't handle uppercase or unicode characters when
// in quirks mode.
Interesting observation. Just Safari? Seems more like a Webkit issue
(assuming there is an issue). And what unicode characters?
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length
=== 0) {
return;
}
How about !div.querySelectorAll(".TEST").length? The strict comparison
is silly.
Sizzle = function(query, context, extra, seed){
context = context || document;
That lets out frames.
// Only use querySelectorAll on non-XML documents
No worries, it is well established that jQuery is unsuitable for
traversing (or mutating) XML documents (Resig called a punt on that
issue a few months back). So this should really read: don't use jQuery
to read or write XML documents of any kind.
// (ID selectors don't work in non-HTML documents)
if ( !seed && context.nodeType === 9 && !isXML(context) ) {
isXML? Lets see:-
var isXML = function(elem){
// documentElement is verified for cases where it doesn't yet exist
Always a good idea.
// (such as loading iframes in IE - #4833)
Interesting observation, but the understanding must be that the
documentElement may not exist, period. In other words, this is not an
IE/IFrame issue, but a gap in logic that could have been avoided long
before the observed failure.
And, of course, jQuery can't support frames anyway (see above). I
assume bits of it do, but certainly not the query engine.
var documentElement = (elem ? elem.ownerDocument || elem :
0).documentElement;
What a perfectly ludicrous (and unreadable) line of code (didn't look to
see what it was replacing). But at least it doesn't throw exceptions if
the documentElement property is missing. The telling thing is that this
is one of those "overloaded" functions that jQuery is famous for,
requiring it to discriminate between different types of host objects
(elements and documents in this case).
return documentElement ? documentElement.nodeName !== "HTML" : false;
Whatever. It certainly doesn't add up to a cross-browser XML
discriminator (and is used all over the place in a library that doesn't
really support XML). And according to the above comment about IE and
IFrames, the documentElement may be missing in some cases, but otherwise
supported, so this is tangled up as it always returns false whenever it
can't find that property.
};
Back to the query portion:-
try {
return makeArray( context.querySelectorAll(query), extra );
} catch(e){}
}
That's it, is it? One (possible) quirk worked around. I see I haven't
been missing out on much (if anything). Who would have thought that
"jdalton" would exaggerate a claim? It must be the end of the world. :)
return oldSizzle(query, context, extra, seed);
};
for ( var prop in oldSizzle ) {
No filter (of course). Keep this thing away from other scripts.
Sizzle[ prop ] = oldSizzle[ prop ];
}
div = null; // release memory in IE
Cargo cult. There's no circular reference to break here. I used to do
the same thing, which is likely not a coincidence. ;)
})();
}
Okay, so how about the latest "stable" version of Prototype:-
SelectorsAPI: !!document.querySelector,
[...]
if (Prototype.BrowserFeatures.SelectorsAPI &&
document.compatMode === 'BackCompat') {
So any quirks mode.
Selector.CASE_INSENSITIVE_CLASS_NAMES = (function(){
That sounds sort of like the quirk that surfaced in jQuery.
var div = document.createElement('div'),
span = document.createElement('span');
div.id = "prototype_test_id";
span.className = 'Test';
div.appendChild(span);
var isIgnored = (div.querySelector('#prototype_test_id .test') !==
null);
div = span = null;
Another coincidence perhaps? Looks almost exactly like what I was
putting out in 2007, which showed up in jQuery in 2008 and is now being
copied by Prototype. Odd that these bums are my biggest "critics" (or
perhaps they are just jealous). :)
return isIgnored;
})();
I do like that pattern. :) And the logic is better than jQuery's.
Still, it is testing querySelector, but using querySelectorAll for its
queries (bad object inference).
}
[...]
shouldUseSelectorsAPI: function() {
if (!Prototype.BrowserFeatures.SelectorsAPI) return false;
Poor form.
if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false;
Same.
if (!Selector._div) Selector._div = new Element('div');
The RHS is mind-bogglingly inept. How about using createElement?
They are setting up for the big finale:-
try {
Selector._div.querySelector(this.expression);
} catch(e) {
return false;
}
return true;
},
Making the try-catch a one-off is admirable. The object inference is
inexcusable. And unless I've missed something, that's it for Prototype.
So, it appears there is nearly one quirk worked around between these two
"majors". I won't confirm it as one for sure, but I do remember such an
issue with Webkit in quirks mode (unrelated to QSA), so perhaps. I'll
look into it further. I don't know why jQuery bothered as they can't
support quirks mode in IE, which makes it a waste to attempt to support
others. Not surprising given its history though.
Yes, It appears I've seriously underestimated the time and care it takes
to create a QSA adapter. I should probably just pack it in. :)
Typo. "Sizzle" of course.
[...]
>
> Cargo cult. There's no circular reference to break here. I used to do
> the same thing, which is likely not a coincidence. ;)
And, of course, it exits early if it spots that one quirk. I'm sure
Resig would say that the memory issue is only in IE and the quirk is
only in Safari, so it's all good. ;)
You should have figured out a long time ago that relevance goes hand
in hand with manners. You may be a damn clever JS developer, but no
one, I assure you, no one, thinks of you as anything more than a forum
troll with severe anger and jealousy issues.
i've been testing both querySelector and querySelectorAll recently and
the results are pretty much what you'd expect. the following from
IE8/JScript 5.8 which all complain about "Invalid argument." where as
Safari 4, Firefox 3.6 and Opera 10.10 all agree (mostly) about the results:
var a = document.querySelector('ul li:last-child');
var b = document.querySelectorAll('table tbody tr:nth-child(2n+0)');
var c = document.querySelectorAll('table tbody tr:nth-child(2n+1)');
var d = document.querySelectorAll('table tbody tr:nth-child(even)');
var e = document.querySelectorAll('table tbody tr:nth-child(odd)');
var f = document.querySelectorAll('input:not([disabled])');
var g = document.querySelectorAll('html:root');
var h = document.querySelector('table tbody tr:first-of-type'); *
var i = document.querySelector('table tbody tr:last-of-type'); *
var j = document.querySelectorAll('div:empty');
var k = document.querySelector('div span:only-child');
var l = document.querySelectorAll('table:first-of-type');
var m = document.querySelector('body div:last-of-type'); *+
var n = document.querySelector('span:only-of-type');
var o = document.querySelector('input:checked');
var p = document.querySelectorAll('input:enabled');
var q = document.querySelectorAll('input:disabled');
while the following match in IE8, Safari 4, Firefox 3.6 and Opera 10.10:
var r = document.querySelector('ul li:first-child');
var s = document.querySelector('input[type=submit]');
var t = document.querySelector('input[value~=Submit]');
var u = document.querySelector('input[name|=submit]');
var v = document.querySelectorAll('input[type^=s]');
var w = document.querySelectorAll('input[type$=t]');
var x = document.querySelectorAll('input[type*=ubmi]');
var y = document.querySelectorAll('table + ul');
var z = document.querySelector('table ~ p');
--- test document ---------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>qs(a)</title>
</head>
<body>
<p><input type=submit name=submit_button value=Submit></p>
<p><input type=submit name=submit-button value=Submit></p>
<table>
<caption>caption</caption>
<thead>
<tr><th>header</th></tr>
</thead>
<tbody>
<tr><td>data1</td></tr>
<tr><td>data2</td></tr>
<tr><td>data3</td></tr>
</tbody>
</table>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<p>abc</p>
<div></div>
<div><span>span</span></div>
<p><input type="checkbox" name="box" value="box" checked></p>
</body>
</html>
----------------------------------------------------------------------
* failed in Opera 10.10
+ failed in Safari 4.0.4
and Google Chrome 5.0.307.5 matches Safari 4
Ah, a top poster.
Enough said.
Wow, pointing out that buggy code is buggy is taking potshots? I
thought that was how opensource (and just plain old good academic
discussion) was supposed to work.
> Of course, this is standard
> operating procedure on this alleged 'newsgroup,' which devolved long
> ago into your personal dumping ground for whichever axe you feel like
> grinding at the moment.
To me, open, honest criticism of code is excellent policy. If you
can't stand honesty then it's your loss. Honesty is always valuable
regardless of weather or not I agree with the idea (and I often find
myself disagreeing with David).
> You should have figured out a long time ago that relevance goes hand
> in hand with manners.
Manners have little to do with how well code is written. I'd much
prefer code that is as bug-free as possible to code written by polite
people. After all, I'm not aiming to be David Mark's or John Resig's
friend. I just want to use the code.
Criticisms like Davids is extremely useful because there are faults
pointed out in his posts that are not acknowledged on jQuery's bug
tracker because its developers don't consider them to be bugs.
> You may be a damn clever JS developer, but no
> one, I assure you, no one, thinks of you as anything more than a forum
> troll with severe anger and jealousy issues.
> <snipped the rest>
Well.. definitely not no one unless your universe consist entirely of
jQuery fanboys.
Manners may have little to do with code quality, but they have a great
deal to do with participation and perception. When one sees the
general level of discourse around here, it's not surprising that
people here seem to overlook the importance of these human
interactions on software projects. It's hard for productivity to
arise from the endless arguments, fiskings, ad hominem attacks, and
general lack of civility on this newsgroup, all of which are direct
byproducts of David's continual presence.
Now I have no desire and not nearly enough time to actually get
entangled in this cycle of attacks (too late?), but merely wanted to
voice my frustation with the general situation. This place is not a
resource for anyone who is looking for something besides herbal Viagra
or a small group of people viciously picking apart each other's
sentences ad nauseam.
As I understand it, DM tried to help jquery be improved but that his
comments have largely been ignored. So is the pathetic ritual you're
referring to that the developers appear to choose to ignore assistance?
> Manners may have little to do with code quality, but they have a great
> deal to do with participation and perception. When one sees the
> general level of discourse around here, it's not surprising that
So, at what NG do you perceive a suitable general level of discourse?
> people here seem to overlook the importance of these human
> interactions on software projects. It's hard for productivity to
> arise from the endless arguments, fiskings, ad hominem attacks, and
> general lack of civility on this newsgroup, all of which are direct
> byproducts of David's continual presence.
Its a NG, if you are unhappy with the level of civility in a post you
can ignore it.
> Now I have no desire and not nearly enough time to actually get
> entangled in this cycle of attacks (too late?), but merely wanted to
> voice my frustration with the general situation. This place is not a
> resource for anyone who is looking for something besides herbal Viagra
> or a small group of people viciously picking apart each other's
> sentences ad nauseam.
Why do you complain about how rude people are by being rude?
I admire DM's persistence with regards to his comments about the quality
of code in various js libraries and frameworks. His reviews challenge my
understanding of js and is helping me to increase my understanding.
Andrew Poulos
Gee, another top post, against all the rules of this newsgroup.
Obviously not a regular reader. Just a drop in troll angry that is favourite
library is being exposed as totally flawed.
Sounds familiar.
>> Would
>
> Gee, another top post, against all the rules of this newsgroup.
>
> Obviously not a regular reader. Just a drop in troll angry that is favourite
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I would actually bet on the opposite, see above.
> library is being exposed as totally flawed.
>
--
Jake Jarvis
Not here.
>>> Would
>>
>> Gee, another top post, against all the rules of this newsgroup.
>>
>> Obviously not a regular reader. Just a drop in troll angry that is
>> favourite
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> I would actually bet on the opposite, see above.
A search for the word Gilwreathe in google groups reveals zero hits
A search on my news server reveals exactly two hits. The two posts in this
thread.
A general search for Gilwreathe on the web returns exactly one hit, oddly
enough a chinese "lets copy usenet" site that reveals my first post in this
thred.
No, not familar at all.
I don't care who this dipstick is, I'm on Davids side. Lets get rid of these
stupid "libraries" and replace them with code that actually works.
"Roger Gilreath" is a google groups alias of DM, been mentioned in a
thread or two here, and I just assume "Roja" knows that as well.
--
Jake Jarvis
Actually, it couldn't have been more instigated.
http://groups.google.com/group/comp.lang.javascript/browse_thread/thread/910da4771b1fc832#
There was a bogus test posted that excluded my QSA add-on (without
noting the fact) and then asserted My Library was "one of the slowest"
because QSA out-performed it. This was ostensibly because the other
libraries had gone to great lengths to ensure their QSA tack-ons were
consistent cross-browser. :)
> Of course, this is standard
> operating procedure on this alleged 'newsgroup,' which devolved long
> ago into your personal dumping ground for whichever axe you feel like
> grinding at the moment.
No. Like the others who refer to any opinion they don't like as
"trolling", you seem to be mixed up about how discussion groups work.
If you want to talk "dumping grounds", how about jQuery? Now that's a
dump. ;)
>
> You should have figured out a long time ago that relevance goes hand
> in hand with manners.
LOL. You feel my review of "Sizzle" was in bad taste? Why? Because
you use it and now can't sleep at night? I know unwelcome epiphanies
are unwelcome. But that doesn't mean you have to come in here and
insult everybody. Seems like bad manners to me.
> You may be a damn clever JS developer, but no
> one, I assure you, no one, thinks of you as anything more than a forum
> troll with severe anger and jealousy issues.
There it is! You don't seem to know what "troll" means. Oh, and the
hat trick with "anger" and "jealousy". I assure you I am not angry
about jQuery's follies (except when they get in the way of my Web
browsing). And no, I am certainly not jealous. What is there to be
jealous of?
And please don't top-post. It screws up the context of the discussion.
Thanks!
Sure. IE8 won't query on some selectors, so you have to wrap the call
in a try-catch and fall back to DOM traversal or XPath. I assume that
at least some of them fail because IE doesn't support the selectors in
CSS either.
That's what I thought too. There seems to be a huge population of
people out there who have never used Usenet and think that anything they
disagree with is "trolling" (the most over-used word on the Internet).
For them, forums are encounter groups (or something other than academic
duscussion).
>
>> Of course, this is standard
>> operating procedure on this alleged 'newsgroup,' which devolved long
>> ago into your personal dumping ground for whichever axe you feel like
>> grinding at the moment.
>
> To me, open, honest criticism of code is excellent policy. If you
> can't stand honesty then it's your loss. Honesty is always valuable
> regardless of weather or not I agree with the idea (and I often find
> myself disagreeing with David).
You troll. Stop trolling! :)
>
>> You should have figured out a long time ago that relevance goes hand
>> in hand with manners.
>
> Manners have little to do with how well code is written. I'd much
> prefer code that is as bug-free as possible to code written by polite
> people. After all, I'm not aiming to be David Mark's or John Resig's
> friend. I just want to use the code.
The former rather than the latter I hope. ;)
>
> Criticisms like Davids is extremely useful because there are faults
> pointed out in his posts that are not acknowledged on jQuery's bug
> tracker because its developers don't consider them to be bugs.
Or the documentation. Do they stipulate that you can't use quirks mode
in there? :)
>
>> You may be a damn clever JS developer, but no
>> one, I assure you, no one, thinks of you as anything more than a forum
>> troll with severe anger and jealousy issues.
>> <snipped the rest>
>
> Well.. definitely not no one unless your universe consist entirely of
> jQuery fanboys.
>
Such a (parallel) universe seems to exist (and occasionally collides
with this one). :)
Yes.
> If he cared about jQuery (which he
> doesn't), then he would have stopped this pathetic ritual a long time
> ago and contributed constructively.
You don't know your history. For the umpteenth time, I tried to help
jQuery several times. Didn't pan out as they kept fumbling the ideas.
>
> Manners may have little to do with code quality, but they have a great
> deal to do with participation and perception.
What is it about this particular thread that you find in bad taste?
> When one sees the
> general level of discourse around here, it's not surprising that
> people here seem to overlook the importance of these human
> interactions on software projects.
No, that's all BS. This is a discussion group, not a project. I've
worked on _hundreds_ of software projects and sure as hell never got
accused of bad manners. Now here...
> It's hard for productivity to
> arise from the endless arguments, fiskings, ad hominem attacks, and
"Ad hominem attacks" is another overused word that often serves only to
make the user sound like a laughingstock (see also troll). Can you
point out any such attacks in the QSA review?
> general lack of civility on this newsgroup, all of which are direct
> byproducts of David's continual presence.
ISTM that you talk a lot about me. Do you have any ideas to contribute
(or anything related to the topic at hand?)
>
> Now I have no desire and not nearly enough time to actually get
> entangled in this cycle of attacks (too late?),
Yes.
> but merely wanted to
> voice my frustation with the general situation.
It's out of control, isn't it? :) Don't worry, we won't be talking
about jQuery much longer as it is going to go the way of the Dodo.
> This place is not a
> resource for anyone who is looking for something besides herbal Viagra
> or a small group of people viciously picking apart each other's
> sentences ad nauseam.
Nope. And will you please stop top-posting? Thanks!
Yes. It's a long, sad story and very well-documented. But those who
pop in here to whine about the latest chapters haven't been following along.
>
>> Manners may have little to do with code quality, but they have a great
>> deal to do with participation and perception. When one sees the
>> general level of discourse around here, it's not surprising that
>
> So, at what NG do you perceive a suitable general level of discourse?
alt.programmer.wannabe.really.really.really.i.do
>
>> people here seem to overlook the importance of these human
>> interactions on software projects. It's hard for productivity to
>> arise from the endless arguments, fiskings, ad hominem attacks, and
>> general lack of civility on this newsgroup, all of which are direct
>> byproducts of David's continual presence.
>
> Its a NG, if you are unhappy with the level of civility in a post you
> can ignore it.
Or even filter the poster. In the moderated groups this is usually
eschewed by control-freaks for cries of banishment. :)
>
>> Now I have no desire and not nearly enough time to actually get
>> entangled in this cycle of attacks (too late?), but merely wanted to
>> voice my frustration with the general situation. This place is not a
>> resource for anyone who is looking for something besides herbal Viagra
>> or a small group of people viciously picking apart each other's
>> sentences ad nauseam.
>
> Why do you complain about how rude people are by being rude?
Yes, it is a paradox.
>
> I admire DM's persistence with regards to his comments about the quality
> of code in various js libraries and frameworks. His reviews challenge my
> understanding of js and is helping me to increase my understanding.
>
Thanks! Glad you like them.
Yes, that is an appropriate use of the word (troll). Take note, Roja.
Nearly one.
>
> A search on my news server reveals exactly two hits. The two posts in this
> thread.
LOL. It's the same guy (gal?) over and over. They just keep changing
their name to make it look like they are an army.
>
> A general search for Gilwreathe on the web returns exactly one hit, oddly
> enough a chinese "lets copy usenet" site that reveals my first post in this
> thred.
>
> No, not familar at all.
Yeah, I've never heard of most of these people who come in here crying
about "trolling" in a group nobody is forcing them to read.
>
> I don't care who this dipstick is, I'm on Davids side. Lets get rid of these
> stupid "libraries" and replace them with code that actually works.
>
>
That's the most sensible thing I've heard all day. :)
As I've mentioned numerous times. I use that when GG decides I've
posted too many times in the last hour (or whatever). Used it a couple
of times in other groups to thwart bans as well (until poor "Roger" got
banned too).
Is it your assertion that I am this top-posting crank? That's certainly
not the case. More like they are trying to be funny by corrupting the
alias. I didn't even catch it until now. :)
[...]
> "Ad hominem attacks" is another overused word that often serves only to
> make the user sound like a laughingstock (see also troll).
How so?
--
Garrett
comp.lang.javascript FAQ: http://jibbering.com/faq/
Because it is typically tossed about to describe anybody the poster
doesn't like. In general usage, it's got no real meaning at this point,
other than to show that the user is clueless about the origins of the
term. Technically speaking, most who cry "troll" are in fact trolling
themselves (like this latest crank).
> LOL. It's the same guy (gal?) over and over. They just keep changing
> their name to make it look like they are an army.
I not posting as anyone else.
> There was a bogus test posted that excluded my QSA add-on (without
> noting the fact) and then asserted My Library was "one of the slowest"
> because QSA out-performed it.
That is wrong. The majority of browsers I reported (18 of 23 results)
do *not* have QSA.
> This was ostensibly because the other
> libraries had gone to great lengths to ensure their QSA tack-ons were
> consistent cross-browser.
I didn't say "great lengths to ensure", I said at least they attempted
to put an effort into it.
Here is what I found:
(I am not counting the try-catch as a bug check because all have that)
My Library QSA addon has 0 QSA bug checks
YUI 3.0.0 has 0 QSA bug checks that I could find :(
MooTools 1.2.4 doesn't use QSA
Prototype 1.6.1 (next release they are switching to Sizzle)
WebKit className issue line #3217
Context check line #3293
Sizzle 1.0 (Used in jQuery):
WebKit className issue
http://github.com/jeresig/sizzle/blob/master/sizzle.js#L894
Avoid QSA on non HTML elements
http://github.com/jeresig/sizzle/blob/master/sizzle.js#L903
Avoid issues when .length of a nodeList maybe an element
http://github.com/jeresig/sizzle/blob/master/sizzle.js#L724
jQuery 1.4.1 (in addition to the Sizzle checks)
Avoids QSA for simple id selector line #121
Avoids QSA for simple tagName selector line #142
Dojo 1.4.0
Starting with combinator check line #9240
IE pseudos selector check line #9244
className case bug line #9246
Avoids `:contains` and `:checked` line #9255
Avoids attribute selector `|=` line #9256
Converts to a dojo.NodeList #9583
NWMatcher 1.2.1 (line numbers range from 233 - 302)
className should be case-sensitive in quirksMode (draft spec)
`:enabled` and `:disabled` bugs with hidden fields (Firefox 3.5
QSA bug)
IE8 throws errors with some pseudos
`:checked` bugs with checkbox fields (Opera 10beta3 bug)
link bugs with hyperlinks matching (Firefox/Safari)
Attribute bugs with isMap, checked, disabled, multiple, readonly,
selected
Avoid QSA for simple id, className and possibly tagName selectors
Avoid issues when .length of a nodeList maybe an element line
#1206
I am not debating the quality of there checks but I am saying they at
least attempt to check for inconsistencies/bugs.
I believe your Slickspeed results aren't very useful because it only
averages the time it takes to execute a method call 4 times per test
which results in a lot of useless 0ms returns.
So I used a modified version of Slickspeed which tests the max number
of executions a function can perform in a given time period (in this
case 200ms to start, later after Richard's review, I bumped it to
400ms).
At first I used a version of your My Library from your builder (just
the dom+query module) and then later, after you mentioned your builder
produced outdated code, I switched to the version from your download
page.
(both *without* your QSA addon because I take issue with it)
To be fair I then posted results from a range of browsers (most did
not support QSA) and marked your score with an asterisk.
The results re-posted here for context.
Win XP (mylib.js from your builder using just the DOM query modules)
-----
IE 7.0.5730.11
32 51 21 39* 73 59 26
IE 6.0.2900.5122.xpsp_sp3.gdr.080814-1236
30 50 20 38* 75 59 26
IE 8.0.6001.18702 (Compatibility View)
56 91 33 72* 216 108 62
Opera 9.50 (build 10063)
160 150 55 68* 339 170 128
WinXP (using mylib-min.js from your download page)
-----
Opera 9.25
49 81 29 40* 151 90 42
Opera 9.50
159 146 57 112* 347 173 123
Opera 9.64
127 127 47 98* 316 143 108
Opera 10.10
201 352 62 109* 554 426 368
Chrome 1.0.154.36
252 407 139 279* 849 476 448
Chrome 2.0.172.28
267 615 144 335* 1499 830 716
Chrome 3.0.195.21
350 946 161 114* 2160 1333 970
IE6
29 47 18 35* 69 60 24
IE8 (Compatibility View)
61 97 38 81* 234 117 64
Firefox 3.6
244 305 188 99* 922 354 318
OSX 10.4
--------
Safari 2.0.0
1 0 9 1* 10 5 0
Safari 2.0.4
2 0 2 3* 15 0 2
Safari 3.04
17 20 13 15* 54 24 16
Safari 3.1
177 302 84 124* 562 387 362
Firefox 2.0
7 12 7 7* 28 14 7
Richard Cornford then reviewed my Slickspeed internals and made some
suggestions (none of which changed the overall result trend)
As per Richards's review I increased the sample time from 200ms to
400ms and made it display the straight execution count in the results.
IE8 (Compatibility Mode)
5,958 8,362 3,238 5,681* 17,768 8,630 3,499
Opera 9.25
7,675 13,137 4,688 6,599* 25,826 14,941 6,620
Opera 9.50
33,643 31,268 11,725 24,128* 71,395 36,086 27,150
Safari 3.0.4
2,715 2,561 2,333 2,325* 8,794 3,787 2,547
Out of the 23 results posted I believe 5 used QSA.
In many of the results `My Library` was one of the slowest libs tested
(though in some it was middle of the road or better)
I apologize for any impression that I was trying to mislead people. I
have added a note to the Slickspeed stating MyLib is without the QSA
addon.
I would like to try to keep the dialog from turning into a flame war
and avoid name calling/personal attacks.
(I certainly contributed to the first round of dialogs spiraling into
flame bait and would like to avoid it again)
I am not cheerleading any major framework and really only raised an
issue with your results because of how abusive, warranted or not, I
think you are toward other frameworks/developers. I hope my test
results are useful to you and help you fine-tune your approach.
I didn't say that you were.
>
>> There was a bogus test posted that excluded my QSA add-on (without
>> noting the fact) and then asserted My Library was "one of the slowest"
>> because QSA out-performed it.
> That is wrong. The majority of browsers I reported (18 of 23 results)
> do *not* have QSA.
>
>> This was ostensibly because the other
>> libraries had gone to great lengths to ensure their QSA tack-ons were
>> consistent cross-browser.
> I didn't say "great lengths to ensure", I said at least they attempted
> to put an effort into it.
That was later. The general implication was that there were lots of QSA
bugs and therefore my 0 workarounds were way below par. But fair enough.
>
> Here is what I found:
> (I am not counting the try-catch as a bug check because all have that)
>
> My Library QSA addon has 0 QSA bug checks
Right. I'll add the Webkit quirks/className/case check when I have a
chance.
>
> YUI 3.0.0 has 0 QSA bug checks that I could find :(
Not surprised. They've got a lot of work to do on the DOM side too. :(
>
> MooTools 1.2.4 doesn't use QSA
Okay. Good for them! Seriously. That's the sensible approach for now.
>
> Prototype 1.6.1 (next release they are switching to Sizzle)
Jeez. Well, at least bugs will be in just one place. :)
> WebKit className issue line #3217
> Context check line #3293
I'll look at the second one.
>
> Sizzle 1.0 (Used in jQuery):
> WebKit className issue
> http://github.com/jeresig/sizzle/blob/master/sizzle.js#L894
>
> Avoid QSA on non HTML elements
> http://github.com/jeresig/sizzle/blob/master/sizzle.js#L903
I noted that, but I think it is a waste of time (and not exactly
accurate). None of these CSS selector queries are appropriate for XML
as far as I can see. They might work in some cases.
>
> Avoid issues when .length of a nodeList maybe an element
> http://github.com/jeresig/sizzle/blob/master/sizzle.js#L724
Are you talking about the workaround for form controls named "length"?
That's valid, but not related to QSA.
>
> jQuery 1.4.1 (in addition to the Sizzle checks)
> Avoids QSA for simple id selector line #121
> Avoids QSA for simple tagName selector line #142
That's sensible.
>
> Dojo 1.4.0
> Starting with combinator check line #9240
I'll look at that one. I don't believe I support queries that start
with a combinator at all, but will have to check. Sounds odd.
> IE pseudos selector check line #9244
That's covered by try-catch and if the check involves a UA sniff, it is
disallowed.
> className case bug line #9246
> Avoids `:contains` and `:checked` line #9255
The avoidance of "checked" is an incomplete attempt to make it gibe with
the DOM traversal (they all foul up on user data AFAIK). Avoiding the
odd :contains psuedo-selector
> Avoids attribute selector `|=` line #9256
> Converts to a dojo.NodeList #9583
I don't follow on that last one. I return an Array object, regardless
of the fork taken.
>
> NWMatcher 1.2.1 (line numbers range from 233 - 302)
I don't know what that is.
> className should be case-sensitive in quirksMode (draft spec)
> `:enabled` and `:disabled` bugs with hidden fields (Firefox 3.5
> QSA bug)
Don't support those two (and likely never will). I just don't think it
makes sense to try to support every selector.
> IE8 throws errors with some pseudos
> `:checked` bugs with checkbox fields (Opera 10beta3 bug)
I'd be careful of any reported bugs related to user data. If they
didn't recognize that their DOM traversal was being contaminated, they
may be trying to accommodate that shortcoming in the new fork.
> link bugs with hyperlinks matching (Firefox/Safari)
Also something botched due to attribute handling in DOM traversal, so
likely a compensation in the new fork.
> Attribute bugs with isMap, checked, disabled, multiple, readonly,
> selected
I am sure I have those covered. And checked/selected is user data
again. And this looks like an incomplete list of issues related to
buggy MSHTML attribute methods. I don't believe these are QSA-related.
> Avoid QSA for simple id, className and possibly tagName selectors
> Avoid issues when .length of a nodeList maybe an element line
> #1206
>
> I am not debating the quality of there checks but I am saying they at
> least attempt to check for inconsistencies/bugs.
I do too (on some of those).
>
> I believe your Slickspeed results aren't very useful because it only
> averages the time it takes to execute a method call 4 times per test
> which results in a lot of useless 0ms returns.
When QSA is involved, I agree. I've mentioned that there is not enough
precision to measure.
>
> So I used a modified version of Slickspeed which tests the max number
> of executions a function can perform in a given time period (in this
> case 200ms to start, later after Richard's review, I bumped it to
> 400ms).
Okay, but is it right this time?
>
> At first I used a version of your My Library from your builder (just
> the dom+query module) and then later, after you mentioned your builder
> produced outdated code, I switched to the version from your download
> page.
> (both *without* your QSA addon because I take issue with it)
Right. And the builder will be updated soon as it has been few weeks at
this point (I've been busy).
I just don't think such measurements are of any real practical value.
And most of the others use browser sniffing and fail to deal with
attribute-related issues (in all browsers, but particularly in IE), so I
don't accept them as solutions.
>
> I apologize for any impression that I was trying to mislead people. I
> have added a note to the Slickspeed stating MyLib is without the QSA
> addon.
Okay. I appreciate that. Seems only fair.
>
> I would like to try to keep the dialog from turning into a flame war
> and avoid name calling/personal attacks.
You really crossed the line digging into (and misreporting) my private
business. But I'm not interested in flaming either.
> (I certainly contributed to the first round of dialogs spiraling into
> flame bait and would like to avoid it again)
Yes. Fair enough.
>
> I am not cheerleading any major framework and really only raised an
> issue with your results because of how abusive, warranted or not, I
> think you are toward other frameworks/developers.
I've really lost patience with the lot of them. I feel like they are
fumbling the game away and we will all end up programming Flash (or the
like) because they have made cross-browser scripting look much harder
than it is (and have really perverted the whole thing with browser
sniffing and other bizarre strategies).
> I hope my test
> results are useful to you and help you fine-tune your approach.
>
I will look at them again. Yes, I could do to fine-tune. I haven't
profiled or even put much thought into optimizing the DOM traversal end
of it.
As mentioned, the bulk of that code was written years ago. The thing
is, I don't think GP libraries are a good approach to browser scripting
at all, so I stopped working on it (and repeatedly warned _against_
using it for anything but an example). I was primarily trying to show
how it could be done without browser sniffing. It took until IE8's
release to demonstrate that the system worked. I slept right through
the release of that thing and was quite pleased to see that My Library
came through unscathed when I finally got around to testing it. I feel
that is in stark contrast to the other efforts, which are still having
problems with that browser (as predicted two years back in my
discussions with Resig about jQuery's incessant sniffing).
You have noted some legitimate bugs (and some not so legitimate). And,
yes my documentation is not quite up to speed yet (which is not a good
thing).
However, I take issue with the idea that because I made mistakes two
years ago (which I have admitted here numerous times), it invalidates my
criticism of the same mistakes being made to this day. It doesn't
follow. Basically, my attitude on that is "do as I say, not as I did"
as you learn from people who have already made the mistakes. Now that I
have revived the project and people seem to be ready for a change, I am
working to correct those mistakes (and to warn users of the potential
for problems in some areas).
The other thing is that I don't feel that results from other frameworks'
unit tests are appropriate indicators. Of course there will be a lot of
overlap as they all cover similar ground, but (other than Dojo) I don't
know exactly what they are testing and don't really want to get into it
until I have finished my own unit tests and defined _exactly_ what is
supported for each module. The typical Web developer is ignorant of the
details, so it could serve to mislead people.
And, I assure you, due to rotten attribute handling and browser
sniffing, most of these other frameworks will fail my unit tests, which
cover things they definitely specify as supported.
I don't mind criticism at all, but it needs to be honest and definitely
should not be personal. If _I_ make (or made) a mistake on something or
missed something, it doesn't let the others off the hook for their
various failings. Their pitch has always been the vigilance of
thousands of users and developers (and the number of years they've been
at it). So why can't they keep up with an effort that was thrown
together in a couple of months and then ignored for two years? It seems
paradoxical to me. And I am by no means the only one capable of such a
display. But most professional (and competent) JS developers don't
believe in GP libraries as browser scripts should be context-sensitive,
hence the lack of good GP examples.
Also, I believe that any that reference the UA string are forfeiting the
game, and their results should be thrown out. I also don't feel that
blowing up in older browsers is appropriate (and I don't see any way to
avoid it with most of these other things).
>> Avoid issues when .length of a nodeList maybe an element
>> http://github.com/jeresig/sizzle/blob/master/sizzle.js#L724
>
> Are you talking about the workaround for form controls named "length"?
> That's valid, but not related to QSA.
>
Form control named "length" just barely scratches the surface of the
type of problem caused by unsafe name.
http://jibbering.com/faq/names
Best to just avoid naming form controls (or other element) as "length",
"elements", "title", etc.
[...]
Yes. I deal with that in the getAttribute wrapper. Though I am on the
fence as to whether I should. An immediate failure in IE may be a
better tactic. But then, I don't think this issue is present in IE8
standards mode and some Web developers refuse to test IE < 8, so a bug
could slip through to production. :(
>
> http://jibbering.com/faq/names
>
>
> Best to just avoid naming form controls (or other element) as "length",
> "elements", "title", etc.
> [...]
No question.
Awesome reply.
> Are you talking about the workaround for form controls named "length"?
> That's valid, but not related to QSA.
It might be still be a QSA issue (for IE, thought I haven't confirmed)
but the point was it was still doing extra processing in the QSA
branch.
As for the IE8 bugs I reported, they are related to QSA as the IE
attribute issues and other bugs are carried over into QSA.
For example IE8 will return comment nodes in QSA with the `*` wildcard
and IE8 QSA seems to ignore PARAM elements (probably others too).
> I've really lost patience with the lot of them. I feel like they are
> fumbling the game away and we will all end up programming Flash (or the
> like) because they have made cross-browser scripting look much harder
> than it is (and have really perverted the whole thing with browser
> sniffing and other bizarre strategies).
I have felt that frustration too but you have to realize that name
calling/attacks really turn people off. Try to promote your framework
by focusing more on its positives and less on others negatives.
> Basically, my attitude on that is "do as I say, not as I did"
I think that is a good point but you seem to be currently promoting
that same/similar code base (Your tweets/website and what not)
> It took until IE8's
> release to demonstrate that the system worked.
I think the IE8 release is an excellent example that you can use to
promote your framework. I was frustrated with how other frameworks
handled that too. Just try to focus on how well your framework handled
the transition and not attack the others for having to rush out and
patch their libs.
> The other thing is that I don't feel that results from other frameworks'
> unit tests are appropriate indicators. Of course there will be a lot of
> overlap as they all cover similar ground, but (other than Dojo) I don't
> know exactly what they are testing and don't really want to get into it
> until I have finished my own unit tests and defined _exactly_ what is
> supported for each module. The typical Web developer is ignorant of the
> details, so it could serve to mislead people.
I disagree in part. I have found supplementing my existing tests with
those of others (at least their css selector unit tests), has helped
me find a lot of oddball bugs.
Some of their tests are invalid or are API specific and those are
weeded out.
> Also, I believe that any that reference the UA string are forfeiting the
> game, and their results should be thrown out.
I agree but I don't see a problem with a lib having UA properties like
a `SomeLib.Browser.IE` if they internally don't use them or only use
them in cases of visual bugs/bugs that can't be feature tested or lack
a relevant object inference.
Thanks for your thoughtful reply.
I'm curious as to why you say that. There are certain things
supported by the various libraries (":enabled", ":checked") that are
specific to HTML, but almost all the rest of it looks to me to be
appropriate to generic XML. What am I missing?
Also, I want to commend both David Mark and John-David Dalton for
raising the level of discourse in this thread.
-- Scott
[...]
>>>
>> Form control named "length" just barely scratches the surface of the
>> type of problem caused by unsafe name.
>
> Yes. I deal with that in the getAttribute wrapper. Though I am on the
> fence as to whether I should. An immediate failure in IE may be a
> better tactic. But then, I don't think this issue is present in IE8
> standards mode and some Web developers refuse to test IE < 8, so a bug
> could slip through to production. :(
>
if(badNamesExp.test(name)) {
throw new TypeError("Bad form control name: " + name + ".");
Yes, "*" is a pain anyway you slice it (and highly ill-advised). There
are disagreements between some of the frameworks on this one (even
without QSA). I'll look at that.
And IE has always handled OBJECT/PARAM combinations strangely. I
imagine that carries over to their QSA.
>
>> I've really lost patience with the lot of them. I feel like they are
>> fumbling the game away and we will all end up programming Flash (or the
>> like) because they have made cross-browser scripting look much harder
>> than it is (and have really perverted the whole thing with browser
>> sniffing and other bizarre strategies).
> I have felt that frustration too but you have to realize that name
> calling/attacks really turn people off. Try to promote your framework
> by focusing more on its positives and less on others negatives.
>
>> Basically, my attitude on that is "do as I say, not as I did"
> I think that is a good point but you seem to be currently promoting
> that same/similar code base (Your tweets/website and what not)
Somewhat, but I have made a lot of improvements in the last month or so
(and I don't see a lot of progress on the others, which really bugs me
as I pointed out some of the more blatant missteps years ago). They
seem keen to pile on "cool" new features, but neglect to deal with the
bugs in the old ones.
>
>> It took until IE8's
>> release to demonstrate that the system worked.
> I think the IE8 release is an excellent example that you can use to
> promote your framework. I was frustrated with how other frameworks
> handled that too. Just try to focus on how well your framework handled
> the transition and not attack the others for having to rush out and
> patch their libs.
Yes. I agree with that and have touched on it from time to time in
various forums. The "pitch" on my site is admittedly vague and I have
been working on some comparison tests (starting with these two
quasi-standard suites) to demonstrate the differences.
>
>> The other thing is that I don't feel that results from other frameworks'
>> unit tests are appropriate indicators. Of course there will be a lot of
>> overlap as they all cover similar ground, but (other than Dojo) I don't
>> know exactly what they are testing and don't really want to get into it
>> until I have finished my own unit tests and defined _exactly_ what is
>> supported for each module. The typical Web developer is ignorant of the
>> details, so it could serve to mislead people.
> I disagree in part. I have found supplementing my existing tests with
> those of others (at least their css selector unit tests), has helped
> me find a lot of oddball bugs.
I completely agree that running their tests could illuminate problems
that I may have missed. I will definitely do so when I feel it is
appropriate (not quite yet).
> Some of their tests are invalid or are API specific and those are
> weeded out.
Right. And I don't have time to do that weeding at the moment. I'll
get to it.
>
>> Also, I believe that any that reference the UA string are forfeiting the
>> game, and their results should be thrown out.
> I agree but I don't see a problem with a lib having UA properties like
> a `SomeLib.Browser.IE` if they internally don't use them or only use
> them in cases of visual bugs/bugs that can't be feature tested or lack
> a relevant object inference.
The problem is that anything based on the UA string is misleading. If
you must expose such flags, it would be better to use multiple object
inferences. And most of the time, IE is the culprit and it has its own
mechanisms for dealing with its quirks (e.g. conditional
comments/compilation).
And yes, if they abstain from using those internally, then they are not
disqualified. So it will take more than a search for
navigator.userAgent in the source to determine if they have false fronts.
>
> Thanks for your thoughtful reply.
>
NP.
I don't mean that the idea can't work for XML documents, just that the
current implementations are not equipped for that (e.g. botched handling
of get/hasAttribute and expandos which may be disallowed in XML DOM's).
On the latter, I think some _attempt_ to detect XML and set custom
attributes in lieu of expandos, but that's really shaky.
>
> Also, I want to commend both David Mark and John-David Dalton for
> raising the level of discourse in this thread.
>
Thanks for the vote of confidence. Contrary to popular belief, I am not
"trolling" here, nor am I interested in flame wars. I want to raise
awareness for problems that I see as continuing endlessly for no good
reason (e.g. browser sniffing, botched DOM traversal, etc.) It is
certainly counter-productive when things devolve into non-arguments. :)
That's a possibility. Though I try to avoid introducing try/catch/throw
in the core modules. It's not that I care about NN4 and the like, but I
find it invaluable to be able to test the bulk of the core (particularly
the DOM-related modules) in ancient browsers at the moment. I'm getting
to the point where I care less about that though as I think I've filled
in the cracks in the feature testing well enough at this point (i.e. the
older browsers have a chance to degrade gracefully). At the moment,
Flash and Ajax are the only two that trigger the wholesale parse error
degradation when included in the build.
> Thanks for the vote of confidence. Contrary to popular belief, I am not
> "trolling" here, nor am I interested in flame wars.
I don't know, some of your threads seem to be full of flame bait.
You could have probably approached them in a better way to provide
constructive feedback without the flame injected into them.
> I want to raise awareness for problems that I see as continuing endlessly for no good
> reason (e.g. browser sniffing, botched DOM traversal, etc.) It is
> certainly counter-productive when things devolve into non-arguments. :)
I agree, I think those are problems that should be highlighted.
Speaking of raising awareness, have you thought about submitting
speaking proposals to the various JS conferences ?
Huh. I don't see that so much. What is determined to be an insult varies
often the person writing it doesn't see it as the person reading it.
You write things like buffoon, loser, dumb, idiot a lot. I would call
that ad hominem.
Roja Gilwreathe is probably an ironic pun on Roger Gilreath.
I fully support XHTML, though feel it is folly at this point (will be
making that a build-time option in the near future). The basic DOM
stuff should work with other XML documents as well, but I am not sure
about the queries.
>
>> Thanks for the vote of confidence. Contrary to popular belief, I am not
>> "trolling" here, nor am I interested in flame wars.
> I don't know, some of your threads seem to be full of flame bait.
> You could have probably approached them in a better way to provide
> constructive feedback without the flame injected into them.
Perhaps. But there's a long history here (i.e. there have been lots of
flames from both "sides" over the course of many years). It's
particularly irritating that the "major" library contributors (seemingly
all of them) denigrate this newsgroup as full of "trolls", when in
reality (actual reality, not their idea of a "real world" where they
just "get things done"), this is where they should be looking for
answers (virtually any question you can think of has an answer somewhere
in the archive, so you don't even have to converse with anybody to solve
problems).
>
>> I want to raise awareness for problems that I see as continuing endlessly for no good
>> reason (e.g. browser sniffing, botched DOM traversal, etc.) It is
>> certainly counter-productive when things devolve into non-arguments. :)
> I agree, I think those are problems that should be highlighted.
> Speaking of raising awareness, have you thought about submitting
> speaking proposals to the various JS conferences ?
Not really. Why travel and speak at podiums when I can reach the whole
world right here from my den? Of course, if the price was right... :)
Read blog comments, tweets, forum posts, etc. and you will see that word
used to describe any behavior that rubs the author the wrong way. It's
meaningless at this point.
And you don't consider this "Roja" post to fit the classic definition of
trolling? And how about the various anonymous twits that pop in to
insult the entire NG every time a critical code review is posted? Those
are trolls in the classic sense.
>
> You write things like buffoon, loser, dumb, idiot a lot. I would call
> that ad hominem.
Perhaps you are referring to my arguments with you? :) And I
distinctly remember you referring to "dumb code" in Dojo and talking a
lot of shit about the W3C people as well. We all have out pet peeves.
>
> Roja Gilwreathe is probably an ironic pun on Roger Gilreath.
I fail to see the irony. Seems more like yet another anonymous loser
(oops, there I go again) venting without credit.
Er, that would be a break even venture at best (and I hate traveling). :(
> I would love to see you speak at SXSW or JSConf, go for it ! :D
>
Thanks. If they can do it virtually, maybe I will. But the chance that
I would actually take the time out to go to those (assuming they aren't
holding them in Cincinnati) is virtually nil. Sorry.
It might be misused but does that make it totally meaningless?
> And you don't consider this "Roja" post to fit the classic definition of
> trolling? And how about the various anonymous twits that pop in to
> insult the entire NG every time a critical code review is posted? Those
> are trolls in the classic sense.
>
>> You write things like buffoon, loser, dumb, idiot a lot. I would call
>> that ad hominem.
>
> Perhaps you are referring to my arguments with you? :)
Yes I have been the brunt of your name calling and I don't know why you
would be happy about that. what you say about me says more about you
than it does about me at this point.
I don't have to call you names at all. People will think whatever they
do of you; you create that impression.
And I
> distinctly remember you referring to "dumb code" in Dojo and talking a
> lot of shit about the W3C people as well. We all have out pet peeves.
>
Possibly. Calling dojo's code dumb could be considered ad hominem, I
suppose though, more like attack the code, but since it is a work of an
author, that could very well be considered ad hominem.
Then again, possibly that post which you refer to was one of the posts
that "somebody" (and his alias) went and marked one star while markup up
yours with four stars (or is it five?). I rarely use GG anymore...
Regarding my comments about the w3c - those are mostly are factual. I
did express my opinion that they are arrogant and out of control. Is
that ad hominem? Seems like a stretch. I do have reason to believe they
are arrogant and the out of control is evidenced in the fact that they
continue to push forth bad APIs with testcases showing that the API is
flawed.
Fact: The w3c's Philippe Le Hegaret, Art Barstow, Charles
McCathieNevile, Mike Smith, Doug Schepers banned me permanently. They
said it was a two-week ban. Philippe Le Hegaret mentioned one statement
I had made on list, using the term "misguided individuals", and also
included lies and corroboration as justification for banning me. The
words "misguided individuals" is possibly considered ad hominem, though
I didn't see it that way in that case.
I also stated that the w3c is a pay-to-play organization. That is
another fact, so not ad hominem.
I cannot *sincerely* apologize for anything in that conversation and I
do not apologize for the false things that Philippe LeHegaret and
cohorts said I did.
I stated *here* that the w3c is arrogance out of control, that is my
opinion and I stand by it.
But you're right about the Dojo code. I'll try and stick to facts about
the code rather than calling it dumb.
The brunt? Hardly. But buffoon rings a bell. And realize that my
smileys are virtually always meaningless mockery. I detest smileys and
think written communication could do very well without them. :(
>
> I don't have to call you names at all. People will think whatever they
> do of you; you create that impression.
You say your share of stupid things directed at me.
>
> And I
>> distinctly remember you referring to "dumb code" in Dojo and talking a
>> lot of shit about the W3C people as well. We all have out pet peeves.
>>
> Possibly. Calling dojo's code dumb could be considered ad hominem, I
> suppose though, more like attack the code, but since it is a work of an
> author, that could very well be considered ad hominem.
>
> Then again, possibly that post which you refer to was one of the posts
> that "somebody" (and his alias) went and marked one star while markup up
> yours with four stars (or is it five?). I rarely use GG anymore...
Ah, here's a prime example. I don't use the stars at all (what a waste
of time). If you think that every time you get a one-star rating and/or
I get a five-star rating that it is my doing, you are clearly being
paranoid. GG is a big world (and I don't use it much either these days).
And what on earth does any of that have to do with your comment about Dojo?
>
> Regarding my comments about the w3c - those are mostly are factual. I
> did express my opinion that they are arrogant and out of control.
Eeek! Troll, snark, ad hominem straw man, etc.
> Is
> that ad hominem? Seems like a stretch.
Dunno. My Latin is pretty weak. Personal attack? Sounds like it.
> I do have reason to believe they
> are arrogant and the out of control is evidenced in the fact that they
> continue to push forth bad APIs with testcases showing that the API is
> flawed.
And I have reason to believe that certain people are (or act like)
buffoons. What's the difference.
>
> Fact: The w3c's Philippe Le Hegaret, Art Barstow, Charles
> McCathieNevile, Mike Smith, Doug Schepers banned me permanently.
LOL. Maybe they are the ones panning your posts?
> They
> said it was a two-week ban. Philippe Le Hegaret mentioned one statement
> I had made on list, using the term "misguided individuals", and also
> included lies and corroboration as justification for banning me. The
> words "misguided individuals" is possibly considered ad hominem, though
> I didn't see it that way in that case.
Perspective is everything.
>
> I also stated that the w3c is a pay-to-play organization. That is
> another fact, so not ad hominem.
Ad hominem implies fiction? My Latin must be worse than I thought.
>
> I cannot *sincerely* apologize for anything in that conversation and I
> do not apologize for the false things that Philippe LeHegaret and
> cohorts said I did.
Perhaps if you offered an *insincere* apology they would lift the ban
and stop giving you one-star ratings. :)
Let me pioneer that. Dear jQuery, sorry I called you junk. Clearly you
are a revolutionary script. I'll try their group in a day or so. I bet
I'm still banned. Of course, _that_ is why I keep a stable of aliases.
As do you, DHTML.
>
> I stated *here* that the w3c is arrogance out of control, that is my
> opinion and I stand by it.
What difference does it make *where* you stated it?
>
> But you're right about the Dojo code. I'll try and stick to facts about
> the code rather than calling it dumb.
You did state facts at the same time. My point is you went a little
overboard (perhaps in anger or frustration) as we are all capable of
doing from time to time.
[...]
>
> Ah, here's a prime example. I don't use the stars at all (what a waste
> of time). If you think that every time you get a one-star rating and/or
> I get a five-star rating that it is my doing, you are clearly being
> paranoid. GG is a big world (and I don't use it much either these days).
>
I don't know.
> And what on earth does any of that have to do with your comment about Dojo?
>
>> Regarding my comments about the w3c - those are mostly are factual. I
>> did express my opinion that they are arrogant and out of control.
>
> Eeek! Troll, snark, ad hominem straw man, etc.
Posting what I wrote on w3c list it *would* be flame bait and would not
be pertinent to any particular discussion
>
>> Is
>> that ad hominem? Seems like a stretch.
>
> Dunno. My Latin is pretty weak. Personal attack? Sounds like it.
>
Okay I don't know the post you're referring to. I can sort of agree with
that.
Calling the code dumb not the same as calling the person who wrote it
dumb, though, that's what I meant by ad hominem.
> And I have reason to believe that certain people are (or act like)
> buffoons. What's the difference.
>
>> Fact: The w3c's Philippe Le Hegaret, Art Barstow, Charles
>> McCathieNevile, Mike Smith, Doug Schepers banned me permanently.
>
> LOL. Maybe they are the ones panning your posts?
>
Uh-huh. And bumping up yours. And Roger Gilreath's.
>> They
>> said it was a two-week ban. Philippe Le Hegaret mentioned one statement
>> I had made on list, using the term "misguided individuals", and also
>> included lies and corroboration as justification for banning me. The
>> words "misguided individuals" is possibly considered ad hominem, though
>> I didn't see it that way in that case.
>
> Perspective is everything.
>
Nokia has significant financial investment and interest. I have no
corporate backing; it was easy for them to get rid of me.
>> I also stated that the w3c is a pay-to-play organization. That is
>> another fact, so not ad hominem.
>
> Ad hominem implies fiction? My Latin must be worse than I thought.
>
No, ad hominem is attack the man. Facts aren't attacks. Finding a
problem with something and insulting somebody by name calling are
totally different things.
Also I suggest looking up tu quoque, which is what it sort of looks like
here. Yes I do use ad hominem at times. I also lie about stuff to
people, have been known to women in various situations, etc.
The point I was trying to make is that there is a lot of insults coming
from you to others. Last week you called Scott Sauyet a buffoon and a
loser after he posted up test cases but he remained calm about it and
didn't whine at all.
> What difference does it make *where* you stated it?
>
What I say here, after the fact, is not something that could be used as
justification for banning me from the list. It is here, not there, and
it is after the fact.
I'm sort of glad. :)
>
> Calling the code dumb not the same as calling the person who wrote it
> dumb, though, that's what I meant by ad hominem.
Right.
>
>> And I have reason to believe that certain people are (or act like)
>> buffoons. What's the difference.
>>
>>> Fact: The w3c's Philippe Le Hegaret, Art Barstow, Charles
>>> McCathieNevile, Mike Smith, Doug Schepers banned me permanently.
>>
>> LOL. Maybe they are the ones panning your posts?
>>
>
> Uh-huh. And bumping up yours. And Roger Gilreath's.
Roger Gilreath? How many posts does "he" have here? Two? And are you
really delusional enough to think there is some connection between my
post ratings and yours? I've certainly never rated any of your posts.
I think I once rated one of Resig's posts just for the hell of it. And
yeah, it was a one (I'd have given it a zero if it were possible).
>
>>> They
>>> said it was a two-week ban. Philippe Le Hegaret mentioned one statement
>>> I had made on list, using the term "misguided individuals", and also
>>> included lies and corroboration as justification for banning me. The
>>> words "misguided individuals" is possibly considered ad hominem, though
>>> I didn't see it that way in that case.
>>
>> Perspective is everything.
>>
>
> Nokia has significant financial investment and interest. I have no
> corporate backing; it was easy for them to get rid of me.
So get some corporate backing and get rid of _them_.
>
>>> I also stated that the w3c is a pay-to-play organization. That is
>>> another fact, so not ad hominem.
>>
>> Ad hominem implies fiction? My Latin must be worse than I thought.
>>
> No, ad hominem is attack the man. Facts aren't attacks. Finding a
> problem with something and insulting somebody by name calling are
> totally different things.
Pay-to-play would not seem like a personal attack. Misguided would.
>
> Also I suggest looking up tu quoque, which is what it sort of looks like
> here. Yes I do use ad hominem at times. I also lie about stuff to
> people, have been known to women in various situations, etc.
Lie about stuff? Now every time I get a one-star rating on GG, I am
going to think it was you. And yeah, I sure get my share of them. Lot
of nuts out there.
>
> The point I was trying to make is that there is a lot of insults coming
> from you to others. Last week you called Scott Sauyet a buffoon and a
> loser after he posted up test cases but he remained calm about it and
> didn't whine at all.
You know my posts better than I do. I don't remember the details, but I
am sure I had a good reason. Anyway, can we get back on the topic at
hand: QSA--buggy in lots of browsers? (not David Mark--rude?)
>
>> What difference does it make *where* you stated it?
>>
>
> What I say here, after the fact, is not something that could be used as
> justification for banning me from the list. It is here, not there, and
> it is after the fact.
You seem a bit stung by the ban. Get an alias! ;)
>>> Regarding my comments about the w3c - those are mostly are factual. I
>>> did express my opinion that they are arrogant and out of control.
>>
>> Eeek! Troll, snark, ad hominem straw man, etc.
>
> Posting what I wrote on w3c list it *would* be flame bait and would not
> be pertinent to any particular discussion
>
I meant that if I were to post "you guys are arrogantly out of control"
on w3c lists that would be flame bait.
>
> Lie about stuff? Now every time I get a one-star rating on GG, I am
> going to think it was you. And yeah, I sure get my share of them. Lot
> of nuts out there.
>
Anyone who says they never lie about anything is full of it.
I see. And how do I know you aren't lying about that?
Searching last night, I stumbled onto one of your typical "have your
cake and eat it too" veiled references. You like to call names
without actually naming names, which is pretty weak (particularly on
the Internet where there is no chance of coming out of it with a
bloody nose).
Since you seem to be into nostalgia (specifically regarding my posts),
I thought you might find it interesting.
http://groups.google.com/group/comp.lang.javascript/msg/e1979e332400a370
"Some individuals point out shortcomings in jq. Others parrot those
points, obnoxiously."
That's obviously directed at me. Parroting implies mimicry and
repetition. The latter is necessary as there is a constant influx of
new readers who rarely read posts that predate their presence (and who
do you think packs them in here?) Sure it can be tiresome to regular
readers, but so what? Feel free to skip my posts (or even filter
them).
And later in that post:-
""There's the - attr - which still deals with property/attribute
ambiguously, and that can cause more divergence between browsers than
it
solves. "
Now, who's parroting who? And a pretty weak rendition to boot. :)
It's the same old story. You can't stand the fact that _you_ haven't
changed the game. I'm not saying you couldn't have; but, for whatever
reason, you didn't. And piggy-backing on my posts isn't going to
bring you any glory either. In fact, this sort of off-topic babbling
about _me_ has got to be more tiresome to regulars than my code
reviews (which are, after all, on topic for this group).
And speaking of the reviews, as Peter alluded to, do you really think
the message would have seeped through (eventually) if it hadn't been
REALLY LOUD (obnoxious in your spin). I don't. ;)
YOU could change the game, David. You're a smart, conscientious
developer with an authoritative knowledge of the intricacies of
browsers, and you're devoted to furthering your knowledge and
preaching doing things the right way.
However, it seems you only you want to be right if it makes someone
else wrong. Bug reports are constantly framed in the context of what
the major libraries are doing wrong. You won't go to a conference and
share with the community because it's a waste of your time. You don't
market My Library because you might have to actually support people
who don't already know everything you do.
So instead of changing the game, you're just mean. About everything.
All the time. Always. And you won't help a project unless they want
to accept that help with a heaping dose of your vindictive attitude.
True, but so are the vast majority of people on this NG, the vast
majority of the time. I hang around becaus they are some of the best,
and if you can cut through all the inane bickering, they all make rather
valid points.
Just my two cents
--
--Cody Haines