[15:49:52] MaxSem: Since you weren't around until just now I rebased https://gerrit.wikimedia.org/r/#/c/203369/ for you (I was going to poke legoktm to merge it then). But since you're here, want to review my update so we can finally merge it? [15:53:37] anomie, thank you so much [15:53:50] the rebase looks good [15:54:20] +1 or +2 it? [15:54:32] * anomie is writing the announcement for mediawiki-api-announce now [15:58:03] done [16:14:53] MaxSem: Regarding txt, yaml, and dbg, they're all getting plenty of hits but 99.98% from IPs. dbg in particular is 99.45% from just one IP (that looks like it's being some sort of proxy judging by the number of different agents), and yaml is 88.9% from some site that is apparently a "data aggregator providing a solution for brands to prospect and monitor their market". [16:17:53] anomie, yeah - I considered contacting them [16:31:21] yay :D [16:41:10] The top user of format=txt seems to be something similar, 22000 hits to list=search and 0 to anything else. But they use a browser agent :/ [17:13:50] bd808: You too! [17:14:02] :) [19:42:34] legoktm: when https://phabricator.wikimedia.org/T90303 will we be running phpunit defined by composer.json in Jenkins? [19:43:40] s/will/is done will/ [20:08:05] bd808: I just haven't found time to work on it, maybe next week [20:08:58] legoktm: but that's the goal right? Brad has something that would benefit from that in gerrit so if you need help I think I can volunteer to help [20:12:53] yes [20:14:09] so the plan I had was to have a python script in integration/jenkins that created a composer.local.json that included mediawiki/vendor's composer.json [20:14:41] then I think we were going to run composer on top of that, so we'd probably need to git clean after or before the job [20:15:03] also make sure that doing so doesn't erase any local patches we have in vendor [20:18:59] hmmm... have you tested doing something like that? Its not intuiative to me that the the contents of mw/vendor would be treated as existing by a composer run in $IP that pulled in the mv/vendor/composer.json [20:20:57] maybe if we copied the composer.lock over to $IP? [20:25:49] maybe [20:27:33] the last time I tried the tests didn't even pass on zend, I'm rebuilding https://integration.wikimedia.org/ci/job/mediawiki-phpunit-zend-composer/8/console now [20:28:23] oh, I need to push the updated job definition again [20:45:32] bd808: https://gerrit.wikimedia.org/r/222185 [21:38:11] bd808: Are you still managing community tech? I'm trying to find their Q1 goals.. [21:38:55] csteipp: "figure out why the hell this team exists" [21:39:11] so... yeah [21:39:21] hah, ok. [21:39:50] Well if you're people are lacking things to do, let me know... ;) [21:39:51] We are making progress but it has been slow. All the important people have been consumed by budget and similar crap since the reorg [21:40:46] csteipp: if you have things that are beginner level I'm all ears. The 2 full time engineers we have right now are just learning MW [21:41:03] Yeah, understandable. Does https://phabricator.wikimedia.org/tag/community-tech/ reflect the types of things you're thinking about? [21:41:21] bd808: I might have a couple things... I'll let you know if so. [21:42:36] I think most of that dashboard reflects what some random people think we should be doing [21:43:46] Cool. Wasn't sure how that got there. [21:43:52] The team has a big chicken and egg problem. We need the Cs and Vs that created it to tell us what they meant in the vague mission statement. And then we need to find stakeholders in the "right" communities and find out what they want [21:44:12] then we can figure out if we can do any of the things they want [21:44:24] and that's all been going nowhere for 2 months :/ [21:45:12] meanwhile there is a PR shit storm brewing on meta that nobody wants to touch (me included) [21:45:48] But there is hope. We had what I think was a very productive meeting this week with most of the right people in the room [22:24:13] ori: https://gist.github.com/atdt/d634d00be9679ee0394e is cute. I tend to use the power switch for such things ;) [22:24:39] bd808: it's a keyboard key on macs! [22:25:13] my MBPs still have a power button [22:25:32] all... 4 of them? /me hangs head in shame [22:29:24] bd808: Me too. It's because we have sucky old laptops because no-one loves us, or something. :-) [22:29:45] I hate mb airs [22:30:44] I think my next laptop is going to be a thinkpad. Its been a long time since I suffered with the linux on desktop crowd [22:31:06] plus then I can randomly crash out of hangouts and just say "linux" [22:32:26] I think the only thing I have learned to love on the mac that I'll have to hunt for a replacement of on linux is my irc client [22:33:13] having an easily scriptable, webkit based irc client is nice [23:12:11] bd808, which is that? [23:12:24] I use Textual [23:13:04] I build it from source at https://github.com/Codeux-Software/Textual [23:13:50] I paid them for the app store version at some point too but I build my own with a couple of patches that they rejected for app store compliance [23:14:30] o_0 [23:14:42] my theme stuff is at https://github.com/bd808/Textual-Theme-bd808 [23:17:17] hmm, its developers are crazy enough to "upgrade" a 2-clause BSD to 3-clause :P [23:18:31] they had a whole license shit storm with the original upstream. [23:18:46] I accidentally wandered into the middle of it at one point [23:19:55] They pretty obviously don't "get" licensing -- https://github.com/Codeux-Software/Textual/pull/399 [23:22:00] Here's the PR where I wandered into the mess -- https://github.com/Codeux-Software/Textual/pull/416 [23:22:46] TL;DR I contacted the LimeChat dude and he told me that Textual was the devil [23:29:31] bd808, TL;DR that's why I like WTFPL [23:40:26] ori: when you get a chance... https://phabricator.wikimedia.org/T95356#1419316 has a question that I'd like to hear your opinion on [23:41:03] bd808: looking [23:41:44] There is some addition context in the patches -- https://gerrit.wikimedia.org/r/#/c/205864/ [23:44:01] ok, I'm dumb and it's a long today -- help me understand this. What does tgr mean by 'the hook documentation should probably suggest some convention (use mw:wfTrack/'? [23:44:06] convention for what? use that where? [23:44:18] what does that string (mw:wfTrack/event) represent? [23:44:27] *it's been a long day today [23:44:53] a subpage of mediawiki.org/wiki/wfTrack [23:45:05] convention for and place to document the wfTrack "topics" which are really just EL events in disguise [23:46:12] they could be EL events, they could be statsd events [23:46:35] wfDebugLog calls, whatever [23:46:42] and they are distinct from hooks how? [23:46:52] I'm not sure EL covers all possible scenarios well [23:47:07] they are all implemented with the same hook [23:47:08] it is a hook, just one hook for things that are very similar [23:48:02] which is a good thing because 1) our hook system is already an incomprehensible mess and adding a new hook any time someone wants to count something would make it even worse 2) adding a new hook is too much effort [23:48:06] ori: this is the implementation of the mw.track() like thing for PHP we talked about quite a while ago [23:48:43] tgr: but this way you'll end up with a wfTrack call next to half of the Hook::run calls [23:49:15] there is no running away from the fact that 'the set of events that code might want to react to' and 'the set of events that are of analytic interest' are overlapping [23:49:48] overlapping but usually not quite the same [23:49:53] it seems to me that what might be needed is [23:50:30] and it is a lot easier to change something that is not allowed to influence the behavior of the code; worst case you break some stats [23:50:59] reasoning about the effect of changing a hook tends to be much harder [23:51:16] EventLogging::mapHook( 'AddNewAccount', function ( $user ) { [23:51:16] return array( 'schema' => 'AccountCreation', 'id' => 1234, 'event' => $event ); [23:51:16] } ); [23:51:36] in other words a concise way of mapping a hook to an analytic event [23:52:08] like I said it has been a long day and you're both very smart individuals, so if I'm way off just tell me to fuck off [23:53:35] I mean we sort of already do that all over the place, that is what the PHP side of the WikimediaEvents extension does [23:53:37] https://phabricator.wikimedia.org/T91701#1212974 has a short survey of the existing hooks for the specific use case we needed this for [23:53:44] it binds hook handlers that produce eventlogging events [23:54:11] well... the ori from 3 months ago thought a system just for this would be nice but... [23:54:34] yeah but anomie told us we were being dumb and I didn't have a good comeback :P [23:55:00] he said that inventing a new event dispatcher was dumb. so I ditched that [23:55:38] what the snippet I typed up above would offer is: concision, and safety (callbacks attached via ::mapHook don't influence behavior -- their params are passed by copy and their return value is not propagated back to the hook handler) [23:56:33] in truth the whole hook system sucks and it was easier to hide it than to fix it I guess :) [23:56:37] but it limits you to (a) existing hooks as entry points and (b) the data that they expose [23:56:40] but ok, I get that this sort of feedback might not be welcome this late in the game. If you're asking me re: creating a convention that events be documented via schema, that's fine by me, I think. [23:57:09] I don't agree with (a). Look at it this way: [23:57:30] (a) it gives you ready-made events for a bajillion of the things you are probably interested in [23:57:48] (b) adding new ones is exactly as much work as adding a track event would be [23:57:52] I want something that isn't seen as yet another layer of shitty cruft that everyone avoids, so don't worry about the "late stage" stuff [23:58:16] I think in a lot of cases EventLogging is not the best way to implement quick metrics because making an EL-based dashboard is way too much effort [23:58:30] of course not, we have the whole Stats stuff for that now [23:58:31] which is why I want to use statsd for the auth metrics [23:58:44] oh that's even easier [23:58:46] oh. well there is already magic for that [23:58:59] getContext()->getStats() [23:59:11] and the data schema should probably be still recorded somewhere, that's why I asked the convention thing [23:59:31] statsd doens't really have a "schema" [23:59:39] yeah, that's what https://gerrit.wikimedia.org/r/#/c/205869/ does [23:59:42] just "add 1 ot this counter"