Architecture meetings/RFC review 2014-07-30

@ 22:00-23:00 UTC on 30 July 2014, at.

Requests for Comment to review

 * 1) Requests for comment/CentralNotice Caching Overhaul - Frontend Proxy

Meeting summary

 * LINK: https://www.mediawiki.org/wiki/Architecture_meetings/RFC_review_2014-07-30 (sumanah, 22:00:19)
 * Future RFC stuff (sumanah, 22:00:38)
 * Please check out https://www.mediawiki.org/wiki/Requests_for_comment/API_roadmap - Brad Jorsch is updating it 'as "notify people of upcoming changes", "chance for people to object to upcoming changes", and "todo list" all at once.' (sumanah, 22:00:47)
 * A reminder that I'm going on vacation in mid-August, and will take that opportunity to stop running these meetings and stop coordinating the process overall. I'm working with Rachel Farrand, Quim Gil, and the architecture committee to make sure stuff still happens. (sumanah, 22:01:15)
 * Next week there is no RfC meeting on IRC because of Wikimania. Are there specific topics that you want to discuss in an architecture meeting at Wikimania? (sumanah, 22:01:31)
 * marktraceur: I personally will be running the meeting on Aug 16 and then I will stop forever. I am working with others to ensure that the process keeps going. It may change. (sumanah, 22:02:25)


 * CentralNotice Caching Overhaul - Frontend Proxy RfC (sumanah, 22:04:37)
 * Today we're talking about Matt Walker's proposal to "have a static javascript blob, injected via skin hook, in every content namespace page that will call up to a special CentralNotice banner server". This has frontend caching implications. (sumanah, 22:04:43)
 * LINK: https://www.mediawiki.org/wiki/Requests_for_comment/CentralNotice_Caching_Overhaul_-_Frontend_Proxy (sumanah, 22:05:04)
 * The RFC has evolved in the last few weeks. As Matt explained just before he updated it: "I'm going to unify the URL to bits.wikimedia.org; varnish will initially serve the request before forwarding that to a backend; I'll add a bit to talk about CSP and how I dont currently care about it w/ justification that the first load is REALLY important; I'm going to add a note on where the 200GB comes from" (sumanah, 22:05:31)
 * this is a followup to the meeting in October 2013 https://www.mediawiki.org/wiki/Talk:Requests_for_comment/CentralNotice_Caching_Overhaul_-_Frontend_Proxy#IRC_meeting_2013-10-02_34156 (sumanah, 22:05:58)
 * Matt is about to leave the Foundation so in today's meeting we want to clear up any Ops concerns so that Anne Gomez (Fundraising tech product manager atgo ), ejegg, Jeff_Green, AndyRussG, and others can carry on implementing it after Matt's gone  (sumanah, 22:06:20)
 * discussion of ESI solution (sumanah, 22:29:06)
 * ESI is very broken with our currently deployed varnish; expected to be working for 4 upgrade but thtaâ€™s a ways off (brion, 22:30:49)
 * rfc proposal doesnâ€™t fix â€œpage bumpâ€ when banners are loaded, but reduces its delay by 1 RTT between client and server (brion, 22:32:27)
 * using JS blob now means a cache clear required for ESI transition later, but this bblack thinks it may be managable (especially if can be done gradually) (brion, 22:38:11)
 * alt proposal to put the banner code (node-backed?) directly on the main domain, bypassing the cookie bootstrapper js blob. use (brion, 22:43:16)
 * we think in is ok. we think. (brion, 22:45:52)
 * per mwalker we can do the load below RL for added safety to avoid blocking (brion, 22:46:58)
 * AGREED: * hosting the banner generator on the main wiki domains (via a varnish proxy config?) (brion, 22:50:12)
 * AGREED: * using a consistent URL for those in  (brion, 22:50:20)
 * AGREED: * possibly moving that script around to minimize issues (brion, 22:50:28)
 * AGREED: * with a general thought that ESI will be better someday, and we can then migrate towards using the same generator via ESI instead of JSONP (brion, 22:50:40)
 * ACTION: mwalker to revise RfC in agreed-upon directions (brion, 22:50:51)
 * need to know whoâ€™s point person once mwalker is gone (brion, 22:51:27)
 * LINK: https://www.mediawiki.org/wiki/Performance_guidelines#Caching_layers (AndyRussG, 22:52:27)
 * ACTION: post-mwalker point person yet to be determined (brion, 22:52:47)
 * awight & AndyRussG assigned for stuff for the moment, but need folks to check in with on details :D (brion, 22:55:18)
 * and Roan can help with frontend caching & JS interaction (brion, 22:55:32)

