[11:40:39] New patchset: Stefan.petrea; "Fixed anonymize" [analytics/udp-filters] (master) - https://gerrit.wikimedia.org/r/29779 [12:53:48] New patchset: Stefan.petrea; "Fixed anonymize" [analytics/udp-filters] (master) - https://gerrit.wikimedia.org/r/29779 [15:41:22] Tim-away: ping [15:42:00] Tim-away: Here is what Rob Richards said, "Will take a look at it today once I get things settled here (affected by the hurricane). This had been brought up before and unless it was designed to be enabled at build time with it disabled I would say no to its inclusion. It wont play nice when running with other web server modules that use libxml2 (i.e. will cause crashes if using mo_php and mod_python if you use libxml in both - same goes for al [15:42:00] other mod_xxxx that use libxml)." [16:39:11] aharoni: are you sure of https://www.mediawiki.org/w/index.php?title=Git/Workflow&diff=0&oldid=593498 ? [16:39:30] Why not? [16:39:40] That's what I do all the time. ;) [16:39:40] I think I consistently see gerrit translating my topics from 2012/bugN to bug/N [16:39:45] hmm [16:39:55] Well, Gerrit does it. [16:40:10] I give this name all the time and nobody complains. [16:40:24] aharoni: so https://gerrit.wikimedia.org/r/#/c/30765/ I see no 2012/ [16:40:24] IIRC that's what robla suggested on wikitech-l once. [16:40:49] Hmmm. [16:40:58] So why did robla suggested it? :) [16:41:00] what am I being blamed for? ;-) [16:41:08] nothing very bad :) [16:41:08] hashar suggested it too [16:41:23] or whoever wrote the git tutorial and commit guide (iirc) [16:41:25] putting the year in the beginning of Gerrit branch names. [16:41:32] but gerrit at some point started translating them [16:41:39] ^demon|lunch would know? [16:42:07] oh, yeah, that was me [16:42:20] <^demon|lunch> It's not gerrit, it's git-review. [16:42:26] yes, sorry [16:42:28] <^demon|lunch> gerrit doesn't enforce anything when it comes to topics. [16:42:38] come 2015, it'll make it a lot easier to see which branches are old and crufty [16:43:07] yes, but Nemo_bis makes a point - does gerrit actually keep these names anywhere? [16:44:05] I certainly don't keep my branches locally for too long after they are merged in Gerrit. [16:44:09] ^demon|lunch: you're saying git-review mauls the branch names? [16:44:33] <^demon|lunch> git-review does all kinds of black magic with trying to make up topics. [16:44:47] <^demon|lunch> It uses the local branch name iff it can't make up one it thinks is "better" [16:45:33] <^demon|lunch> Eg: even if you have something like "2012/awesomebranch," if you include "bug 123" in the commit summary then git-review will think you want bug/123 as your topic. [16:45:36] <^demon|lunch> It's brain-dead. [16:45:45] I take it there's no way to have a site configuration for that, huh? [16:45:51] <^demon|lunch> No, there's not. [16:45:59] awesome [16:46:05] wait, is that the word I'm looking for? [16:46:08] <^demon|lunch> I hate git-review, and don't use it. The only thing it's good for is auto-installing the commit-msg hook for you. [16:46:13] :) [16:46:28] yay [16:46:28] I also refuse git-review [16:46:31] Just Say No [16:46:35] lol [16:46:43] <^demon|lunch> git-change looks nice, but I haven't played with it really. [16:46:48] haven't looked at that [16:46:50] this seems an inconsistency in the git tutorial then [16:47:02] where are the best non-git-review instructions? [16:47:15] <^demon|lunch> The actual gerrit docs. [16:47:25] well the stuff without git review got pulled from our docs I think [16:47:26] (grumble) [18:50:09] New patchset: Stefan.petrea; "Fixed anonymize" [analytics/udp-filters] (master) - https://gerrit.wikimedia.org/r/29779 [18:53:23] New patchset: Stefan.petrea; "Fixed anonymize" [analytics/udp-filters] (master) - https://gerrit.wikimedia.org/r/29779 [19:16:36] Eloquence: If possible announce the public hangout URL earlier. Makes communication on social media easier, and people can make time for it when they read it 30 mins in advance. [19:17:03] afaict it gives you the youtube url only when you start broadcasting [19:17:17] does it give you the hangout url before then? [19:17:33] please give hangout url [19:17:49] unfortunately you can't combine public hangout with public youtube stream -- so we're picking the public youtube stream [19:17:54] we'll go live in 15 mins and will post url here then [19:18:04] if you know a better method, I'd love to hear it :) [19:19:13] Eloquence: *nod* Planning to look into that. [19:20:27] google seems to have inadvertently created a useful product (hangout) when trying to create a useless one (plus). I guess we need to give them some time to shift focus on the useful one :) [19:24:02] Eloquence: Once thing I can think of is having a static URL with a target that is updated every time we have a live event. [19:24:24] Eloquence: It looks like there's no other solution for now. [19:25:19] siebrand: Eloquence url is live yet? [19:25:19] anyone want an invite to the hangout to be a video participant? otherwise you can only passively view the stream [19:25:28] we're just about to start [19:25:36] Eloquence: pass me an invite. i'll see what its like to be downstairs :) [19:25:41] Eloquence: sure. Will join in 15 mins. [19:25:49] * yuvipanda grabs food [19:26:14] hexmode: Will you join the tech chat to explain a little about the 1.20 release process? I think it's awesome! [19:26:28] * hexmode is interested in an invite from Eloquence [19:26:44] ok [19:26:56] david is presenting, so just a sec [19:26:57] siebrand: I don't have anything planned, but I can answer qs or ... [19:29:24] Wish I had a working camera and microphone [19:30:30] Krenair: These things are achievable. :-) [19:30:34] hi dschoon [19:30:40] david is moderating and starting the hangout now [19:31:28] Almost time for the tech chat! [19:31:38] Youtube Link: http://youtu.be/mLHSeH376y0 [19:31:44] :) [19:32:13] Looking good :) [19:32:15] how do i join? [19:32:17] how much of a lag does this have? [19:32:24] I can see it from here [19:32:24] aude, view the live stream at http://youtu.be/mLHSeH376y0 [19:32:34] if you want to join as a video participant /msg dschoon for an invite [19:32:38] click [19:32:47] can somebody stick the youtube link in the channel msg? [19:32:53] no video from my side? [19:33:01] oh there it i [19:33:07] Gah. [19:33:07] It's not a +t channel, brion_ :) [19:33:07] * chrismcmahon listens [19:33:07] WTF [19:33:10] smile [19:33:12] RoanKattouw: Not working? [19:33:15] I changed the topic and then Krenair changed it to the same thing? [19:33:21] * RoanKattouw is confused [19:33:24] Live streming is working [19:33:29] Oh... sorry RoanKattouw [19:33:35] No worries [19:33:43] I figured my topic change didn't go through or something [19:33:50] RoanKattouw: Not string-identical. [19:34:05] Did he say "muggles"? [19:34:10] Yes [19:34:17] dschoon: We can't see the projected screen [19:34:27] we see 3 people [19:34:34] There we go [19:34:34] There's Chip! [19:34:34] Hi Chip [19:34:35] yay! [19:34:43] http://reportcard.wmflabs.org/ [19:35:30] We are all technical enough that you can drop acronyms [19:35:33] deep [19:35:33] :) [19:35:35] and if you say something we don't understand I will ask [19:37:01] better browsers really helped [19:37:04] also broadband [19:37:09] lost audio [19:37:47] is audio gone for everyone or just siebrand? [19:37:51] i have audio [19:37:52] (local issue) [19:37:54] ok [19:37:55] I have audio [19:37:56] Audio is working for me [19:37:56] audio works great for me on the hangout [19:38:00] siebrand: I'm listening for you :) [19:38:00] me too [19:39:09] * RoanKattouw snorts [19:39:39] "JS was never really intended as a fully functional programming environment" *coughvisualeditorcough* :D [19:39:39] heh [19:39:49] I am not above ave in dev [19:40:11] we can also do live comment over there [19:40:29] there's a "Live comments" area next to the youtube feed. is there any reason not to use this instead of irc? [19:40:34] This history is too much? [19:40:47] RoanKattouw: I thought the same. :-) [19:41:05] Some people are using the hangout directly rather than watching via Youtube, I'm not sure if they'll see the live comments [19:41:13] You can't see too many of them on youtube (at least I think so) [19:41:59] it is fun to watch siebrand walking around during this :) [19:41:59] RoanKattouw: correct. hangout users will *not* see them. i'm switching between both to see which one is better for being remote [19:42:18] * sumanah eats lunch because it is a brown bag! [19:42:19] hexmode: I walk around a lot with my laptop. Had to get a drink this time… ; [19:42:38] * aude loves backbone :) [19:42:45] * milimetric used it [19:42:47] * milimetric not loved it [19:43:16] * hexmode invokes WP:Bold [19:44:08] siebrand: you are a JS framework? [19:44:22] apparently. [19:44:29] learn something new every day. Thanks dschoon [19:44:49] siebrand.js [19:44:55] be the framework you want to see in the world [19:45:03] very scary. [19:45:04] s [19:45:05] ounds [19:45:05] li [19:45:13] k [19:45:13] e a [19:45:13] ehr... [19:45:16] lmgtfy: http://knockoutjs.com/ http://emberjs.com/ http://backbonejs.org/ [19:45:17] sounds like a heavy framework... [19:45:34] angular.js had the best tutorial [19:46:24] yeah agree [19:46:40] try the knockout tutorials. You might change your mind [19:46:58] who's speaking? [19:47:14] jeremyb: dschoon [19:47:14] ahhhh [19:47:31] * jeremyb follows sumanah's lead and eats as well [19:47:48] Almost 21.00 here. Had all meals already. [19:48:05] it thought it was tomorrow...! [19:48:05] * tfinc switches to youtube url to see how to compares to being on the hangout  [19:48:13] <^demon> It's time to eat here as well. [19:48:14] dschoon: Zoom in please? [19:48:21] Oh nm [19:48:26] I thought you were actually gonna show code [19:48:28] whats the youtube link? [19:48:37] Denny_WMDE: check channel topic [19:48:37] topic, Denny_WMDE [19:48:39] http://www.youtube.com/watch?v=mLHSeH376y0&feature=youtu.be [19:48:54] :) [19:49:11] thanks, sorry [19:49:49] btw the codebase of limn (which dschoon is showing) is at https://github.com/wikimedia/limn [19:50:05] Wikipedia 3.0: JS shell loads wikidata facts and turns them into a stub article in your language ;) [19:50:23] that was wikipedia 1.0 .. we called it User:RamBot [19:52:06] and now to up stairs to see how that compares to hangout and youtube [19:52:31] I wish MediaWiki had some conventions so our PHP code would automatically generate some basic javascript helpers [19:53:09] adhd much tfinc :p [19:53:25] what's going on right now? [19:53:43] Nikerabbit: http://www.youtube.com/watch?v=mLHSeH376y0&feature=youtu.be [19:53:43] dschoon: scrolling looks pretty smooth from this youtube [19:53:44] dschoon: The font size is way too small for your highlighting to have any meaning [19:53:44] I just joined [19:54:09] all looking at Siebrand while listening to david presenting some javascript frameworks [19:54:29] RoanKattouw: well, I can just barely read it, but, yes, it is too hard [19:54:43] I can just about read it in full-screen mode [19:55:11] But I want to be able to do other things on my computer :) [19:55:11] * milimetric has a mustache [19:55:16] that Ember.View page seems good [19:55:21] * robla has a beard [19:55:34] RoanKattouw: just put it on another monitor :P [19:55:37] * zeljkof used to have a mustache [19:56:03] * Eloquence thinks something got lost in translation :p [19:56:20] hexmode: I don't have a portable 20" monitor unfortunately [19:56:53] Anyone who wants to come into the hangout and overthrow dschoon's monologgue? [19:57:15] activating siebrand.js ... [19:57:27] just ran out of memory.... [19:57:28] an opinionated framework [19:57:41] hah [19:58:21] hashar, onMakeGlobalVariablesScript sends down variables, and wgResourceModules sends down JS. What more do you want? [19:58:48] enhance HTMLForm ? ;-] [20:00:20] we hear you [20:00:26] we see you [20:00:26] and see the screen [20:00:27] i see [20:00:28] you are real [20:00:37] the ability to write something like: Linker::link( 'Main_page', array( 'onclick' => 'Are you sure?' ); [20:00:47] sumanah: #wikimedia-ontology [20:01:01] I was thinking more therapy-style [20:02:05] hashar: maybe 'onclick' => function() { alert('Are you sure?') }... [20:02:27] ok [20:02:41] shall we open it up a bit now? I'd like to talk about which of these libraries to use in mw [20:02:45] hexmode: alert could be an option to display the message :-] [20:03:02] huh? why bicycles? [20:04:10] backbone is an mvc in js? [20:04:11] anyone here with something to say to Erik's question? [20:04:11] one great guide is one of the top most popular repos on github: http://addyosmani.github.com/todomvc/ [20:04:37] +1 to being distrustful of frameworks :) [20:04:39] who's speaking now? [20:04:43] jon robson [20:04:50] ok [20:05:08] jdlrobson: the templating one? hogan.js? [20:05:23] oh hey! Ori, Jon, & Rob! [20:05:23] *wave* [20:05:24] ohay [20:05:26] yeah, port of moustache.js [20:05:28] and A SEA OF CHAIRS [20:05:45] hey [20:05:50] also I did not get an announcement email when that small one-pint plastic bottle got hired (next to S) [20:05:57] sumanah: everybody ran out [20:06:00] James and Steven are out of frame [20:06:38] robla: alexander and walling? [20:07:04] Forrester and Walling [20:07:04] ahh [20:07:05] MW doesn't really have MVC, does it? Wouldn't it be confusing to have MVC in js, but not php? [20:07:09] what does V.E. use as a framework? [20:07:24] I understand skepticism about frameworks but sensible architecture is essential .. I've seen far too much dom spaghetti in mediawiki js (gadgets + some js-heavy extensions like uploadwizard) [20:07:39] spagewmf: Other than jQuery? [20:07:44] jdlrobson: we sortof built a viewing / page framework for WLM app, I guess. [20:07:46] * jeremyb suddenly wants meatballs [20:08:03] * marktraceur supports Eloquence's statement about UploadWizard [20:08:14] James_F yeah, how do you keep the HTML window and that dropdown thingy in sync [20:08:15] hexmode: in my experience, "MVC" (sometime "MV*" to include MVVC & other patterns) doesn't really describe what these frameworks do, and is merely a buzzword.. it has very little to do with the original ideas from SmallTalk or whatever. But the ideas in these libraries *are* useful. I consider the term a bit like "NoSQL" -- useful but ultimately nonsubstantial. [20:08:17] How would a bundled framework work in the mw political environment? Is this the type of project that can mandate the use of a single one? [20:08:28] lwelling1: very good question [20:08:28] spagewmf: That's RoanKattouw's specialism. :-) [20:08:45] yuvipanda: most of the things i do need events and templating [20:08:45] ori-l_: ok, makes sense [20:08:47] (custom events) [20:08:52] (data bindings) [20:08:52] hexmode, I think Article Feedback and Page Curation are great examples. PHP sends you a plain HTML doc, but then you do something that happens entirely in JS and gets pretty complicated [20:08:53] please switch to screen sharing [20:09:03] (decoupling application logic from dom) [20:09:17] jdlrobson: +1 for templating (I keep using them all the time - even in the gadgets I build) [20:09:17] dschoon: ^ gwicke [20:09:21] (why am i talking in lisp) [20:09:38] you are [20:09:38] (don't know)() [20:09:38] It'll be really nice if we pick a templating engine and put them on by default (or at least available by with RL) [20:09:39] Eloquence: after this discussion, "The future of Gadgets/ResourceLoader"? or other? [20:09:41] dschoon: thanks! [20:10:06] (reply good-question 'ori-l) [20:10:27] * aude distracted with editing wikidata :o [20:10:30] I don't know how to participate in this parenthetical discussion because I don't have a car [20:10:58] aude: i can see natural light out there! [20:10:58] I think the key for MW would be to find a framework that lets you build a plugin-able core and figuring out a way to ease extension development, maintenance, and compatibility testing [20:11:04] jeremyb: :) [20:11:05] sumanah: it floated away? #sorry [20:11:17] * James_F laughs. [20:11:18] did we all lose audio or just me? [20:11:21] Thank you James_F for laughing at my terrible scheme joke [20:11:23] just lost audio [20:11:24] or are people just quiet? [20:11:26] yuvipanda: me too [20:11:26] audio back [20:11:32] yeah, lost audio [20:11:32] not just you [20:11:32] if that framework is jQuery + some simple glue, then great, but organization leads to maintainability is the underlying philosophy of all these frameworks [20:11:35] back [20:11:35] audio is back [20:11:36] ori-l_: yes, please repeat [20:11:42] dschoon: next week will you introduce MVC frameworks for MediaWiki =] [20:11:46] wmf is super sekrit [20:11:52] I can hear you now Ori [20:11:53] yuvipanda, I like handlebars for templating. [20:11:55] hashar++ [20:12:07] i'm allergic to PHP, unfortunately [20:12:20] backbone.js source: https://github.com/documentcloud/backbone [20:12:28] * sumanah gets out the epipen for dschoon  [20:12:33] RoanKattouw_: I was taking your name in vain telling spagewmf about how VisualEditor works and keeps the model and the page in sync. [20:12:36] no stabby :( [20:12:46] * RoanKattouw_ reads chanlog [20:13:31] sorry got to dash off to a meeting :( [20:13:50] spagewmf: I had one pet peeve with all the moustachey ones - i think it was something to do with lack of even simple logic and being unable to iterate over objects [20:13:52] okay, two [20:14:14] todomvc looks handy [20:14:41] dschoon: I got a few js hackers in my coworking that have recommended backbone js too [20:14:41] http://addyosmani.github.com/todomvc/ [20:14:47] spagewmf: I've used underscore's minimal templating system in some gadgets i've built, but of course, that's the other extreme... [20:14:55] Eloquence: browsing the source of each implementation helps you understand the difference between the frameworks pretty fast [20:14:56] dschoon: make sure to talk about it with Krinkle / Timo :-] [20:15:47] * RoanKattouw stabs GWT [20:15:52] * hashar wonders if todomvc would end up making me choose MediaWiki [20:15:52] GWT is wonderful, we should port Mediawiki to it [20:15:52] * yuvipanda runs [20:16:07] we should write all our js in php [20:16:13] or all our PHP in js :-] [20:16:21] still works [20:16:25] (the mic) [20:16:30] hexmode: 1 There's a problem with this change, please improve [20:16:44] * preilly missed the - [20:16:51] Eloquence: kind of out of topic but I am wondering if we could make youtube to stream HD video [20:16:51] thoughts on picking at least a template engine, rather than a full fledged 'framework'? [20:16:51] heh [20:17:06] I'd really love it if we could pick one and make it available [20:17:08] yuvipanda: let's settle vi vs emacs while we're at it [20:17:09] though 480px is already nice [20:17:19] hashar: Chip'd be the one to have to work on that and I think he has his hands full for the next few weeks [20:17:28] * hexmode bashes ori-l_ with emacs [20:17:33] ori-l_: Depends on wether you need an operating system or text editor [20:17:42] yuvipanda: there is a vim plugin for emacs IIRC [20:17:50] yuvipanda: so choose emacs, end of story :-] [20:17:50] viper [20:17:52] hashar: yup, vim runs on most operating systems [20:18:02] :P [20:18:05] yuvipanda: knockout is actually more of a templating engine than a framework. It lacks opinion on how you should structure your app. The weird thing about it is two-way databinding your templates. So if you change text in a text box, it updates your model [20:18:07] is this pushstate? [20:18:12] yuvipanda: also, using emacs as your os makes Windows act like linux :) [20:18:23] uh oh, holy war underway [20:18:31] the nice thing with Todo MVC is that you get the source [20:18:38] so that is a nice way to see how a real app looks like [20:18:38] yep [20:18:45] nice find [20:18:49] milimetric: true, but a template engine is much simpler - pass in a string + data, get out string [20:19:00] that's what knockout does :) [20:19:01] milimetric: useful for HTML production, wikitext production, etc [20:19:05] ko.applyBindings(data) [20:19:16] right, true [20:19:21] mustache I think is pretty king in that area [20:19:28] you can generate whatever you want [20:19:28] milimetric: oh? thought it was DOM + data -> DaOM? [20:19:30] *DOM [20:19:42] and to someone's point earlier, {{#each items}}{{/each}} does a loop [20:19:42] milimetric: true, but I was hoping if we could pick one :) [20:19:57] milimetric: it doesn't loop over items in an object [20:19:57] yeah, it'd help a lot [20:19:59] milimetric: only loops over lists [20:20:26] milimetric: it's a pain (we use hogan.js in the mobile app, and I've used handlebars elsewhere) [20:20:26] right but you can nest templates right? so {{> thatTemplateAbove}} [20:20:28] dschoon: can't read the code on youtube :-D [20:20:49] hashar: is there a canonical method to generate missing page titles? [20:20:55] how much bigga? [20:20:59] (in unit tests) [20:21:00] enlarge, enlarge! [20:21:03] mo bigga? [20:21:08] Re DOM as your data model: that can also really screw you over when cross-browser differences occur [20:21:09] knockout is built to solve exactly what ori-l is talking about [20:21:10] 2x [20:21:24] Especially in a contentEditable *shudder* [20:21:25] I can make it out almost now [20:21:28] milimetric: so we have to re-shape the data in js before passing in [20:21:31] :) [20:21:40] Amgine: in a middle of a meeting right now http://www.youtube.com/watch?v=mLHSeH376y0&feature=youtu.be ;-) [20:21:55] kk [20:22:06] * yuvipanda is not particularly a fan of purely logicless templates [20:22:09] Eloquence: after this discussion, "The future of Gadgets/ResourceLoader"? or other? I'd like to get a brief read re the "what do you want to learn" discussion [20:22:20] yuvipanda, shoot me over a use case that you're puzzling over and I can see if I can help [20:23:18] sumanah, up to everyone .. there's not a lot of active dev on gadgets/rl2 right now afaik so it might be best to wait til timo/roan or platform engineering have time to pick it up [20:23:23] +2 on what ori-l just said about generic eventing with jQuery [20:23:23] ori-l_: dschoon: regardless of which js MVC framework we end up choosing, I am a bit worried how it will get the data from the PHP backend. [20:23:40] milimetric: $.each( object, function( key, value) { } );. No way to do that. [20:23:54] ori-l_: dschoon : since we do not have a routing system in MediaWiki AFAIK, that might makes things a bit uglier in the JS code we will end up writing. [20:24:03] hashar: your job is to rewite mw in symfony [20:24:12] milimetric: loops only do $.each( list, function( i, item ) { } ); [20:24:33] and if you don't need anything other than raw js... oh wait [20:24:33] yuvipanda, handlebars nested template fragments let the templates stay logicless yet you can be pretty structured. And it's like MediaWiki, {{{link story}}} will invoke your JavaScript helper. [20:24:34] hexmode: that is my secret plan. First step would be to start using composer for our extension :-] [20:25:02] excellent... symfony is growing on me... like a fungus [20:25:26] milimetric: use case: an object with key as language code and language name as value [20:25:38] milimetric: true, but I shouldn't have to write a custom helper to iterate through objects [20:25:45] var channel = $( { channel: '#wikimedia_dev', network: 'freenode' ); channel.on( 'user-join', function () { ... } ); channel.trigger( 'user-join', userObject ); [20:26:00] i accidentallly a } [20:26:14] milimetric: jeremyb: aude: zeljkof: Krenair: I was curious to get your responses to http://www.gossamer-threads.com/lists/wiki/wikitech/308569 [20:26:16] thanks yuvipanda, I'll puzzle over it :) [20:27:01] sumanah: I am thinking about it [20:27:11] Thanks zeljkof [20:27:14] Another aspect to consider is the reusability of UI templates [20:27:47] dschoon: +1 for being lazy when writing code :-] [20:27:54] sumanah: but I would like to learn javascript, and even PHP, looks like it will get handy these days :) [20:27:54] sumanah, I read that email but I don't think there's anything specific I want to learn about right now [20:28:03] dschoon: though one could consider that copy pasting is the ultimate sign of laziness :-] [20:28:32] sumanah: the more I think about it, the more I am sure I would like to learn some javascript [20:28:37] ember.js (with Handlebars) looked really nice but I found not easy to share a template outside HTML to be used among different apps. [20:28:42] sumanah: I will send you an e-mail message [20:28:45] siebrand: I guess you are considering how to translate all that stuff aren't you ? ;-] [20:29:05] * aude has not enough hours in the day [20:29:05] I will try and see dschoon! [20:29:11] zeljkof: :) cool! and the even more important part - HOW do you learn best? [20:29:13] hashar: What stuff? [20:29:19] milimetric: http://jsfiddle.net/MNmj8/ [20:29:19] is what i meant [20:29:27] sweet, thx [20:29:34] siebrand: all the javascript madness that is going to be implemented in backbone or whatever framework [20:29:49] sumanah: I learn the best with small tasks [20:29:49] one sec, I'm trying to follow [20:29:50] siebrand: though that would probably on the existing jquery modules we have [20:30:03] I'm quite interested in seeing what people think about this issue [20:30:03] got it dschoon [20:30:05] reading ToS now [20:30:19] pgehres: what exactly do you mean by 'not easy to share'? [20:30:21] sumanah: so, a little bit of theory, then a task [20:30:31] err, i meant pginer [20:30:31] sorry pgehres [20:30:47] hashar: from what I know, they're currently using resourceLoader. I haven't heard of anyone using i18n outside of MediaWiki's, except for the Language Engineering team with jQuery.i18n. [20:30:50] sumanah: glad you didn't lose internet access :) [20:30:53] apparently [20:31:01] hashar: That's live on wikidata at the moment (will bugs and all) [20:31:10] siebrand: but generally working though [20:31:24] caching to be configured better, though [20:31:44] aude: Make sure ops knows that's a problem to you... [20:31:44] Q: ori-l_: dschoon : since we do not have a routing system in MediaWiki AFAIK, that might makes things a bit uglier in the JS code we will end up writing. [20:31:58] aude: it's the way paver for other Wikimedia sites, too. [20:32:15] hashar: yes agreed, not everything is applicable to our world [20:32:54] hashar: you mean a client-side routing system? [20:32:54] relevant: http://i.stack.imgur.com/ssRUr.gif [20:32:58] siebrand: indeed [20:33:09] hashar: you can build a routing layer that abstracts the framework away from the server [20:33:11] milimetric: http://jsfiddle.net/NhU53/ is how I'd have to do it now [20:33:23] * aude not aware that the squid config is in gerrit anywhere [20:33:37] yuvipanda that's the same as before [20:33:40] that's one thing missing (to poke at and learn) [20:33:51] thanks aude! [20:33:53] milimetric: try http://jsfiddle.net/NhU53/1/ [20:34:05] ah, cool :) [20:34:14] dschoon: a server side routing that would use some nice conventions. [20:34:19] it's nice to be able to fix our on ops problems, with the stuff in gerrit [20:34:22] hashar: tests for 1.19 are broken. https://gerrit.wikimedia.org/r/#/q/status:open+project:mediawiki/core+branch:REL1_19,n,z [20:34:25] hashar: because i agree with that. but larger is some sort of module system. [20:34:34] I am assuming the frameworks are assuming some kind of REST api [20:34:34] LinkedIn evaluation of client-side template systems may be interesting: http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more [20:34:42] * yuvipanda notes that the storm has started in Chennai :) [20:34:43] dschoon: a resource loader of sorts [20:34:43] hashar: How do I get trivial localization updates merged? [20:34:48] hi sumanah :) [20:34:53] dschoon: thanks [20:34:56] jeremyb! [20:34:57] siebrand: please fill in a bug for REL1_19 tests being broken. Will poke it tomorrow. [20:35:14] Sorry my reply wasn't much use :) [20:35:22] ori-l_: actually, that's a good question! does resourceloader support CommonJS or AMD? [20:35:25] RoanKattouw? [20:35:38] Krenair: you might find your curiosity piqued once you see some of the maintainership table I work on [20:35:38] hashar: I'm not putting anything in bugzilla or gerrit for you anymore. Make a note yourself, please. [20:35:38] hasher: you haven't given me the impression you do something with it. [20:36:02] dschoon: yes. i'm not sure how strictly it adheres to the commonjs proposals, but it does everything require.js does + more [20:36:16] can't hear him Mark [20:36:16] that thread re mentorship and learning http://www.gossamer-threads.com/lists/wiki/wikitech/308569 [20:36:23] it's really awesome actually. it just doesn't have a hip name :) [20:36:31] dschoon: We do want to eventually make RL's module system CommonJS-like or -compatible [20:36:33] I don't know what AMD is [20:36:33] preilly: what is Mark saying? [20:36:37] hexmode: wonderful mouth movements Mark! :D [20:36:54] that would be awesome [20:36:54] i'll send email [20:36:55] SPEAK LOUDER [20:37:00] :) [20:37:07] hexmode: one step away from Gangam style. [20:37:15] sumanah: ha ha [20:37:25] MY HAIR IS RECEDING [20:37:30] as we sit here discussing js [20:37:31] RoanKattouw: yeah, that'd be pretty awesome [20:37:39] hexmode, congrats on 1.20 work, great! [20:37:40] good god, please don't show people how they look on a large display [20:38:06] RoanKattouw: imo, when it comes to "module loaders", features aren't really as important as standards [20:38:22] It's in my employment contract that I can only be digitized at low resolutions, or with vaseline on the lens [20:38:22] aude: yes? [20:38:38] jeremyb: you're on the video :) [20:38:43] Krenair: it's all data :) [20:39:06] aude: i was wondering who that was! not me [20:39:26] who's the guy in green? [20:39:30] sumanah, maintainership table... sorry I'm struggling to understand, Is this about code review? [20:39:33] jeremyb: that's hexmode [20:39:33] jeremyb, that's hexmode [20:39:40] I am wearing green actually. but a different green [20:39:40] I was faster :) [20:39:40] i thought so! [20:39:56] it's blurry [20:39:58] :O [20:40:03] ah, okay [20:40:09] aude: ;) [20:40:17] NOT USELESS [20:40:17] heh [20:40:24] A++++ would attend again [20:40:25] thanks all! [20:40:31] thanks! [20:40:32] moar lisp! [20:40:45] +1 to ori-l_ [20:40:53] O_O [20:40:53] nice background! [20:40:55] next time in HD? [20:40:57] hexmode: https://github.com/clojure/clojurescript [20:40:59] sumanah: which Nation's? [20:41:00] :P [20:41:08] Krenair: code review is one of the reasons for keeping track of and nurturing maintainership, but mentorship is another big one [20:41:08] Mine! [20:41:12] Edokter, I don't think hangout on air can do any better [20:41:22] is that a dinosaur with a top hat? [20:41:27] ori-l_: ooo! [20:41:27] yes [20:41:27] play "La Espero", that'll do fine [20:41:29] yuvipanda: MediaWiki? [20:41:30] * aude goes back to wikidata [20:41:31] yuvipanda: don't talk about Erik that way [20:41:37] ;-) [20:41:45] ha ha [20:41:46] there's a lot more fun/weird stuff from david here: http://art.less.ly/ [20:41:51] good night [20:42:05] hum hum [20:42:05] sumanah: I would expect you not to be online ;-) [20:42:22] multichill: what am i, chopped liver? ;) [20:42:29] from way back in 2000? Wow, I was like, 9 then. [20:42:35] yuvipanda so one thing you could do is "clean" the data (and you can create this generically as a template adapter). [20:42:35] http://jsfiddle.net/NhU53/8/ [20:42:43] it is a LOVING dinosaur in a tophat [20:43:07] http://art.less.ly/2012/heart-dino.png [20:43:12] milimetric: That's what I had to do when I ran into it the last time, and I do not want to do that. I shouldn't have to restructure my data to make it fit into a templating engine [20:43:33] milimetric: now when doing templates I've to figure out what structure my data is in [20:43:33] come join us in #wikimedia-wikidata :) [20:43:33] well, the data isn't structured to begin with, I think that's the problem right? [20:43:50] milimetric: it is structured! [20:43:54] aude: challenge accepted [20:43:55] like a dictionary isn't something you should be able to iterate over [20:43:55] jeremyb: ? [20:43:57] milimetric: usually the 'value' is itself a dictionary [20:44:02] I ask dschoon "If you rewrote Limn, what framework would you use?" [20:44:08] * sumanah can only see S and David [20:44:10] multichill: re not be online [20:44:11] milimetric: why not? [20:44:12] not hear them [20:44:25] children shoul.. nevermind 8) [20:44:25] dschoon says good question, hard to answer, things missing from all of them [20:44:41] milimetric: the wiki app keeps the list of languages as a dict with the lang as key (fast lookups!) + value as an object with name, name in english, etc [20:44:46] yuvipanda: just to keep datastructures true to their purpose. lists are for iterating [20:44:53] yeah, that makes perfect sense [20:45:02] milimetric: converting that into a list is a bad idea, since lookup would be slow [20:45:19] well, on the client side that tends to not matter [20:45:22] milimetric: now, I shouldn't have to transform a perfectly sane data structure because of a library limitation [20:45:22] sumanah, ok, but maintainership? you mean +2 on a repo or..? [20:45:32] nono, I'm not arguing that [20:45:40] Krenair: lemme turn that around. What does maintainership mean to you? [20:45:49] milimetric: well, it's used pretty often, and on a slow mobile device... [20:45:59] milimetric: plus, i'd have to write code to loop over it [20:46:14] milimetric: I'm saying that iterating over dictionaries is a perfectly useful thing to do [20:46:28] oooooh i forgot! as far as powerful abstractions that are already available to you go, this is hard to beat: http://api.jquery.com/category/deferred-object/ [20:46:43] right, sorry, that was more of a side point [20:46:45] Krenair: To me it's partly about status and partly about knowledge [20:46:46] ah, okay :) [20:46:57] may be confusing at first if you're not familiar with the concept of promises or futures from other languages but eminently worth grokking. [20:47:00] +1 to ori-l_ [20:47:07] I'm trying to work on my other point in the jsfiddle, one more sec :) [20:47:12] milimetric: heh,. ok [20:47:40] ori-l_: we switched pretty much all code in the mobile app from callbacks to deferreds about 7-8 months ago. Made things a *lot* more cleaner [20:48:09] ori-l_: though I'll note that there are more powerful async libraries available - like https://github.com/caolan/async [20:48:11] jQuery's one is pretty basic [20:48:26] hehe- with deferreds being just a tiny bit extra abstraction over callbacks.. [20:49:01] * gwicke is intrigued by declarative / reactive programming [20:49:07] sumanah, just generally maintaining code.. being knowledgeable about how it all works, that sort of thing [20:49:22] lambda the ultimate has some great discussions on ideas in that area [20:49:42] gwicke: yes, i was explaining it to spagewmf the other day and as an exercise we implemented 80% of $.Deffered in 5 minutes. but the simplicity of it and the fact that no deep magic is happening does not detract from how useful it can be as a way of structuring your thoughts and your code [20:50:30] +λ for lambda the ultimate [20:50:54] already-tested articles. [20:51:00] oops.. http://lambda-the-ultimate.org/ [20:51:14] http://lambda-the-ultimate.org/search/node/reactive [20:51:27] * yuvipanda adds to greader [20:51:30] thanks gwicke [20:51:37] gwicke -> greader [20:51:38] I wonder if it might be useful if we all share reading lists [20:51:39] great. [20:51:49] yuvipanda: there's a meta page [20:51:54] wait [20:51:56] never mind [20:52:46] yuvipanda: start an article on meta? [20:52:49] or office? [20:53:13] ori-l_: sure [20:53:27] office is private, but it might be off-topic for meta. mw.org? dunno where something like this belongs. [20:53:35] I think mw.org [20:53:58] mw.org is good [20:54:12] ori-l_: https://www.mediawiki.org/wiki/Developer_reading_list [20:54:14] aude: sumanah gwicke [20:54:33] nice [20:57:19] sumanah: would an email asking for people to add to that be off topic for wikitech-l? [21:01:50] yuvipanda: I think it would be appropriate [21:02:14] hexmode: can you do it? I'm unsure how much traction me mailing would get… :D [21:02:39] yuvipanda: post and I'll follow up [21:02:47] hexmode: ok [21:05:23] hexmode: done [21:05:36] :) [21:08:22] yuvipanda: grr, I gotta go but I think you're right. I mean that seems like a very unique case though. I use a variant of mustache in this crazy framework called meteor js. That one lets you do what you want. You could easily add support for dictionary as a slightly different looking tag. Like {{##langs}} to faintly conjure up python's ** [21:08:54] milimetric: you'd need a way to refer to 'key' and 'value' in the body [21:09:13] they'd either need to be 'magic words' or specified in the original invocation [21:09:31] I *think* I tried to write a handlebars handler that did that, and gave up - rewrote it using underscore.js templates [21:09:39] underscore.js templates are the PHP of the templating world :P [21:09:47] yeah, you could do the map I did automatically and make a list of key: ,value: [21:10:03] milimetric: indeed, that should be done in the handler in the template [21:10:12] but that would loop twice over the object [21:10:23] true [21:10:40] but right now, there's no way to do it without looping over the object *and* creating a duplicate data structure [21:10:43] yeah, with underscore you get that transform for free [21:11:12] yeah, I'd be happy if we just make underscore.js a RL module, tbh [21:11:12] how many items are in this dictionary? [21:11:19] gives us a lot of things besides templating [21:11:28] yeah, agreed. that's a useful library [21:11:31] milimetric: uh, ~280 [21:11:36] i'm not sure, one per language [21:11:38] oh geez, well that's nothing :) [21:11:46] one entry per language [21:11:46] of course it is nothing [21:11:46] you can have like 5000 copies of that thing [21:12:03] and iterate over all of the on mouseover :) [21:12:30] on mobile… :P [21:12:30] but yeah, with mobile you'd like to save as much as possible [21:12:46] i think it might be more - picking up the data structure from a JSON file and parsing it into an object takes significant time - a bit over a second on some slower devices [21:12:56] that's even with 0 network (everything's local on the app) [21:13:04] hm, really? [21:13:44] milimetric: entire structure is 31172 bytes [21:14:41] milimetric: 274 items, key is language name, value is a dictionary with 3 keys [21:14:47] might be that sending it as a list that ends up in a dictionary makes sense then. because you could send chunks [21:15:06] and render some of the ui before they scroll down [21:15:16] milimetric: true, we load it only when the user first hits the 'settings' menu [21:15:32] and what's the purpose? for them to be able to pick a language? [21:15:38] milimetric: yup [21:16:31] yeah, that seems ok-ish to have a 1 sec. blow there. Have you performance tested the templating part? [21:16:48] milimetric: this is a simple js loop now [21:16:54] no templating involved [21:17:09] mostly because I didn't want to deal with doing the transformation into the list myself [21:17:22] and it's a one off thing, so it was ok. [21:17:22] right, the first one you showed. That should be the most performant unless there's some optimization mustache does that I don't know about [21:17:48] well you can do that transform generically into objects with key and value props [21:18:04] but it is a one off so that doesn't make anybody happy :) [21:18:14] true [21:18:14] i'd want this in the language itself [21:18:19] or at least as a default plugin [21:18:30] lack of that makes me a sadpanda [21:18:31] no, I think the place for frameworks is with bigger picture apps that have a certain amount of computing power [21:18:50] of course. But I'm not using a framework - just a templating engine [21:19:10] python does that pretty well. I mean I guess you could just add it to the Object prototype [21:19:20] .propertiesToArray() [21:19:45] or I could try convincing moustache / handlebars / hogan.js folks to include it by default :) [21:19:54] i'm surprised nobody else has hit on this before [21:19:56] yeah, when KBs matter though it seems even templating languages incur penalties that are unreasonable [21:20:18] well, I think everyone shares my bias that one iterates over lists [21:20:34] true but I don't think it's that bad - I think in this case the perf hit is from the JSON parse than from the copying [21:20:50] so the argument is essentially one of convenience [21:20:58] so one thing you could do is send it over as a list, render it, then load it into a dictionary and delete the list [21:21:13] but convenience wise, def. needs to be in mustache [21:21:15] milimetric: but you realize the need - the need to keep some data in a dict, and sometimes to render that dict [21:21:16] or whoever dethrones that [21:21:25] milimetric: yeah, not 'impossible', just inconvenient [21:21:28] oh is it updated as well? [21:21:43] I suppose Jinja2 has spoilt me [21:21:43] the dictionary I mean? [21:21:43] milimetric: no, it is read only [21:21:45] (in this case) [21:21:46] heh, i love jinja2 [21:22:00] best templating library, ever [21:22:00] just the right mix of simplicity and power [21:25:36] milimetric: i just realized I had no idea who you are :D [21:25:37] cool well fun talking with you yuvipanda. I love learning about people's worlds [21:25:41] oh, I'm Dan Andreescu [21:26:09] ooh, hi dan. [21:26:09] yeah, 'twas fun. [21:28:35] oh yuvipanda are you local in SF? [21:28:53] milimetric: no, I'm sitting in the middle of a small storm in southern India right now :) [21:28:54] (Chennai) [21:29:04] oh cool :) [21:29:14] i just sat through hurricane Sandy - that was fun [21:29:22] milimetric: I used to work with the Mobile team. Back to school now. Will be back soon [21:29:38] milimetric: yeah, stay safe. Ours are a lot more frequent, but not *that* bad (usually) [21:30:10] cool, yea, once the craziness in my world settles down a bit (probably mid December) I'd love to take another look at Mobile and see if I can help you guys out with anything I know from my world [22:09:33] back around [22:09:47] Reedy: I need to add a test related change in REL1_19 [22:10:04] Reedy: should I send another commit to update the RELEASE_NOTES in case we release 1.19.3 ? [22:10:08] change is https://gerrit.wikimedia.org/r/#/c/30908/ [22:12:01] That's probably not release_notes worthy [22:12:31] probably not :-] [22:40:45] off to bed! [23:12:45] j^: you're not paying attn to IRC by any chance, are you? [23:16:39] good evening [23:17:02] robla: whats up? [23:17:33] I asked Tim and Aaron about the bugfix you submitted [23:17:55] (04:11:15 PM) Aaron|home: where does 400mb come from? [23:18:08] (that's in response to https://gerrit.wikimedia.org/r/#/c/30773/ ) [23:18:41] j^ [23:20:11] robla: 300 worked fine with lucid and my 32bit precice test but failed on 64bit precise. so created a 64bit vm today to test with 64bit: 350 was not working, 380 worked for my 720p test file, so thought 400 would be an ok upper bound [23:21:04] j^: does the memory usage scale with the resolution of the video, or is it constant? [23:21:36] robla: seamed to be more related to mmaped libs so a constant overhead [23:21:57] + some amount for the frame size [23:22:20] 300 was not enough for any size video here [23:23:11] also pushed https://gerrit.wikimedia.org/r/#/c/30774/ for review to use oggThumb for ogg files, which has lower memory consumption, so we would only need ffmpeg for WebM [23:23:56] ooo, nice [23:24:43] chrismcmahon: what were the IE7/8 regressions you mentioned? [23:24:53] should also help in the transition since the frame extraction would not change for ogg files switching to TMH [23:26:10] feels like we may be cutting things a little too close given the known issues that we have, and the tesitng that still should probably happen [23:27:57] it can be 400, as long as MaxClients is small enough [23:28:23] Aaron|home is also sick today, so I wouldn't want to bank on him being around for a deployment tomorrow morning [23:29:15] it's set to 20, which implies 8GB [23:30:13] which appears to be roughly the amount of physical memory they have [23:30:42] operating systems are overrated...we can just cut that out [23:30:44] so I guess it should just about squeeze in, assuming a few MB of shared memory per process [23:31:10] this is virtual memory, so it includes library sizes [23:31:20] for executables with lots of libraries, it can take tens of megabytes just to start up [23:31:46] TimStarling: other option would be to just use a higher limit for avconv in TMH [23:31:48] but it's not real memory usage, it's just mmap'd [23:32:11] how much of this 400MB is RSS? [23:32:17] most of it [23:33:20] now how to best messure it though [23:34:06] and most of it is mmaped libraries i ment [23:34:41] you could try http://tstarling.com/blog/2010/06/measuring-memory-usage-with-strace/ [23:34:54] we should be reasonably conservative, and then bump up from there. I'm assuming the consequence of setting it too low is that it'll just take longer to get through the thumb jobs, right? [23:35:18] btw, we have a problem with the job queue that *might* be TMH related [23:35:56] if the memory limit is too low, it'll fail in some horrible way [23:36:12] robla: so far we have not added any TMH jobs to the queue in production [23:36:12] if MaxClients is too low, it'll just be a bit slower [23:36:29] right now memory limit is to low [23:36:31] so we can be conservative by increasing the memory limit and reducing MaxClients [23:36:45] TimStarling: yeah, I meant MaxClients. we know it's failing horribly right now with a too low limit :) [23:37:47] here's the job queue graph: https://gdash.wikimedia.org/dashboards/jobq/deploys . look at the second to last graph on this page [23:38:33] job handling fell off a cliff right around the time THM and the Event logging code went out [23:38:38] so it could have been either [23:39:02] but seems too closely correlated with that pair of deployments to be coincidental [23:39:07] we could reduce MaxClients to 18 or so, then the OS will at least have a few hundred MB, right? [23:40:12] * robla nods sagely, then shrugs [23:41:42] I'd do it but it's hard with Evelyn trying [23:41:51] to for'ce [23:41:51] [tj [23:41:55] \nd [23:41:56] a [23:41:56] ls [23:41:59] o pressing [23:41:59] en [23:42:00] t [23:42:06] er \a \lot\ [23:42:06] YOU SHOULD BE WATCHING CAT VIDEOS [23:42:10] DADDY! [23:43:08] robla: tmh1/2 are running and should consume all transcoding jobs, so far no wiki has enabled transcoding so no transcoding jobs are created [23:43:44] not sure i can make out anything in the stats [23:45:01] bu tmh1/2 are running since last week. the TMH updates in the last days should not have any impact on jobs [23:45:02] btw, one last thing on the job queue. enwiki has a slowly rising backlog, which is pretty telltale sign we've got some problem there http://ganglia.wikimedia.org/latest/graph_all_periods.php?c=Miscellaneous%20pmtpa&h=spence.wikimedia.org&v=506&m=enwiki_JobQueue_length [23:45:23] mdale did you find out anything about why TMH wasn't playing video in IE7/IE8 (cc robla) [23:45:48] taking a look now [23:46:10] chrismcmahon: if there's anything that should block deployment, we should mark it here: https://bugzilla.wikimedia.org/show_bug.cgi?id=27699 [23:51:56] chrismcmahon: IE is certainly doing some odd things locally... [23:52:23] evelyn wanted me to read a story so first she tried to close the laptop lid, and when that didn't work, she tried twiddling her fingers around the enter key instead [23:53:29] it's in puppet/files/apache/apache2.conf.appserver