[05:49:58] Where near the WMF office is still open where one can get reasonable food? [10:11:16] Krinkle: Around? [10:12:58] Yes [10:13:44] Coming two weeks I'll be spending most of the day without school, not much activity around now. [10:13:49] Whats up ? [10:14:38] Oh cool, same here [10:14:45] Well I wanted to get started on the RL 2.0 stuff [10:14:55] Yeah. [10:15:28] At this point that basically consists of speccing out some of the new 2.0 things we talked about, as well as poking at some of the bugs currently filed [10:15:55] Including things like 'what happens if we put scripts back in the head' [10:16:18] Have you read / thought about the split' approach ? [10:17:09] I've briefly read about it [10:17:26] Is that the one where we identify things that need to be in the head as such, and put them there, while keeping other stuff at the bottom? [10:17:46] RoanKattouw: Yes, lemme pull it up. [10:17:53] So things like collapsibletabs would be in the head while things that e.g. add a click handler to something (twinkle?) go at the bottom [10:18:24] yeah, the 'Steve Sauders' ideal. [10:18:35] https://bugzilla.wikimedia.org/show_bug.cgi?id=27488#c15 [10:19:40] key being "how many of this code is actually being executing before or at the dom-ready event" [10:20:05] Right [10:20:08] Actually, I think this should be easy [10:20:16] What if we move the startup script to the [10:20:23] that for sure [10:20:36] That'll do a doc.write for mw+jquery, which will then be loaded immediately (also before the rest of the paeg) [10:20:59] We then have the loader load top-queue modules immediately in the same fashion [10:21:05] (but /with/ timestamp goodness) [10:21:22] http://eiximenis.wikimedia.org/RL2 [10:21:44] Ah yes [10:21:55] yep, two queues [10:21:56] We should definitely clear the trivial bugs section, for one thing [10:22:08] I'm just responding to your cacheability concern [10:22:21] This could totally work, without cacheability concerns [10:22:21] Let's not do [done] things at etherpad RL2, what's done can be scrapped. It's too cluttered already :D [10:22:28] awesome [10:22:32] Yeah just delete what's done [10:22:48] The only downside is that jq+mw is a significant amount of code to load+parse+execute in the head [10:24:30] RoanKattouw: True, but it was that way < 1.17 as well, [10:24:39] I know [10:24:52] But there's always room for improvemenet [10:25:00] Plus, pre-1.17 we weren't loading jQ on every page [10:25:50] Hm... sure ? [10:25:57] in wmf atleast it was. [10:26:52] in 1.16wmf4 yes [10:26:57] Because I hacked it into CommonSettings.php [10:27:23] yeah [10:27:29] Using a BeforePageDisplay hook that called $wgOut->includeJQuery() [10:28:09] Where there complains about jquery breakage in 1.16wmf4 (where it didn't do blacklisting). And bytheway, now I read back IE6 is supported both in MW and jQ... so it's < IE5.5 we're blacklisting. [10:28:09] And that was a looong time after the 1.16wmf4 deployment. It was a few weeks after I'd introduced $wgJQueryOnEveryPage I think [10:28:21] Right [10:28:29] Ah, no, no complaints that I know of [10:29:14] So perhaps we can just drop that as a wontfix. I mean, Firefox 1.5 and IE 5.5... perhaps we can get some statistics on that. [10:29:15] Krinkle what will be the next Toolserver tool for me to write about ?? [10:29:35] GerardM-: Recent Anonymous Activity is going to be localized [10:29:40] GerardM-: Krinkle's time is mine now, mwahahahah [10:29:47] http://toolserver.org/~krinkle/recentAnonymousActivity.php [10:29:58] Krinkle: I'll grab stats, hang on [10:30:06] hehe [10:30:56] IE5.5 is 0.06% :oO [10:31:09] public ? [10:31:26] Firefix is 0.03% [10:31:28] Yes [10:31:32] http://stats.wikimedia.org/wikimedia/squids/SquidReportClients.htm [10:31:42] k [10:31:46] So you're right, these clients are waaay below the threshold where we stop caring [10:32:04] As long as things don't horrendously break, it's fine [10:33:37] RoanKattouw I prepare the blog post for when Krinkle is ready [10:34:03] Oooh, just looked at the 2.0 list and remembered ESI [10:37:07] I almost forgot about that one, need to read up though. I'm not sure why it was so cool (since timestamps aren't in the raw dom but in the startup module) [10:37:40] ESI allows embedding of the startup module through Squid/Varnish [10:38:12] I imagine we're getting a lot of requests for the startup module, both from people whose 5-minute cache has run out and from new visitors [10:38:28] ah, so no need to make something a seperate request "just" because it must not be cached in the static html. [10:38:40] Varnish caches the startup module and only requests it from the backend every 5 minutes, but it'd be much better if it could just embed it in HTML pages [10:38:40] yeah, that's nice since it's just a small module [10:38:58] sure thing [10:39:13] So right now startup is in 5 min cache ? [10:39:16] I imagine this'll save a significant number of requests, although Varnish doesn't break a sweat with the current load [10:39:18] Yeah [10:39:24] It's max-age=300, s-maxage=300 [10:39:41] Oh and [10:39:50] Our 'move shit to head' plan will have another positive effect [10:40:05] Right now things like the history module are loaded in the head, for the reasons we discussed [10:40:17] (Or their CSS is at least) [10:40:22] yep [10:40:32] But that means they use unversioned URLs, which also go into the 5-min cache [10:40:36] RoanKattouw: Ah, it's in max-age header ofcourse thats why I didn't see it. [10:40:47] on that though, I see my css modules in thead have a max-age of 0, any reason for that ? [10:40:52] head* [10:41:15] So people are re-requesting the history CSS all the time, and Varnish pulls it from the backend every 5 mins, but none of that is needed after the restructuring we came up with [10:41:22] both the user module and the core/extensions module request for css only are max-age 0 [10:41:24] Huh, which URLs? [10:42:03] http://i.imgur.com/1MwXR.png [10:42:13] http://bits.wikimedia.org/commons.wikimedia.org/load.php?debug=false&lang=en&modules=mediawiki.legacy.commonPrint%7Cmediawiki.legacy.shared%7Cskins.vector&only=styles&skin=vector [10:42:28] That max-age=0 is in the /request/ header, not the /response/ header [10:42:36] It's Chrome's way of saying 'gimme a fresh version plz' [10:42:50] (And it gets a 304, lol) [10:43:27] weird [10:43:39] Cache-Control:public, max-age=300, s-maxage=300 [10:43:39] indeed [10:44:00] Same for Vector CSS too [10:44:15] So with ESI, we can give these a longer max-age and put a timestamp in the url ? [10:44:22] Gotta be careful there, though, CSS that needs to work even without JS should stay up there [10:44:34] Not even with ESI [10:44:44] Just by moving the startup module to the head and using doc.write appropriately [10:44:55] yes. [10:46:01] I'm a little confused two as for these short max-ages, I didn't know that . expeected the to be much longer. Are they all just 300 ? [10:46:24] ah, the dynamic ones are 2592000. [10:46:47] Yeah the short ones are all 5 mins and the long ones are all 30 days [10:46:53] This is configurable in LocalSettings though [10:47:18] Hmm I have another idea [10:47:22] I wonder whether this works: [10:47:54] ... ... [10:48:27] If that works we can version the skin CSS when JS is enabled and fall back on unversioned refresh-every-5-minutes behavior if JS is not available [10:48:54] noscript in head.. never tried. [10:49:19] seems to be popular google search (suggested via) [10:49:32] http://www.google.nl/search?q=noscript+tag+in+head [10:52:12] http://webreflection.blogspot.com/2007/09/noscript-tag-behaviour-and-head.html [10:52:13] perfect [10:52:55] "Can anyone explain me why noscript can't be after a script inside head and why noscript can't contain in every part of page an external resource?" [10:52:56] too bad. [10:54:25] It's not valid HTML [10:54:30] Read the comments [10:54:39] yes, reading them now [10:54:41] Someone even says that the spec is silent on it, and that this is a bug in the validator [10:54:57] we need to make sure it's supported though. [10:55:09] External CSS tags apparently don't work inside