Meeting ended at 22:55:49 UTC.

Action items

 * mwalker to revise RfC in agreed-upon directions
 * post-mwalker point person yet to be determined

Action items, by person

 * mwalker
 * mwalker to revise RfC in agreed-upon directions
 * post-mwalker point person yet to be determined

Full log

 * 22:00:06 #startmeeting CentralNotice Caching Overhaul - Frontend Proxy | Channel is logged and publicly posted (DO NOT REMOVE THIS NOTE). https://meta.wikimedia.org/wiki/IRC_office_hours
 * 22:00:06  Meeting started Wed Jul 30 22:00:06 2014 UTC and is due to finish in 60 minutes. The chair is sumanah. Information about MeetBot at http://wiki.debian.org/MeetBot.
 * 22:00:06  Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
 * 22:00:06  The meeting name has been set to 'centralnotice_caching_overhaul___frontend_proxy___channel_is_logged_and_publicly_posted__do_not_remove_this_note___https___meta_wikimedia_org_wiki_irc_office_hours'
 * 22:00:12 #chair sumanah brion mark
 * 22:00:12  Current chairs: brion mark sumanah
 * 22:00:19 #link https://www.mediawiki.org/wiki/Architecture_meetings/RFC_review_2014-07-30
 * 22:00:21 hey all
 * 22:00:24 hello
 * 22:00:27 Hi!
 * 22:00:34 First off - about next week & next month
 * 22:00:38 #topic Future RFC stuff
 * 22:00:47 #info Please check out https://www.mediawiki.org/wiki/Requests_for_comment/API_roadmap - Brad Jorsch is updating it 'as "notify people of upcoming changes", "chance for people to object to upcoming changes", and "todo list" all at once.'
 * 22:00:57 (Brad isn't here right now)
 * 22:01:11 Aw, anomie...
 * 22:01:12 (API changes! ever looming!)
 * 22:01:15 #info A reminder that I'm going on vacation in mid-August, and will take that opportunity to stop running these meetings and stop coordinating the process overall. I'm working with Rachel Farrand, Quim Gil, and the architecture committee to make sure stuff still happens.
 * 22:01:31 #info Next week there is no RfC meeting on IRC because of Wikimania. Are there specific topics that you want to discuss in an architecture meeting at Wikimania?
 * 22:01:48 sumanah: "stop running these meetings" forever? Or just for a while?
 * 22:02:25 #info marktraceur: I personally will be running the meeting on Aug 16 and then I will stop forever. I am working with others to ensure that the process keeps going. It may change.
 * 22:02:32 KK
 * 22:03:01 Re Wikimania: who here is going? do you want to talk about any specific architecture/RfC stuff there? I know Daniel Kinzler suggested talking about "Using factory functions for component instantiation" there
 * 22:03:21 o/
 * 22:03:59 well, we don't have to discuss it here - "[Wikitech-l] Anyone going to WikiMania?" will do
 * 22:04:12 hey atgo :)
 * 22:04:23 hey sumanah !
 * 22:04:27 * awjr waves
 * 22:04:36 atgo: you are just in time! because now that those announcements are over:
 * 22:04:37 #topic CentralNotice Caching Overhaul - Frontend Proxy RfC
 * 22:04:43 #info Today we're talking about Matt Walker's proposal to "have a static javascript blob, injected via skin hook, in every content namespace page that will call up to a special CentralNotice banner server". This has frontend caching implications.
 * 22:05:04 #link https://www.mediawiki.org/wiki/Requests_for_comment/CentralNotice_Caching_Overhaul_-_Frontend_Proxy
 * 22:05:26 I'm now gonna summarize for mwalker - say if I'm wrong or omitting something important here Matt :)
 * 22:05:31 #info The RFC has evolved in the last few weeks. As Matt explained just before he updated it: "I'm going to unify the URL to bits.wikimedia.org; varnish will initially serve the request before forwarding that to a backend; I'll add a bit to talk about CSP and how I dont currently care about it w/ justification that the first load is REALLY important; I'm going to add a note on where the 200GB comes from"
 * 22:05:58 #info this is a followup to the meeting in October 2013 https://www.mediawiki.org/wiki/Talk:Requests_for_comment/CentralNotice_Caching_Overhaul_-_Frontend_Proxy#IRC_meeting_2013-10-02_34156
 * 22:06:20 #info Matt is about to leave the Foundation so in today's meeting we want to clear up any Ops concerns so that Anne Gomez (Fundraising tech product manager atgo ), ejegg, Jeff_Green, AndyRussG, and others can carry on implementing it after Matt's gone
 * 22:06:33 one implementation point up front -- right now the JS is injected via skin hook because we're proposing to host this on bits. if instead we agree to host it on some wiki url, e.g. en.wm.o/banners than it can be a simple injection rather than a blob. Reason being is because I need cookies that are stored on the wiki domain
 * 22:06:57 *or rather, on all wiki urls so that it's "local" to the wiki
 * 22:07:19 bblack: chasemp mark: Jeff_Green ori - this is definitely a good time for us to talk about Ops and performance concerns
 * 22:07:47 bblack, jgage: what you missed: https://dpaste.de/COB0/raw
 * 22:07:57 i tend not to like because that blocks rendering on a second request; is that expected to be worked around by pipelining or somethign?
 * 22:08:17 atgo: http://bots.wmflabs.org/~wm-bot/logs/%23wikimedia-office/20140730.txt has the announcements in case you want to catch up on those :)
 * 22:08:53 thanks ori
 * 22:09:02 brion, I don't currently have pipeline plans beyond what's already in the rfc -- so on page rendering would likely be blocked -- however, my understanding is that if it's in the head then page flow operations can continue?
 * 22:09:30 thanks sumanah
 * 22:09:30 mwalker: alas no, since it could contain a document.write “anything goes” — it has to literally stop parsing
 * 22:09:42 unless you async it maybe
 * 22:09:55 mwalker: the bit about "the first [request] happens in the head and is a call to get the GeoIP country lookup" is no longer accurate, since it's now done by cooking the initial request. does that change things?
 * 22:10:09 cookie-ing
 * 22:10:21  mwalker: You need to set or read cookies?
 * 22:10:25 brion, I'm not sure how I would async it...
 * 22:10:29 RoanKattouw, I need to do both actually
 * 22:10:37 but on initial request, I only need to read
 * 22:10:42  Surely you can access document.cookie even from foreign origin scripts?
 * 22:10:59 mwalker: ‘async’ attribute can be used on the  i think, though i’m not sure which browsers respect it offhand
 * 22:11:00  Or are you doing server-side cookie reading/writing?
 * 22:11:12 I don't have many sophisticated things to say about CentralNotice, but I'd like to point out that BannerRandom requests are at least sometimes very high on our most-hit URLs when looking at Varnish stats, which seems a little troubling (that we spend more hits on that than popular content)
 * 22:11:18 ori, it's inaccurate in so far as that it wouldn't need to do it for every request, but it would still need to do it for ipv6 requests that dont resolve to anything
 * 22:11:37 RoanKattouw, the script on the client can, but the first request up to the server needs to have all the data so that a banner can be selected
 * 22:11:45  Right
 * 22:12:05 if I am just doing a plain then that first request wouldn't have the cookies if it was going to a non local domain
 * 22:12:14  Yes
 * 22:12:18 A much more egregious non-content URL that tends to sit on top of the stats, but probably isn't in scope here, is /wiki/Special:RecordImpression
 * 22:12:23  So ideally it'd be done locally
 * 22:12:26 if I have the JS blob as in the RfC than the request can go anywhere at the expense of havin gthe JS blob
 * 22:12:39 mwalker: that sounds wrong unless there’s some CSP stuff i don’t know about going on
 * 22:12:49 all our JS is served from bits and it has access to document.cookie right?
 * 22:12:52  brion: He needs the /server/ to have the cookies
 * 22:12:54 bblack, that makes sense because bannerrandom gets hit from every page load
 * 22:13:03  I was confused for the same reason just a minute ago
 * 22:13:20 mwalker: yeah I just wish there was a way we could not do that, and I'm hoping that's part of this discussion
 * 22:13:21 but the JS stub is the bit that fetches the cookie from the document.cookie and sends it as a parameter to the server, right?
 * 22:13:24 mwalker: but it's superfluous to the request log
 * 22:13:43 so the server doesn’t need the cookie as a cookie, it takes it as a URL query param
 * 22:13:48  brion: Yes, and if we did same-domain hosting then that could be eliminated
 * 22:14:08 ahhhh i see
 * 22:14:26  mwalker: Ooooh I like your proposed use of frontend Varnishes
 * 22:14:30 <RoanKattouw> (Still reading the RFC)
 * 22:16:20 brion, the real reason I brought up same domain hosting is because the JS blob on page approach prevents us from doing CSP
 * 22:16:30 *nod*
 * 22:16:39 is ESI out of the question?
 * 22:16:40 <RoanKattouw> What do you mean by "doing CSP"?
 * 22:16:45 <RoanKattouw> (CSP = content security policy, right?)
 * 22:16:50 RoanKattouw, yes
 * 22:16:59 I get that the banner is fairly dynamic based on a lot of things, but could we at least cache it a while (<1hr?) for the user? they don't need new banners on every page load right? they're not that time-critical?
 * 22:17:06 mwalker: in that case, same-domain hosting with <script src=“…” async> should give about the same behavior as the “JS blob … fetching JSONP” and would indeed work around CSP issues
 * 22:17:24 ori, ESI can work, but I haven't spent a huge amount of time figuring out the best way of doing it
 * 22:17:30 ESI just scares me :D
 * 22:17:34 brion: but if it's async would you not still get the page bump?
 * 22:17:48 <RoanKattouw> ori: ESI has only recently been possible now that text is on Varnish, and nothing and no one uses it yet
 * 22:17:50 ESI is still kinda borked with our current varnish deployment anyways
 * 22:17:53 <RoanKattouw> So it's a bit scary for those reasons
 * 22:17:56 <RoanKattouw> Oh well and there you go
 * 22:18:00 ori: yes, but the jsonp fetch is already async so that’s what you’re already getting with this proposal afaict
 * 22:18:06 otherwise we'd be using it for the Zero banners
 * 22:18:32 bblack: how/why is it it borked? (or would answering that carry us too far off-course?)
 * 22:18:42 if you want to make the jsonp fetch sync, you need to use document.write(‘<script src=“…’)
 * 22:18:43 <RoanKattouw> mwalker: Clarification: is the JSONP request in the head meant to be blocking or async?
 * 22:18:52 tl;dr version is it's just borked, upstream, in a way we can't easily fix right now
 * 22:18:53 <RoanKattouw> Because ... yes what brion said
 * 22:19:00 RoanKattouw, I intended it to be async
 * 22:19:08 The "CSP issue" (iirc) is that I'd like to enable CSP that forbids inline scripts.. we're a long way from doing that. We can still do CSP with inline scripts enabled.
 * 22:19:11 ok
 * 22:19:44 csteipp, that's my understanding as well -- but right now the only inline script I think is ResourceLoader...
 * 22:21:18 <RoanKattouw> RL has some inline scripts yes
 * 22:21:26 <RoanKattouw> It needs to inline certain things for security reasons (irony!)
 * 22:21:34 <RoanKattouw> Well, privacy reasons really
 * 22:22:16 IMO this needs to be done in Varnish. I realize that ESI is borked, but what mwalker is proposing is not a quick workaround -- it'd require substantial effort to implement, especially with him as the primary architect of this solution not being around
 * 22:22:40 and Varnish is implicated in this setup by dint of already having to do work on each request to check the GeoIP cookie and perform geolocation as necessary
 * 22:22:48 and we don't have a suitable alternative for that
 * 22:23:02 NodeJS can use the same GeoIP libraries we already use on varnish
 * 22:23:05 atgo: who is going to be the person working on this in the future, if you know? ejegg? Jeff_Green? AndyRussG? someone else?
 * 22:23:36 hey sumanah . should be AndyRussG and awight (he's OOO today)
 * 22:23:43 and the solution mwalker proposes doesn't (as far as I can tell) solve the page-bump problem
 * 22:24:00 which the RFC puts forward as one of the very reason this area needs attention
 * 22:24:08 but i'm sure awight will catch up on this when he's back
 * 22:24:10 *reasons
 * 22:24:12 that's correct; we will still have a page bump, but hopefully significantly less of one
 * 22:24:22 *given that we are removing on RTT
 * 22:24:22 <RoanKattouw> mwalker: Wouldn't there be significant benefits in doing same-domain stuff?
 * 22:24:28 atgo: is Adam back by the time mwalker leaves? :)
 * 22:24:29 <RoanKattouw> We'd be able to get rid of the inline script, presumably
 * 22:24:42 <AndyRussG> I'm lurking and learning here BTW
 * 22:24:43 <RoanKattouw> We could potentially even be able to get rid of the page bump
 * 22:24:57 RoanKattouw, that is the one benefit of having same-domain stuff; the one downside is that then we "clutter" the domain root with stuff
 * 22:25:14 <AndyRussG> (Hi all :) )
 * 22:25:18 *actually, another benefit is that on the same domain you dont have to do another DNS lookup
 * 22:25:27 sumanah yep! he's not in every day, and today is just one of those days. he'll be back in office friday and checking email between now and then
 * 22:25:45 ok
 * 22:25:50 i'll make sure he catches up on this :)
 * 22:25:51 cool, that's good to know :)
 * 22:26:17 <RoanKattouw> If we did something like <script src="/w/banner.php">, and that returned some JS that set some variables and also wrote a CSS rule into the head that does .bannerContainer { height: 247px; } ....
 * 22:26:28 <RoanKattouw> or something like that
 * 22:26:56 ori, if we host this on the same domain and use ESI, we'd still have to have a backend server to create the banner -- not a problem it just means the backend has to do slightly more work -- it will delay the entire page request though
 * 22:27:12 that fixes the page bump but introduces a delay yeah
 * 22:27:18 RoanKattouw, ah; but I dont want the script to request another something... the downloaded script must have the entire banner to be injected
 * 22:27:27 and we dont know the hight of the banner because that's a browser dependent flow thing
 * 22:27:34 and not all banners are the same height
 * 22:27:45 do we know what exactly is borked with the ESI solution?
 * 22:27:53 bblack, ^
 * 22:28:17 <RoanKattouw> mwalker: Right, so banners are neither pure images nor pure HTML but a mix of those two?
 * 22:28:52 brion: I need to head off in a few minutes - you'll be finishing up the meeting?
 * 22:28:54 it's been a while since we last looked, I couldn't recall details right now. I'm pretty sure most of the problem has to do with us running the upstream-unsupported -plus variant of varnish3 for streaming, but I'm not 100% sure that ESI works correctly even for mainline varnish3
 * 22:28:58 RoanKattouw, *nods*
 * 22:29:02 some even have their own js
 * 22:29:04 <RoanKattouw> Right
 * 22:29:06 #info discussion of ESI solution
 * 22:29:09 sumanah: confirmed
 * 22:29:18 <RoanKattouw> Yeah then I'm not sure that the bump can be fixed without using ESI
 * 22:29:45 i tend to agree with RoanKattouw, fixing the bump *and* not introducing a round-trip between client and server requires ESI or something very like it
 * 22:29:49 bblack: :(
 * 22:29:52 thanks
 * 22:29:54 <AndyRussG> Hmmm banners with js and js with banners
 * 22:29:54 but the bottom line is ESI is deeply broken in our currently-deployed varnish, and we've had impetus to fix it already from Zero and not found any easy way to do so, yet. Looking at it was postponed until the varnish v4 upgrade a while back
 * 22:30:09 <RoanKattouw> Unless FR practices significant self-restraint in terms of standardizing banner heights or only using existing blank space or something like that
 * 22:30:18 RoanKattouw, hah!
 * 22:30:32 you can look at this RFC as a stepping stone to ESI... the backend nodejs server would only need small modifications to support it once it works
 * 22:30:37 <RoanKattouw> bblack: Yeah I made that statement not as a "this is why we need ESI now" but more as a "this is why this isn't going to happen soon"
 * 22:30:48 in the meantime, this would reduce page bump by the time of 1 RTT
 * 22:30:49 #info ESI is very broken with our currently deployed varnish; expected to be working for 4 upgrade but thta’s a ways off
 * 22:30:57 * ori nods
 * 22:31:20 Thanks all, catch you later.
 * 22:31:31 yeah i don’t hate this solution, but it depends on how much work people think it will be and how much of that is going to be reusable for the ESI better solution later
 * 22:31:43 i have the feeling that it would be easy to reuse, but i could be wrong
 * 22:32:25 <RoanKattouw> mwalker: So if I understand this all correctly, the JSONP request initiated from the head will return a JSON blob that contains the banner HTML and all the needed data?
 * 22:32:27 #info rfc proposal doesn’t fix “page bump” when banners are loaded, but reduces its delay by 1 RTT between client and server
 * 22:32:33 RoanKattouw, that's correct
 * 22:32:43 <RoanKattouw> Like, it won't just give us a banner name that we then have to go fetch separately
 * 22:32:45 <RoanKattouw> OK awesome
 * 22:32:46 <RoanKattouw> That's good
 * 22:32:48 and then it'll wait for the RL downloaded centralnotice controller to inject itself
 * 22:32:52 <RoanKattouw> Yeah
 * 22:33:51 ori: what do you think? would the backend for the jsonp blob be adaptable to a source for ESI banners once ESI is available for doing it “right"?
 * 22:33:57 <RoanKattouw> mwalker: Re CSP if you really want to you can make the head JS an RL top queue module and I think that'll still work. It'll just run a bit later I think, because RL needs to init first
 * 22:34:13 or would we need to do things more differently twice
 * 22:34:30 <RoanKattouw> Actually I think I would recommend doing that, because what you're currently talking about makes it very difficult to ever change the head JS code
 * 22:34:36 brion: it sounds like it could be
 * 22:35:37 bblack: what do you say --- if we went with this approach, is there anything that could be done to make it easier to transition to ESI in the future?
 * 22:35:46 RoanKattouw: that’s a good point, would hate to have to clear all the caches
 * 22:35:54 RoanKattouw, that's basically what we do right now... and it's slow
 * 22:36:03 hmmm
 * 22:36:21 *slow because it serializes requests that *could* happen in parallel
 * 22:37:03 clearing varnish caches once in a blue moon on a major transition (e.g. to ESI here) isn't *that* huge of a deal, so long as we're ok with the cache clear happening slowly
 * 22:37:19 it's different if you need the cache cleared all at once or things are horribly broken for the user
 * 22:37:29 (where slowly is like, over a period of a day or three)
 * 22:37:38 <RoanKattouw> mwalker: What does it serialize exactly? Your code vs the other top modules you mean?
 * 22:37:38 hosting it on the same domain solves the *cant change the head js* problem -- you just then cannot change the URL location
 * 22:37:51 <RoanKattouw> Yes that would also wokr
 * 22:38:11 #info using JS blob now means a cache clear required for ESI transition later, but this bblack thinks it may be managable (especially if can be done gradually)
 * 22:38:14 RoanKattouw, right now it's RL->CentralNotice->BannerRequest->Injection; where it could be RL->Join(CentralNotice, BannerRequest)->Injection
 * 22:38:43 what this RfC proposes is actually Join(RL->CentralNotice, BannerRequest)->Injectiong
 * 22:38:45 <RoanKattouw> (And note that that serializes things just as much, just in the reverse order so the impact is less: RL init waits for CN rather than the other way around)
 * 22:39:21 <RoanKattouw> No, I don't think that's accurate
 * 22:39:33 with that last point, no, if I assume that browsers will execute requests in parallel as they see them
 * 22:39:54 <RoanKattouw> For tags in the that is not true
 * 22:40:00 <RoanKattouw> Oh wait but the code is inlined so there's no request
 * 22:40:02 <RoanKattouw> In any case
 * 22:40:05 right
 * 22:40:23 <RoanKattouw> What you're proposing is inlining the bootstrapper, then doing Join(RL->CentralNotice, BannerRequest)->inject
 * 22:40:30 RoanKattouw, exactly
 * 22:40:35 nice
 * 22:40:41 <RoanKattouw> I was proposing something like RL->bootstrapper->Join(CN, BR)->inject
 * 22:41:24 <RoanKattouw> If we go with your other suggestion of hardcoding the URL to the bootstrapper code rather than the bootstrapper code itself, we get bootstrapper->RL->Join(CN, BR)->inject
 * 22:41:24 that does increase the “time to bump” though doesn’t it?
 * 22:41:46 <RoanKattouw> Well both of those two do
 * 22:41:51 if hosted locally, the bootstrapper code wouldn't exist
 * 22:41:59 <RoanKattouw> Oooh
 * 22:42:01 because NodeJS would have access to the cookies
 * 22:42:08 and so it could just dump the banner data
 * 22:42:19 <RoanKattouw> So you'd do like a in the head making a request to NodeJS
 * 22:42:23 *nods*
 * 22:42:25 now we’re cooking with gas
 * 22:42:28 <RoanKattouw> That would be nice actually
 * 22:42:36 <RoanKattouw> Because it's reasonable to ask that URL to stay constant
 * 22:42:46 <RoanKattouw> If we need to change things, we can get NodeJS to output different things
 * 22:43:10 but... I need a local URL on every wiki -- is that a problem?
 * 22:43:16 #info alt proposal to put the banner code (node-backed?) directly on the main domain, bypassing the cookie bootstrapper js blob. use
 * 22:43:27 <RoanKattouw> As far as I'm concerned it's not
 * 22:43:29 mwalker: that sounds like varnish config should make it easy to do
 * 22:43:45 <RoanKattouw> I don't know whether browsers respect async in the head, I hope they do
 * 22:43:52 its something easy to do; I just didn't know if we wanted to do that; since the only domain with virtual roots right now is bits
 * 22:43:52 lemme search
 * 22:43:57 <RoanKattouw> But browser debugger tools will let you find out easily
 * 22:44:55 <RoanKattouw> Basically what I'm afraid of is if your blocks because of browser stupidity, then none of the RL init code will even be *downloaded* until the NodeJS code is done
 * 22:44:56 RoanKattouw: i think it should be ok, just doesn’t work on inline source scripts
 * 22:45:01 remote source should be fine i think
 * 22:45:13 <RoanKattouw> Yeah I think it probably will be
 * 22:45:23 <RoanKattouw> But my trust in browsers has eroded :)
 * 22:45:52 #info we think in is ok. we think.
 * 22:46:18 RoanKattouw, we can probably do some fudging to make sure that this request is below RL's blob -- and I think that'll ensure RL is executed first
 * 22:46:58 #info per mwalker we can do the load below RL for added safety to avoid blocking
 * 22:47:55 so we’re currently looking at:
 * 22:48:12 <RoanKattouw> mwalker: Actually if async can be shown to work, we should really be doing the reverse
 * 22:48:21 * hosting the banner generator on the main wiki domains (via a varnish proxy config?)
 * 22:48:34 * using a consistent URL for those in <script src=“” async>
 * 22:48:38 <RoanKattouw> In any case, test in many browsers and pay close attention to the waterfall graph
 * 22:48:44 * possibly moving that script around to minimize issues
 * 22:49:09 * with a general thought that ESI will be better someday, and we can then migrate towards using the same generator via ESI instead of JSONP
 * 22:49:16 sound about right?
 * 22:49:23 *nods*
 * 22:49:27 awesome
 * 22:49:39 any objections to revising the draft in that way?
 * 22:49:48 <RoanKattouw> Sounds good to me
 * 22:50:00 actually; I just remembered why ESI wont work -- ESI will be injecting a JS blob which CSP will then prevent :p
 * 22:50:01 looks reasonable to me
 * 22:50:08 but yes; I can revise the RfC for brions list
 * 22:50:12 #agreed * hosting the banner generator on the main wiki domains (via a varnish proxy config?)
 * 22:50:20 #agreed * using a consistent URL for those in <script src=“” async>
 * 22:50:28 #agreed * possibly moving that script around to minimize issues
 * 22:50:40 #agreed * with a general thought that ESI will be better someday, and we can then migrate towards using the same generator via ESI instead of JSONP
 * 22:50:41 woot
 * 22:50:50 10 minutes to spare
 * 22:50:51 #action mwalker to revise RfC in agreed-upon directions
 * 22:50:55 awesome :D
 * 22:51:01 anything else to add or are we about done?
 * 22:51:11 <AndyRussG> whom should I bug for guidance on this once mwalker is gone?
 * 22:51:19 ah good question
 * 22:51:27 #info need to know who’s point person once mwalker is gone
 * 22:51:57 <AndyRussG> and do you have any URLs to suggest for reading up on all this infrastructure (beyond anything obvious, anything in the RFC)?
 * 22:52:09 <AndyRussG> sumana sent me one earlier...
 * 22:52:27 <AndyRussG> https://www.mediawiki.org/wiki/Performance_guidelines#Caching_layers
 * 22:52:47 #action post-mwalker point person yet to be determined
 * 22:52:57 <AndyRussG> *sumanah I meant
 * 22:52:57 AndyRussG: that’s the main scary stuff i think yeah :D
 * 22:53:28 ok unless we have an immediate volunteer to take over the project after mwalker i think we’re ready to close
 * 22:53:33 <AndyRussG> I need to learn more about caching for other stuff too :)
 * 22:53:50 <AndyRussG> I mean I think me and awight are more or less assigned to it
 * 22:54:13 that's sort of up to atgo to decide who gets the short stick :)
 * 22:54:29 spiffy
 * 22:54:30 <AndyRussG> I meant to ask whom to bug with questions when I run into walls
 * 22:54:37 yeah that's an awight and AndyRussG thing for the moment
 * 22:54:55 <AndyRussG> I can just ping wildly at anyone who's had the temerity to participate here ^
 * 22:54:56 it needs a home, and we're it for the time being :)
 * 22:55:06 <AndyRussG> >_>
 * 22:55:18 #info awight & AndyRussG assigned for stuff for the moment, but need folks to check in with on details :D
 * 22:55:19 <RoanKattouw> AndyRussG: For frontend caching and interaction with JS and stuff, I can help
 * 22:55:32 <RoanKattouw> Basically for the sort of stuff I talked about in this meeting :)
 * 22:55:32 #info and Roan can help with frontend caching & JS interaction
 * 22:55:46 awesome
 * 22:55:47 <AndyRussG> RoanKattouw: thank you!! :)
 * 22:55:47 ok let’s close this out
 * 22:55:49 #endmeeting
 * [22:56:06] <RoanKattouw>	 (Also I wrote the backend half of ResourceLoader, including caching logic, so I can help with understanding that and with ResourceLoader stuff in general)
 * [22:56:19] 	 thanks everybody â€” this was an enlightening session :D
 * [22:56:20] 	 AndyRussG: Gwicke or Cscott are probably your bests points of contact for NodeJS,;roan and timo for RL; mark, ori, and bblack for varnish / LVS
 * [22:56:49] <AndyRussG>	 cool! thanks
 * [22:57:15] 	 brion, thanks for moderating the last half
 * [22:57:15] 	 brion, thanks for moderating the last half