[09:02:48] ding dong [09:02:54] the witch is dead [09:04:50] DaveMethvin i didnt realize that unreviewed had grown so long [09:04:58] I'll spend some time on that today [09:04:59] hey all [09:05:08] hallo [09:05:09] hey JohnResig [09:05:45] JohnResig: that first link in the agenda is a question I had while reworking the data stuff [09:05:57] rumor has it you think people were relying on this ? [09:06:11] slash know? [09:06:12] :) [09:06:39] gnarf: yes, people rely upon this [09:07:18] so, we can't kill it yet? [09:07:26] well, presumably not :) [09:07:27] i did a codesearch and it seemed like the main question they were trying to answer is "are there events for this type?" [09:07:34] not a lot of usages [09:07:46] but if it's something enough people need it would be better to provide an interface [09:07:59] maybe deprecate, but not remove [09:08:03] i don't like them peeking into our underwear [09:08:19] I'm not sure how many people use it in script, but I know a lot of people use it for debugging [09:08:23] I was using it just the other day, in fact [09:08:35] L2 $._data() [09:09:06] right [09:09:06] well, it is convenient [09:09:33] i think we should provide an interface as well... it's never been actually *easy* to get the events even if you just want them for debugging [09:10:03] ajpiano: $('div').data('events') is pretty easy [09:10:07] if we define the interface, we are either locked into keeping the existing structure or remassaging it to match the interface [09:10:21] so for example, there is no more "live" event [09:10:35] timmywil: it's also kind of magic [09:10:44] true [09:11:00] $._data( elem, 'events' ) makes a little more sense to me [09:11:14] JohnResig: i use it for debugging too [09:11:21] seems clearer that you're doing something iffy that may change :) [09:11:53] but yeah, $._data( elem, 'events' ) is not quite as elegant as .data("events") [09:12:17] _data? [09:12:24] that's certainly an inelegant API [09:12:37] :) [09:12:38] I don't want to go down the Dojo road of having private _methods that people need to use [09:12:45] agree [09:13:00] how about .events()? [09:13:06] and have it just return the event object [09:13:16] it's accessing private data. I don't think of this as a public feature [09:13:17] http://www.google.com/codesearch#search/&q=\.data\%28\s*\%22events\%22%20-file:jquery.js&type=cs [09:13:35] i agree it's not a public feature [09:13:54] haha, even diaspora uses it [09:13:56] fine for debugging but i am not sure that we should encourage it [09:14:09] something like .events would definitely be expected not to change [09:14:35] jQuery Tools uses it [09:14:44] that's a pretty big user [09:14:51] whenever people have asked, we're always discouraged people from using it and explained like, hey, this is an internal API [09:15:10] does .bind() with no arguments offer anything useful? [09:15:23] * gnarf already doesn't like that suggestion, but... [09:15:43] it looks like people are using it to see if a specific event type is bound already [09:15:43] veeeetttooooo [09:15:47] jQuery Tools is defining a .hasEvent method [09:15:55] DaveMethvin not bad [09:15:57] so if we did: .events() (return event object) and .events("type") that would solve that [09:16:21] have .events("type") return undefined if there aren't any [09:16:24] then we're exposing the whole data structure ... not a fan [09:16:33] DaveMethvin a copy? [09:16:35] instead [09:16:36] DaveMethvin: return a copy... [09:16:46] deep copying now too [09:16:46] lol, that'd be super intuitive :( [09:16:48] or even, a limited subset of the information [09:16:49] just fyi [09:17:03] why would we want to obfuscate what's in there? [09:17:10] i feel like "checking for already bound events" is usually a problem you can think around, not actually do it [09:17:11] cause it might change [09:17:11] if all they need to know is whether events are attached, a method returning a boolean would be good [09:17:21] yeah, for example, "live" [09:17:46] the more we expose the more limited our options for refactoring [09:17:59] JohnResig I was just giving DaveMethvin suggestions, I'm not opposed to the straight object (a copy of) [09:18:15] DaveMethvin: jQuery.cache is already exposed [09:18:21] the cats out of the bag at this point [09:18:28] make them work REALLY hard to get at it [09:18:29] * gnarf grins [09:18:35] JohnResig: but a function on the prototype would get used more [09:18:51] exposed and documented are two different things, though, right? [09:18:57] ^^ [09:19:01] def [09:19:15] .data( "events" ) isn't really documented, yet we can't seem to pull it out [09:19:29] we use it [09:19:34] i just suggested some guy in irc use it [09:19:39] like last week [09:19:40] even with .events, .data('events') really shouldn't be removed at least until 1.8 [09:19:51] so we should have a proposal for .events for 1.8 [09:20:03] and discuss in the meantime [09:20:07] fair [09:20:15] again it would be good to know the use case for it so we could figure out what people are trying to do and give them better ways [09:20:25] it's not clear to me why we're in a rush to remove .data('events') [09:20:38] JohnResig: because its not actually stored on .data() ? [09:20:45] hasn't the return value of .data("events") changed over time anyway? [09:20:58] it's just a case of trying to clean up the special cases i think [09:21:01] gnarf: sure - and properties aren't actually attributes, doesn't mean that people will use the right method for it [09:21:10] I thought we agreed that doing breaking API changes was a really bad thing at this point [09:21:22] it's not in the api.... :) [09:21:35] DaveMethvin: anything that's exposed is part of our API [09:21:44] JohnResig: i just brought it up cuz there was a comment saying we would be removing in 1.6 and well, its 1.7 [09:21:59] i think snover put that in [09:22:21] it's just a semantics issue. I think we're we're all fine with leaving it for now. people would need more notice than a comment in the code if it's going to be removed. [09:22:54] and as a future note, let's be really careful about exposing things that may not be permanent [09:23:05] agreed [09:23:10] re the $.Callbacks stuff for example [09:24:59] i think several of us had some questions about whether the callbacks impl might have too many bells and whistles [09:25:08] we should discuss with jaubourg [09:25:28] i'd rather build it as needed rather than anticipate needs unproven [09:25:44] was Callbacks part of the 1.7 roadmap? [09:25:53] yes, it was approved [09:25:55] yes [09:26:00] docs#9398 [09:26:01] [#9398] Proposal for Improved Deferreds (assigned enhancement) - http://jqbug.com/9398 [09:26:43] it's a beautiful, but it may be that not everything in there is necessary until 1.8 or later [09:27:02] and just fyi jaubourg: "I cannot be at the meeting but I'd like to request a code review for $.Callbacks: are the flag names good enough? Are the one implemented all useful? Is there any missing? Is the code OK?" [09:27:33] yea, this is review [09:27:45] * gnarf nods [09:28:15] * Needs line spacing [09:28:23] so before we get too far along ... is everyone ok with landing 1.7 in master asap? [09:28:35] We'll have more productive discussion about that when jaubourg is around [09:28:35] sure [09:28:39] i don't think we're planning 1.6.5 [09:28:41] timmywil +1 [09:28:45] naw [09:28:49] DaveMethvin ^ [09:29:03] there was one ticket.... [09:29:11] I havent experienced any regressions with 1.7 [09:29:21] timmywil: that attr regression? [09:29:28] http://bugs.jquery.com/ticket/10278 [09:29:32] there it is [09:29:43] right [09:29:48] either way, I'm wondering why we shouldn't move to having the stable branch if we need it instead of shielding master from being whats being worked on :) [09:29:49] I guess I should clarify... [09:29:59] but if it's not 1.6.5 worthy, I think we can land 1.7 [09:30:00] I havent experienced any regressions based on the unit tests [09:31:24] http://i.imgur.com/sZCRU.jpg rwaldron [09:31:45] ahhahaha [09:33:19] JohnResig: yay/nay to landing 1.7 on master? [09:33:21] imo - it should be 1.6 that has the branch, not 1.7 [09:33:49] gnarf, yeah which is what will happen when 1.7 lands in master essentially [09:34:07] timmywil: I'm fine with that if you guys are [09:34:18] gnarf: once we move on to 1.7, 1.6 is done. we've never continued stabilizing releases [09:34:23] right [09:34:30] a branch that will never grow [09:34:39] barring some really serious problem [09:34:39] arrested development [09:34:43] lol [09:34:49] if something crazy happened though, you can always pull out the tag and branch [09:34:55] hopefully not that disfunctional [09:34:59] so lets move on :) [09:35:03] true [09:35:18] lets get some work done in master [09:35:22] push it out on jquery-git [09:35:33] DaveMethvin i've reviewed everything that was previously unreviewed [09:35:37] coolcool [09:35:42] once we land 1.7 combined, can we go through the pulls later in the week and see what should be landed/closed? [09:35:42] closed, assigned, requested more info, etc. [09:35:52] (about damn time) [09:35:56] :X [09:35:56] DaveMethvin: i was going to do that today [09:36:03] yes please [09:36:08] i ahve a shit load of stuff in there [09:36:14] once 1.7 is on master, no reason to wait [09:36:19] and would like the most possibly time to make fixes [09:36:23] if nec. [09:36:31] possible* [09:36:32] oh there is something unresolved on that removeData(array) ticket voted into 1.7 [09:36:45] ahhhh, yes [09:36:51] i have an issue with that [09:36:54] we wanted to allow .removeData("a b c") but that breaks the api [09:36:57] so we can't [09:36:59] ok [09:37:00] easy [09:37:04] cancelled! [09:37:26] nono, don't cancel it [09:37:37] I didnt mean it literally [09:37:43] or rather... [09:37:46] oh, :P [09:37:57] DaveMethvin: how many people use data names with spaces in them? [09:38:05] timmywil http://besser.tsoa.nyu.edu/T-Shirts/wlodek/bart_dude.jpg [09:38:11] more than use .data("events") ??? :P [09:38:13] JohnResig: how many people use .data( "events" )? [09:38:14] :) [09:38:17] lol [09:38:20] gnarf: a lot? [09:38:22] JohnResig: hopefully no one, but we'll find out if we use the space-separated api [09:38:30] is we is or is we ain't breaking apis here? [09:39:02] isn't the logic to fix this simple? if ( data[ name ] ) remove( data[ name ] ); else { split apart and remove } [09:39:19] if ( name in data ) [09:39:33] i'll go for that [09:39:35] it actually kinda already does that [09:39:40] i think [09:39:44] JohnResig: yes, but that would introduce an edge case regarding preference [09:39:45] with the camelCase [09:39:45] yeah because of camelCase i think [09:40:05] how do you mean? [09:40:06] a very small edge case, but it would be there [09:40:24] what if "a b c" and "a" "b" "c" are there [09:40:26] if there is a data name that is an exact match, we have to assume that's what they meant, which seems okay [09:40:33] which one does the user want? [09:40:46] timmywil: the one that's an exact match [09:40:56] JohnResig: which is both, depending on the api [09:40:57] what kind of user would do something that ... hmmm, nevermind :P [09:41:09] DaveMethvin: exactly! [09:41:14] I'm still confused - we're debating something hypothetical, I've never seen anyone prove that anyone was using spaces in data names? [09:41:15] :P [09:41:33] it's possible and valid, isn't that enough? [09:41:37] timmywil: no [09:41:47] hmm [09:41:48] why not? but anyway, we have a solution [09:41:52] .data('events') isn't a good comparison - it's used by, at least, one of the largest, most popular, frameworks building off of jQuery [09:42:02] but anyway, we have a solution [09:42:24] I can tuck that into my internal data pull if you want [09:42:33] or do one after [09:42:34] whatevs [09:42:42] DaveMethvin: i don't think we do. I know I'm picking at straws, but the issue is there. [09:42:54] it seems pretty unlikely [09:43:30] we're making predictions without live testing. we could run into it a lot. [09:44:37] anyway, removeData([ 'a', 'b', 'c']) would not have issues. [09:44:50] right as long as we don't use recursion :) [09:44:58] but is asymetrical [09:45:15] true but it does preserve the api for all but that bizarre case [09:45:19] i think its a little odd to allow remove to take the space separated without also allowing the set to take space separated - do we do that anywhere else in the API? [09:45:34] wait, what? [09:45:44] we can set a name with spaces,right? [09:46:02] oh you mean set it to multiple data items? [09:46:05] like, if the remover is splitting, the setter should be splitting too right? [09:46:53] setting that way doesn't make sense, does it? i guess you could do it explicitly with an array [09:47:14] or are you thinking in terms of using some accessor fuction like access() is used? [09:47:32] in which case we get the wrong behavior "for free" :) [09:47:35] we do with attr/prop i guess - they only allow set one at a time , but allow remove multiple right? [09:48:15] gnarf: we allow setting with an object literal [09:48:21] like events [09:48:26] right obj literal aside... [09:48:32] i'm talking string keys [09:48:35] gnarf: there's a bunch of things that we do in other things like attr/css that we can't do with .data [09:48:44] like .data("foo", function() { }) setter, etc. [09:49:01] string keys wouldn't make sense with attr. do they make sense with data? [09:49:15] i don't think so [09:49:16] for reference... [09:49:17] http://jsfiddle.net/rwaldron/FmWBX/ [09:49:32] it's fine for removing, but I think we're ok not adding it for setting [09:49:45] +1 timmywil [09:49:52] agree [09:50:02] and afaict it's not a lot of extra work given the current code [09:50:12] since we deal with camelization [09:50:31] ok, so we're going space-separated and seeing if we run into issues? [09:50:40] sure [09:50:46] do we allow array? [09:51:02] DaveMethvin so, spaces are invalid in data-attrs so camelization is irrelevant :P [09:51:17] gnarf: maybe some way to get that close to free? [09:51:44] if it isn't an exact match we'll split on spaces and it becomes an array at that point [09:51:59] throw some ifs around that :) [09:52:05] dunzo [09:52:25] as long as we do the exact match part first [09:52:40] if its a string... [09:52:54] right [09:54:03] ok so...what else? [09:54:58] DaveMethvin pull requests pending? [09:55:08] anyone already assigned to that removeData ? [09:55:12] you [09:55:24] lol thanks for asking [09:55:40] give me a bug # [09:55:42] so i can own it? [09:55:50] or ill forget it [09:55:56] rwaldron, timmywil said he was going thru them this afternoon [09:55:58] rwaldron, DaveMethvin: I'll go through 1.7 pulls. [09:56:03] oh right [09:56:04] what he said [09:56:12] sorry, i actually forgot that was mentions [09:56:16] mentioned* [09:56:27] timmywil ping me when you do [09:56:45] looks like I'm assigned to removeData http://bugs.jquery.com/ticket/7323 [09:57:12] gnarf: you want it? [09:57:39] i'll take it - I'm already deep in data this time round anyway [09:57:45] brains already wrapped around the fix [09:58:09] JohnResig: anything more? [09:58:11] assuming you feel like handing it off ;) [09:58:25] doesn't seem too bad [09:58:55] the key is checking for an exact match first, just like camelCase [09:59:36] gnarf: go for it [09:59:38] nah, won't be bad at all [09:59:54] gnarf: can you pull out that comment about 1.5 as well? [09:59:59] since we're kinda past that [10:00:22] yeah [10:00:26] thanks [10:01:01] may i have access to the docs? [10:01:20] timmywil: which docs? [10:01:29] editing the docs that is [10:01:33] api.jquery.com ? [10:01:37] DaveMethvin: not off hand [10:01:39] google docs [10:01:41] sry [10:01:57] oh who owns that? JohnResig? [10:02:36] which google doc? [10:02:38] i think the bugs-team can edit [10:02:44] cuz i can edit [10:03:17] yeah jquery-bugs-team can edit [10:04:57] timmywil: you're signed up with shearbox [10:05:18] JohnResig: thanks [10:05:49] all done? [10:05:57] looks like it! [10:06:53] see ya in -dev