[00:01:46] pizzzacat: since it seems grrrit is still out: https://gerrit.wikimedia.org/r/195807 [00:04:28] ejegg: didja think of any other possible issues or possible different approaches? [00:04:44] not yet [00:04:50] K :) [00:04:53] i'll certainly let you know if i do! [00:04:58] thanks much! [00:06:23] I'll add to the etherpad the general points we talked about ^ and if it's confirmed the RL cache works as expected, I'll close the spike about this design... [00:06:34] cool! [00:07:41] ejegg: Have you had a chance to look at any PCI things yet? [00:07:53] If not, I was going to go digging for helpful things. [00:07:59] ...unless you've already done that. [00:09:31] K4-713: not yet, besides searching the fileshare for *PCI* [00:09:40] ...and not finding anything [00:09:44] I got it. [00:09:52] I must have saved the thing last time or something. [00:10:09] "If I was last year's SAQ, where would I... oh. There I am." [00:10:26] anthropomorphizing can be so useful [00:10:37] I basically never stop. [00:11:13] i like your world [00:12:08] There are a lot of googly eyes. [00:24:00] Krinkle: hi! are you familiar with RL module caching? got a sec to help me check if I'm understanding how it works? thx in advance! [00:25:28] AndyRussG: Yup! Fire away [00:25:45] Im leaving soon ish though [00:26:13] Krinkle: coool thanks! So... modules are cached locally indefinitely as long as they're not removed from Mediawiki and the version stays the same? [00:26:48] It looks like the registry of modules is checked, not sure exactly how often, and if a module is in localStorage that's not registered, it's purged [00:27:08] That would work for our purposes, just wanting to check that it's the case :) [00:27:29] AndyRussG: Depending on your definition of 'locally', yes. They might get purged by ops or deployers for other reasons from time to time. So don't depend on cache staying always. [00:27:44] Oh you meant client-side [00:27:50] OK, K4-713, I'll look at that stuff more in the morning and figure out the subset of things that need awight's input [00:27:58] Krinkle: yeah! sorry I didn't specify, client-side in localStorage [00:28:27] AndyRussG: What's your evil plan? :) [00:28:28] Basically we're just trying to see which option will be most performant for what we want to do [00:28:37] Buahahaha... heh... one sec [00:28:49] ejegg: Sounds good. [00:29:04] Thanks for volunteering for that one. [00:29:10] Krinkle: overview of change: https://upload.wikimedia.org/wikipedia/mediawiki/e/e4/CentralNotice_mixing_and_logging_proposal_2015-03-01.svg [00:29:25] Basically, we currently have JS coming in with banners [00:30:00] and we want to move some of that to RL modules to be made available after a campaign is chosen, but before a specific banner for that campaign is chosen [00:30:20] Also: http://etherpad.wikimedia.org/p/CampaignAssociatedMixins [00:30:40] It looks like we're gonna take plan A for 100 dollars [00:31:55] AndyRussG: Define 'mixin' in the context of current/proposed implementation? [00:32:24] Krinkle: yurp, it's a thing that's currently in CentralNotice but only can be banner-associated, not campaign-associated [00:32:30] It's a blurb of JS [00:32:36] That can have parameters [00:33:53] So the idea will be, for example, select the banner-hiding mixin for a campaign, and our central notice users will be able to set parameters for how many banners to show in that campaign without auto-hiding [00:34:04] They currently do this with on-wiki JS that is added to banners [00:34:08] AndyRussG: How would the request for RL modules know which to load? How does this improve the performance if it still needs to load the banner from the special page afterwards? [00:34:27] Right! [00:36:08] (s/performance/http requests/) [00:36:33] Answer 1: when the server sends to the client a list of posible campaigns, it'll tell the client which RL module-based "mixin"s are need (if any) for each. If a campaign is chosen (this happens on the client) that has a mixin, we'll use mw.loader.load to load it, and it'll either be fetched from the server or hopefully, more often than not, gotten from in-browser localStorage [00:36:52] (that's why I want to be sure I get what's up w/ localstorage) [00:36:55] Answer 2: [00:37:56] The new scheme will allow us to count logs of Special:BannerLoader as actually indicating a banner was shown, so we won't always have to send a special, additional logging call (currently Special:RecordImpression) to know if a banner was really shown [00:38:18] There will still be logging calls but they'll be much less frequent, hence the performance improvement [00:39:18] Also Special:BannerLoader won't be called a the times when a banner is really going to be hidden (for example, campaigns that stop showing banners after you've seen like 5 or so), also leading to less requests [00:39:44] Don't worry about localStorage. LocalStorage is just an additional layer on top of HTTP 304. [00:40:00] It doesn't increase or decrease cache hits much for this purpose. [00:40:29] The module is only in localStorage if it was previously requested. It's essentially a mapping of load.php urls to responses (slightly more abstracted) [00:40:51] Yeah [00:41:04] Assuming the banner choice can not be known server-side, the call to mw.loader.load would be made after the initial RL modules request comes back. So that's an extra request for that chosen module [00:41:07] I mean, we are expecting these modules to be requested a lot, especially when a user is being targeted for a campaign [00:41:29] So by relying on the RL infrastructure, it can be fetched just the first time it's needed [00:41:36] The other option is to send it in on every request [00:42:24] Yeah I see it's an extra request for the chosen module, since it's requested dynamically from JS [00:42:29] AndyRussG: Hm.. so this js payload you want to move from special:bannerloader to an rl module, that's specific to one banner, right? [00:42:32] But only the first time, no? [00:42:48] And is authored by users? [00:42:54] No... [00:43:06] It's stuff that is used a lot by FR and goes in tons of banners [00:43:32] So Special:BannerLoader and centralnotice would still respond with html and include