[00:44:58] TimStarling: More generally I don't like that TemplateParser (and LightNCandy) use php as its cached form. Compared to a cacheable data model in array form that would be iterated over, it's mostly the same speed. [00:45:14] But its internal model was (or is) not suitable for that kind of cache, so we settled with eval instead. [00:45:24] I did oppose that but it seemed others said it wasn't too bad. [00:45:50] We picked this library over others with higher code quality and test coverage due to its speed. [00:47:09] judging by the docs, the input format seemed pretty well standardized? [00:49:03] TimStarling: Mustache syntax is well standardised yeah [00:49:07] we can stick with LightNCandy if we want to, it's just a bit of a nuisance [00:49:34] there was a comment on phabricator to the effect that all templates should be registered, like RL modules [00:50:03] that would be one way to do precompilation anyway [00:50:37] I'd like to find time to improve upstream LightNCandy to support a mode where compilation can output an array instead of string of PHP. Which is essentially the same as the $args[foo] . $args[bar] . htmlescape($args[quux]) compile format, except in a more declarative manner. [00:51:25] the application at the moment is just to make a local test wiki with RepoAuth, for experiments and benchmarking [00:51:32] TimStarling: Yeah, I said at the time that if we won't want to pick a differnet library and not improve LightNCanday (e.g. stick with eval as cache model), that we should consider precompiling and storing on disk instead of APC. [00:51:38] https://phabricator.wikimedia.org/T379#1032865 [00:52:21] RA does not allow eval(), so it's necessary to compile every template and store it somewhere under the "base directory" of the repo [00:53:14] it would be easy enough to hack something up which iterates over includes/templates/*.mustache, less easy to make a whole registration system [00:53:32] TimStarling: extensions have their own templates. [00:53:40] yeah, I noticed [00:53:51] Although Flow currently has its own precompile-at-git-commit-time thing [00:55:00] DonationInterface uses LightnCandy directly, it doesn't use TemplateParser [00:55:19] // TODO: Use MW-core implementation once it allows helper functions [00:55:32] as if helper functions are magically going to implement themselves in core [00:56:00] there's no cache in that case, it just compiles every time [00:56:23] which of course is not allowed in RA [00:57:18] committing the compiled PHP would at least work around some privilege separation issues [01:27:15] I wanted to properly understand how socket takeover works, so I wrote a basic demo implementation in Python: https://gist.github.com/atdt/fe50df61d6725d401b88613f59e95ef0 [01:29:58] it's a pretty powerful technique that deserves to be better known. The material on interprocess descriptor transfer usually describes it as a means for implementing custom file access control schemes (you can have a process with the right privileges open a file and pass an open descriptor to an unprivileged client) [01:30:46] but this is much more interesting and useful imo [03:52:05] select, socket, struct [03:52:07] Cute. [03:54:42] ori: fd is file descriptor? [04:36:35] yes [16:06:04] AaronSchulz: meeting? [16:37:38] https://www.mediawiki.org/wiki/Manual:PHP_unit_testing/Code_coverage [16:52:23] nice additions Krinkle [17:48:55] bd808: Finally sorted out my retarded vagrant/apt issue. https://gerrit.wikimedia.org/r/#/c/305312/ [19:36:07] ostriches: awesome [21:02:46] RFC starting now in #wikimedia-office: Content model storage [21:02:54] RFC meeting, rather [21:11:46] tgr: I'm ready to send out the announcement for the pywikibot release, and would like to include a date when people have to upgrade by. When do you (and anomie) want to have the change re-deployed by? [21:15:16] legoktm: August 7. ;) [21:15:34] August 7, 2017 it is! [21:15:39] jk :P [21:18:29] Actually, I had the timeline wrong. August 5, 2016. ;) [22:21:09] legoktm: I would like to redo the API change as soon as T142304 is fixed, that way people have a last resort [22:21:10] T142304: Allow using a bot password with base username - https://phabricator.wikimedia.org/T142304 [22:21:35] I have no idea what's a reasonable update period for PWB [22:21:38] should I just say "upgrade ASAP" then? [22:21:54] wouldn't be surprised if most people were still using compat :) [22:22:21] we didn't fix compat [22:22:23] yeah, that sounds good [22:23:02] was compat broken by SessionManager? I don't remember [22:24:09] anyway in my experience (which is in no way representative) there are lots of folks who don't use git and are very slow in updating [22:24:51] or they might be using 2.0 or whatnot [22:25:40] we want to get people to use OAuth or bot passwords anyway, it's more secure, so telling them to do that as a way to avoid breakage is convenient [22:26:40] (more secure and more robust too, e.g. once 2FA rolls out PWB won't be able to login into your admin account to get elevated permissions) [23:13:38] uh [23:13:43] anomie, tgr: User 'Roblomo' exists locally but is not attached. {"exception_id":"V7Tq2wpAAEAAAP6yV4EAAAAG"} [23:16:10] MaxSem: yeah, those things happen [23:16:28] still? I thought these were fixed? [23:16:30] bd808 has a script for reattaching [23:16:48] they were fixed to not happen often [23:17:23] autocreation does changes on two different DB connections, so there is no way to guarantee transactional integrity [23:17:25] heh =) [23:17:53] https://gerrit.wikimedia.org/r/#/c/300686/ will probably improve things once merged [23:17:53] hum, make it self-heal quietly? [23:18:35] it should self heal but it still logs [23:18:53] attaching local accounts without human oversight seems scary [23:19:05] because in theory it shouldn't happen [23:19:18] I don't think that part self-heals, only the localuser/user inconstisency [23:19:35] oh, right [23:21:55] my script (that I still haven't put in to gerrit) only fixes the same thing that self-heals now [23:22:04] I think... [23:25:09] where does that exception message even come from... [23:26:04] SpecialCentralLogin, apparently [23:26:48] it's an uncaught Exception inside dpLoginStart [23:27:10] but I can't find anything that creates it in CA [23:27:39] there's a "The user account is not attached. [23:27:48] but that's different text [23:28:15] woah, there are hundreds of it in the last few days