[09:00:41] Here [09:00:42] (15 hours 50 mins ago) tell rwaldron I hope rose like's her surprise dude! You're crafty! [09:00:51] hey DaveMethvin [09:00:54] hey jrburke [09:00:56] imma coiming! [09:00:57] hey all [09:01:00] hey [09:01:09] Hi rwaldron [09:01:09] (286 hours ago) tell jrburke nice to see you around anyway ;) [09:01:38] hey JohnResig [09:02:28] so i put a few topics on the agenda...just looking at the schedule and thinking the conf is coming really soon now [09:03:03] yeah, we're just over a month away [09:04:48] seems like we should probably re-discuss rAF [09:05:08] hahaha [09:05:12] i was waiting for that [09:05:17] it was tooooo quiet [09:05:20] heh [09:06:00] well we have that really nice thread in the forum that lays out the points nicely [09:06:29] yeah, I agree with those that wanted to back this out [09:06:46] are we going to be putting it back in though? [09:06:57] we changed the behavior in 1.6, it caused an unforseen regression, we need to back it out until we can make it not cause regressions [09:07:31] we could leave it in and control whether we use it with a flag, that's not hard to do [09:07:31] thankfully users probably won't have to wait too long (~1 month) [09:07:44] DaveMethvin: but that still breaks apps [09:07:49] do we have a plan for non-regressive rAF? [09:07:53] it's just papering overing the solution [09:07:55] JohnResig: considering the handling of timeouts / intervals in the spec - its going to break apps anyway [09:08:09] gnarf: then maybe rAF isn't for us! [09:08:15] i agree, but do we have a solution that can land in a month? [09:08:20] didn't attr/prop have the same issue? wouldn't the better answer for them be to not upgrade yet? [09:08:22] i'm talking about if we remove raf, we sitll have issues [09:08:40] gnarf, is FF cycling down set(Timeout|Interval) when out of focus now too? [09:08:47] yes [09:08:48] danheberden: it did, thus we reverted all the changes in 1.6.1 [09:08:52] rwaldron: yes [09:08:57] paul_irish was that yes to me? [09:09:01] reverted or fixed [09:09:02] yes [09:09:05] ;) [09:09:08] cool [09:09:19] so, even if we go to an rafless approach, there will still be animations that break [09:09:26] for the same "reasons" [09:09:27] ^^ [09:09:41] so, JohnResig see above, where part of the "regression" [09:09:43] hahah [09:09:47] we echo ditto [09:09:50] :D [09:09:50] just seems weird we got to a good place of no new features in point releases, and here we are removing one [09:09:56] gnarf: if that's the case, then how come rAF is exposing whole new realms of breaking apps [09:10:15] the changes coincide [09:10:19] danheberden: this isn't a feature, it doesn't change any exposed API, it caused a regression [09:10:25] rwaldron: coincide with what? [09:10:39] JohnResig: because now the same issue will exist with any pure setTimeout call in FF, no rAF necessary [09:10:44] ( i assume ) [09:10:49] right [09:10:54] the inclusion of rAF and the changes to setTimeout/Interval happened around the same time [09:10:56] https://developer.mozilla.org/en/window.setTimeout#Minimum_delay_and_timeout_nesting FF5 and Chrome 11 + have their timers clamped to 1000ms in inactive tabs [09:10:58] approx [09:11:17] ah, that's informative [09:11:32] so let's start with a "statement of support" issue ... does everyone agree that it makes sense for browsers to reduce the cpu/battery impact of invisible windows? [09:11:34] ok, so it's more an issue with two new browsers then [09:11:44] paul_irish: granted, I think thats a dumb idea - and needs to be removed from the spec... [09:11:48] DaveMethvin absolutely [09:11:59] if we can't fix it by backing it out then it really doesn't matter, does it? [09:12:02] esp with low power devices [09:12:02] just leave it in [09:12:05] I think that we should support people who want to use raf [09:12:20] JohnResig: and if we can't fix it with timeouts because they'll be broken in the exact same way [09:12:21] then... [09:12:27] so we're back to the flag? :) [09:12:29] we have to call in the unicorns [09:12:31] ajpiano: complain to the browser? [09:12:31] I think the flag a) adds a way to determine if raf is in use, b) adds a way to disable it [09:12:39] and if backing it out doesn't fix it - then how does a flag "fix it"? [09:12:52] JohnResig: i don't know if i think it's unreasonable of the browser [09:12:52] JohnResig it doesnt [09:12:53] why would we want to disable it if it does the same thing as setTimeout [09:12:57] its more of a pacifier [09:13:07] rwaldron: a pacifier for what? [09:13:16] bad code [09:13:26] rwaldron: but won't our "fixes" not work [09:13:30] but if the bad code still performs badly with setInterval then what's the point [09:13:33] for those people who file reports that blame us/rAF/etc for their wn poorly designed code [09:13:40] the rAF animations won't stack up [09:13:43] no need to implement a flag if it'll have the same result either way [09:13:46] with the flag [09:13:47] we say "here, shut it off if you want" [09:13:53] but it wont matter [09:14:00] rwaldron: that's not a reason to implement a flag [09:14:07] DaveMethvin can you clarify that a bit [09:14:09] JohnResig: the code that will still break in FF will still break in FF with their upcoming changes, but their break isn't as bad as our current break [09:14:10] but if shutting it off isn't shutting it off, then the flag is pointless [09:14:17] because the #2 & #3 browser are changing the behaviour of the "old way" [09:14:28] gnarf: you're speaking too vaguely, what are you referring to? [09:14:32] ajpiano: precisely [09:14:40] JohnResig I'm not really taking a side either way [09:14:42] there are two browser features that impact animations: rAF and slowed timers [09:14:48] it sounds like raf is still a problem, just a tiny bit worse than the browsers's created one [09:14:59] when the tab is out of focus, any animations from rAF are queued [09:15:02] personally, if you asked me to make the final decision... I'd say "no flag" [09:15:08] so when the tab comes back into focus they all run at once [09:15:09] well, is rAF worse than setTimeout, or not - you guys just said that they were identical [09:15:10] * paul_irish wonders where he can read how apps break because of this stuff.. [09:15:13] so then it's like a "this is a new best practise" situation where the question is one of education, not one where we just try to come up with really clever hacks with timeouts to [09:15:13] so either they're identical, or not [09:15:20] if rAF is worse, then it goes out, end of story [09:15:22] this is of course after long consideration of all povs [09:15:28] if they're identical, then it stays in and we add no flag [09:15:51] JohnResig: So, if Intervals/Timeouts are clamped to 1000ms, the problem we have with rAF currently will still be visible in areas where the durations are within 1000ms [09:15:57] DaveMethvin in that situation, what happens with setTimeout? [09:16:13] JohnResig: presumably the issue would end up being like, ok, you'd get these intensely stacked animations, but they'd be weirdly throttled at the rate of the min setTimeout interval [09:16:31] so "less broken" isn't really less broken looking, it's just slightly less seizure-inducing [09:17:18] ajpiano: by "stacked" in this case you mean the jQuery-style animation queue? [09:17:23] as for why something might break, imagine a slide show where a setInterval advances the slide every 10 secs, and an rAF animation is fired based on the setInterval [09:17:30] so the clamped timeouts - the 1000ms, will happen in the background and raf will happen when the user gets back ot the page? [09:17:38] or tab, ratherr [09:17:48] the js is gonna put a new animation in there every 10 secs regardless of whether the prev is done or not [09:17:55] JohnResig: i mean like, a bunch of animations all rapidly playing back to back, yep [09:17:57] and with rAF and an inactive tab it on't be done [09:18:09] I can write a setTimeout that "lessens" the raf impact [09:18:24] eek [09:18:25] gnarf: what is the point of lessening it. [09:18:30] but because of the deferring nature of the timeouts, it has issues [09:18:33] sounds fragile [09:18:40] if it weren't for this clamping timeout shit, it would be great [09:18:58] and dequeing when the tab regains focus? [09:19:23] danheberden i was just thinking... [09:19:27] monitor the blur/focus times [09:19:34] "what if we ___ when blur/focus" [09:19:36] and fulfill animations according [09:19:37] or something [09:19:40] *accordingly [09:19:44] if !focus, don't do stuff [09:19:47] hey all, trying to catch up in the logs [09:19:51] * rwaldron shrugs [09:19:55] hey timmywil [09:20:07] the irony is that one really good reason for clamping sub-1sec timeouts is ... ANIMATIONS, which we are now "solving" with rAF! [09:20:08] what if we just don't queue animations when raf is waiting? or, perhaps better, only respect the last queued animation? [09:20:25] if we are only dealing with "animation" on the queue, there is another way to handle it [09:20:40] JohnResig: i have my doubts about the latter being something desirable [09:20:53] JohnResig I think with the understanding of what the browser is doing, the bad effects can be minimized [09:20:55] how would we know when it's waiting [09:21:08] what timmywil said, is there a way to know? [09:21:22] if you leave the page with a running queue? [09:21:23] or we could even just make all the queued animations synchronous, so that they all complete instantly when the user visits the page again [09:21:41] there is a big if there tho JohnResig [09:21:47] if there isn't a "delay" [09:21:54] or some other non-animation queue func [09:22:23] we can't just play the whole queue on return [09:22:42] This is something that will take some time to figure out and while we are figuring it out, removing raf is the least messy option. [09:22:59] timmywil: agreed [09:23:49] which, we should realise, means that most people who are doing javascript animations in their app are going to not get rAF even though it's implemented in bowsers [09:24:29] yes [09:24:33] which since we broadcasted that, sounds like a feature [09:24:41] this isn't the first time that we've not implemented a busted browser "feature" [09:24:55] * danheberden is done with his argument of feature :) [09:25:00] i disagree with calling it "busted" though [09:25:08] (busted in that it doesn't work well for us without considerable work) [09:25:11] the "feature" isn't broken, the code organization of some peoples animation code is "busted" [09:25:23] it's a very good idea but there is code that makes assumptions that break it [09:25:36] JohnResig: pretty sure we had more outcry about ?7535 than this [09:25:46] ?7535 [09:25:47] [#7535] Firefox Console error: Unexpected token in attribute selector: '!' (closed bug: wontfix) - http://jqbug.com/7535 [09:25:56] yeah, if you advance a slide every 10 secs and the user isn't there to see it, you shouldn't be advancing the slide [09:26:05] is this usecase for how this breaks what DaveMethvin mentioned above? just a repetitive timer that kicks off a rAF animation ? [09:26:22] ajpiano yooouuuu sunnovabitch [09:26:31] paul_irish: yes that's the most common one [09:26:31] rwaldron: i'm just saying, [09:26:34] paul_irish: anything that queues animations without thinking about it while the page isn't visible --- the most common being the reptitive timer [09:26:41] fixable by having the animation complete fn advance the slide for example [09:26:45] ajpiano i just had a PTSD flashback from that [09:26:48] so, thx [09:27:42] i just am not sure if "10 people complained, so no one ever gets rAF is a good idea" [09:27:44] so anyway i think it's more fair to say some people's assumptions are busted to the point that rAF can't be used effectively [09:27:44] or a clock that has to animate every second [09:27:46] Will removing rAF break less peoples code? Yes - Do I think we should be encouraging this bad animation code design? No [09:28:01] what gnarf said [09:28:06] esepially when the issue can be workd around in end-user code, [09:28:11] ya [09:28:17] but the q is whether there is enough broken code to justify backing it out [09:28:36] esp when the slow timer thing still is there [09:29:09] i'm not rabid one side or the other, i'm just sitting here rocking with my head in my hands over what a mess this is [09:30:04] in our earlier discussions it seemd like this has GOT to end with developers understanding the changes and writing their code differently [09:30:19] i don't think anyone is particularly rabid actually, just trying to figure out what the right answer really is :/ [09:30:38] Yeah, I'm just speaking up for rAF cuz I don't want it to go away without a fight. [09:30:50] I think it's an enhancement we know we want, and we want people to use [09:30:56] so I think removing it is a bad idea [09:30:57] ajpiano: take advantage of all browser features without breaking any old code, natch [09:31:16] i just don't even think like, that many people have complained relatively speaking [09:31:24] given the *potential* for how many people do this type of thing [09:31:38] have they just not upgraded? or did they work around it? [09:31:55] well there are a few common plugins that fall prey to this, i guess that's good b/c it's easy to fix a few plugins [09:32:09] Most people use animation callbacks [09:32:15] which doesn't break [09:32:19] remember that the majority of jquery sites are still on old versions that don't support rAF [09:33:22] And like I stated in the forum post, either way, I'm going to be talking about this issue in detail in my talk @ jqcon :) [09:33:59] There is another way to look at the slow timer issue. There may not be much more CPU load optimization provided with raf over a regular timer and at that point, the biggest advantage is the improved efficiency in block execution + redrawing. If that's not an issue (meaning there is no noticeable improvement in FF/Chrome), it doesn't give us much of a reason to include raf in the first place. [09:34:55] timmywil: other than stopping that jQuery slideshow in the hidden tab on my android from sucking up all my CPU [09:35:29] timmywil: i see your point, though, the timer is only firing once a sec so the cpu/battery impact is a lot less already [09:35:55] that makes the battery benefit of rAF a lot less attractive [09:36:01] DaveMethvin: exactly [09:36:01] ahh [09:36:04] missed the intro point [09:36:05] sry [09:36:08] ++ [09:36:32] i think that is a winning perspective [09:36:44] one we can use in the blog post :) [09:37:06] "why we backed out rAF" [09:37:42] I'm not sure that mobile webkit does this timer slowage [09:38:25] for the future, there's always the page visibilty api [09:38:33] JohnResig: what you thinkin [09:38:38] its a fairly recent change to webkit so it hasnt made its way around yet, gnarf [09:38:51] probably the newest nokia n90 or w/e has it [09:38:59] paul_irish: I really think that change needs to be questioned a LOT [09:39:18] timmywil: I'm agreeing with you and DaveMethvin here [09:39:20] paul_irish: but thats for someone elses meeting ;) [09:39:40] gnarf: lol [09:39:44] gnarf: there hasnt been much dissent about it on the standards lists fwiw [09:39:55] paul_irish: They can just look at our experience for why its a horrible idea :) [09:40:10] the standards guys don't make web sites, just standards [09:40:24] they also have no idea about your POV unless you tell them :) [09:40:28] I mean, querySelectorAll came out so perfectly /snark [09:40:43] lol [09:41:37] I guess I'll just never use jQuery 1.6.3 [09:41:39] JohnResig ahaha [09:41:41] :) [09:41:50] querySelectorBlackHole() [09:41:51] ha [09:41:54] gnarf: file a bug report [09:42:34] so ok, 45 minutes later we're ok with qSA being removed from 1.6.3 then? [09:42:36] gnarf why not offer a duckpunched jQuery.fn.animate ? [09:42:37] I think the benifits to including rAF are still valid, and that removing it doesn't really solve the problem, it just hides it [09:42:45] rwaldron: because its not .animate [09:42:46] DaveMethvin: hahaha [09:42:48] its the timer [09:42:58] and its not abstracted well enough to duck punch it [09:43:11] i guess you're right [09:43:17] that's why the flag sounded good, if rAF was worth keeping [09:43:17] requackstAnimationFrame [09:43:17] :/ [09:43:23] i was just trying to throw a posi spin out there [09:43:42] ajpiano++ [09:43:46] even if the flag had it turned off by default [09:44:03] DaveMethvin: I still think the "flag" needs to be seen more as a "support test" [09:44:30] gnarf: that definitely makes it easy to implement ... and remove! [09:44:31] This is a lot of debate for an issue we cannot solve ;-) [09:44:37] I think we're going in circles now [09:44:48] louisremi: right, now on to the budget deficit [09:44:58] DaveMethvin: :D [09:44:59] we have 15 minutes [09:45:03] I'm done arguing, I put all my points out there... Twice ;) [09:45:08] shall we vote? [09:45:10] gnarf: new 1.7 or 1.8 feature... expose jquery animation timers :p [09:45:23] yeah this isn't getting back in for 1.7 i think, too much to digest in a month [09:45:26] ajpiano: gonna have to be 1.8 before we reinclude raf / timers changes [09:45:28] so keep that in mind [09:45:49] animate is scheduled for a rewrite in 1.8 so that might be a perfect time for it [09:45:56] ajpiano: that won't help anyone. They have to rework their animation logic to take account of the pauses when tabs are inactives. That's it. [09:46:18] I guess my point is, either people fix their code now [09:46:18] louisremi: and the page visibility api may help there [09:46:31] or it breaks later anyway [09:46:35] no fault of jQuery [09:46:43] gnarf: true [09:47:01] so why not expose the vulnerability in the poor logic the end user has now [09:47:31] DaveMethvin: the page visibility API might help, but I've been able to fix slideshows by just using .stop() to prevent animation stack to build up [09:47:54] gnarf: cause apocalypse is coming in 2012, this way people can enjoy the rest of their lives in peace [09:47:54] :/ [09:48:20] okay, by removing rAF support we're saying that 1.6.3 and 1.7 won't support it, and 1.8 timeframe (January) we'll have some solution [09:48:30] damn that sounds scary when i write it that way [09:48:30] wut? [09:48:58] When in this conversation did you guys agreed to remove raf? Did I miss something? [09:49:05] If its coming to a vote, I vote against removal [09:49:07] it's gone already [09:49:15] not that my vote counts for anything :) [09:49:19] louisremi: last week :p [09:49:20] gnarf: sure it does [09:49:20] gnarf: untrue! [09:49:36] nobody came to last weeks meeting so it was short :P [09:49:56] oh god, why did I miss so many meetings... And, did removing it fixed ANYTHING? [09:50:06] dear god, again? [09:50:18] louisremi: there's a forum thread [09:50:33] also, meeting logs. it's a lot to go through again [09:50:37] can we uh, move on for now [09:50:41] okay, I'll have a look and stop bothering you, sorry [09:50:55] so, 1.6.3 release ... happening this week? [09:50:59] the reason i ask is that we can' [09:51:05] are we squared away? [09:51:19] the stuff i linked needs to be fixed or closed [09:51:26] still some stuff to do [09:51:44] i kinda hoped we'd have time to talk about it [09:52:12] guess we could push to next week and discuss later? [09:52:15] fix the bugs this week? [09:52:31] yeah, it does push 1.7 as well [09:52:36] oh, hmm [09:52:39] we don't want that [09:52:48] if we're gonna land 1.7 fixes in trunk [09:53:04] goood idea to leave a week or so after 1.6.3 for critical changes [09:53:11] so re 1.6.3 [09:53:15] i mean we can do it but it just gets messier [09:54:08] http://bugs.jquery.com/ticket/6150#comment:10 -- Anyone have any comments on providing a "stop" hook or should I just make it a non-property animation? [09:54:31] how about 1.6.3 on Monday 29 then/ gives us a week [09:55:45] +1 [09:56:06] how about if we come up with the deadlines here and then move the tech discussions back to -dev, will that work? [09:56:12] sure [09:56:31] what was the tentative date for 1.7? [09:56:34] I have no opinion on the deadlines, so if anyone has an opinion about that ticket, PM / -dev me ;) [09:56:55] beta for the jqconf? [09:57:06] prolly don't want to release and then be at the conf [09:57:07] oof, I would like to do final for jqconf [09:57:23] but if it's getting too rough, then yeah, we can do beta [09:58:16] so when should everyone have their stuff in for beta? i'd like to shoot for mid-Sept so we have a decent beta period and can do fixes [09:58:40] Sept 12? [09:58:56] worksforme [09:59:48] yeah, I'm fine with that [10:00:52] if we don't have too many problems we could get a release for the conf [10:00:57] If that works out, we could possibly do 2 weeks for beta, rc on the 26th and release at jqcon [10:01:18] I've got a meeting I've gotta run to, sorry! [10:01:21] np [10:01:35] i think we got the dates done, that was my goal [10:01:43] cya back at -dev! [10:01:52] kk