[07:56:53] hello [08:01:57] hi hashar, bye hashar [08:02:00] * ori-l is off to bed [08:02:03] good night :-) [11:38:44] New patchset: Zfilipin; "secret.yml can now be either in /private/wmf/ or config/" [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56128 [12:24:46] Starting build #4 for job Test - IRC notification (previous build: SUCCESS) [12:24:46] Project Test - IRC notification build #4: SUCCESS in 13 ms: https://integration.wikimedia.org/ci/job/Test%20-%20IRC%20notification/4/ [12:24:53] :-D [12:44:35] New patchset: Zfilipin; "Enabled test that was failing because of a know MediaWiki bug" [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56143 [12:53:46] Yippie, build fixed! [12:53:47] Project _debug-browsertests-template build #89: FIXED in 37 sec: https://wmf.ci.cloudbees.com/job/_debug-browsertests-template/89/ [13:35:28] hashar: are you around? [13:35:38] zeljkof: i am [13:36:08] do you have a minute or two? :) [13:36:28] zeljkof: yeah sure :-] [13:36:45] great [13:36:58] I need to cleanup some pages at test2 [13:37:29] we generate pages automatically for each test, and looks like ruby's random number generator is not so random [13:37:39] that is unfortunate [13:37:51] until I fix the problem on ruby side [13:38:03] is there a way to delete all pages that start with "0." (without quotes) [13:38:12] at test2 [13:38:39] maybe we have a script to do that [13:39:03] aha [13:39:04] http://test2.wikipedia.org/wiki/Special:Nuke [13:39:11] there is "mass delete" page :) [13:39:26] maintenance/deleteBatch.php which consume a list of page sent on stdin [13:39:38] yeah Nuke might work to [13:39:44] you need to be allowed though :( [13:39:51] no idea who can give you the rights there [13:39:55] let me see if I have the credentials [13:40:35] looks like it is deleting... [13:41:05] there is even an option to list all pages created by a user, just the thing I need, since all pages are created by selenium_user [13:41:25] :-D [13:41:34] "Our servers are currently experiencing a technical problem…." [13:41:49] Nuke might even have an API entry point to let you delete the pages easily [13:41:57] Error: ERR_READ_TIMEOUT [13:42:07] looks like I tried to delete too many pages [13:42:24] you might just resubmit until it deleted everything [13:42:29] this is one-time thing, I will fix the problem on our side, I just need to fix it temporarily [13:42:32] unless the whole deletion is in a transaction [13:42:41] will try and see [13:43:34] 10 pages deletes just fine, 100 too [13:43:56] it had problems with 500, will see where is the limit [13:44:34] New patchset: Hashar; "mediawiki-core-regression-phpcs-HEAD" [integration/jenkins-job-builder-config] (master) - https://gerrit.wikimedia.org/r/56154 [13:44:55] zeljkof: hit is possible that 500 still delete X pages [13:45:04] Change merged: Hashar; [integration/jenkins-job-builder-config] (master) - https://gerrit.wikimedia.org/r/56154 [13:45:06] hashar: could be [13:45:11] ok, 200 timed out again [13:45:17] so 100 by 100 for now [13:46:58] New patchset: Hashar; "mw/core phpcs now only run on HEAD" [integration/zuul-config] (master) - https://gerrit.wikimedia.org/r/56155 [13:47:11] Change merged: Hashar; [integration/zuul-config] (master) - https://gerrit.wikimedia.org/r/56155 [13:52:58] looks like the timeouts are random, since nuke page seems to return the same number of pages every time, no matter how much I ask for [13:53:14] so it does delete anything whenever it reach a timeout? [13:53:29] not sure how to check that, since all page names are random :) [13:53:44] ok, I could search for the first and the last page on the list [13:53:47] that would say something [14:03:27] New patchset: Hashar; "checkstyle publisher for phpcs" [integration/jenkins-job-builder-config] (master) - https://gerrit.wikimedia.org/r/56157 [14:03:45] Change merged: Hashar; [integration/jenkins-job-builder-config] (master) - https://gerrit.wikimedia.org/r/56157 [14:03:52] qgil: I'm off tomorrow [14:04:48] marktraceur, hum. :( Friday? Or maybe today works for sucheta after all? [14:05:08] qgil: I'm off Friday too. She replied saying today was all right, if you can rereschedule [14:05:23] qgil, I mailed you. I am fine with today :) [14:05:29] marktraceur, ah ok. Sorry, still in the train. Will do right away [14:05:33] Sweet. [14:05:58] marktraceur, sucheta sometimes trying to do the best is not the best ;) [14:06:11] Heh :) [14:06:41] qgil, I found it cute :D [14:07:46] marktraceur, sucheta done. See you in a bit. [14:08:24] arhg [14:08:29] I restarted jenkins by mistake [14:09:36] * hashar ** jenkins has been restarted by mistake :-( Job building will be unavailable for up to half an hour. ** sorry [14:14:12] New review: Cmcmahon; "maintenance" [qa/browsertests] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/55868 [14:14:12] Change merged: Cmcmahon; [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/55868 [14:16:39] New review: Cmcmahon; "update rvm" [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/55878 [14:16:48] New review: Cmcmahon; "update rvm" [qa/browsertests] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/55878 [14:16:49] Change merged: Cmcmahon; [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/55878 [14:17:36] New review: Cmcmahon; "better handling for secret data" [qa/browsertests] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/56128 [14:17:37] Change merged: Cmcmahon; [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56128 [14:18:55] New review: Cmcmahon; "re-enable test for GuidedTour that no longer fails bz 45781" [qa/browsertests] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/56143 [14:18:56] Change merged: Cmcmahon; [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56143 [14:19:44] New patchset: Zfilipin; "secret.yml is now required only for scenarios/features tagged @login" [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56159 [14:28:27] hashar: do not worry, our hosted jenkins still works :) [14:29:02] zeljkof: I have updated the packages and wrongly checked "install after restart" [14:29:20] zeljkof: so now jenkins is busy parsing the old builds results (we have thousands and thousands of them :( ) [14:29:51] hashar: wow, busy busy jenkins [14:30:08] hashar: and to speed up deleting pages, I have created a selenium script that loops until all contributions by selenium_user are not deleted [14:31:14] New review: Cmcmahon; "don't require secret file for tests that don't need it" [qa/browsertests] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/56159 [14:31:15] Change merged: Cmcmahon; [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56159 [14:33:26] New review: Cmcmahon; "re-enable test now that bz 46382 is fixed" [qa/browsertests] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/55885 [14:33:26] Change merged: Cmcmahon; [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/55885 [14:44:02] hashar: can we install any extension we need for testing at en.wikipedia.beta.wmflabs.org? [14:44:40] zeljkof: such as ? :-D [14:45:11] I think Chris and Rob want beta to match production configuration, so I am not sure an extension can be installed there [14:45:15] which one are you looking for ? [14:45:38] hashar: I am running the tests right now and trying to move all tests from using test2 to using beta [14:46:05] if I find something that is not running on beta I will let you know, so we can talk about details [14:48:03] zeljkof hashar afaik, anything that is on test2wiki should be at least allowed on beta cluster. test2wiki does have some differences, for example, FlaggedRevs on every page, but we don't care about that for beta [14:48:24] I guess [14:48:47] anyway, you could then get the module added by editing mediawiki-config.git , I can assist there :) [14:49:06] zeljkof hashar the ultimate goal here is to run browser tests against both beta cluster and test2wiki. [14:49:56] chrismcmahon, hashar: yes, the first step is to see if we can run everything both on beta and test2, playing with that right now [14:51:31] which will be awesome :) [15:03:53] New patchset: Zfilipin; "MovePage was used but not defined" [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56166 [15:06:31] New review: Cmcmahon; "fix oversight" [qa/browsertests] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/56166 [15:06:31] Change merged: Cmcmahon; [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56166 [16:03:05] zeljkof: whenever you get some failures of browser tests against beta, please interrupt me and we will sort them out :] (though I am leaving now .. ;p) [16:03:40] hashar: will do, I will leave soon too, luckily we are in the same time zone :) [16:11:53] New patchset: Hashar; "trigger for operations-debs-python-voluptuous-debbuild" [integration/zuul-config] (master) - https://gerrit.wikimedia.org/r/56170 [16:12:13] Change merged: Hashar; [integration/zuul-config] (master) - https://gerrit.wikimedia.org/r/56170 [16:20:44] In https://gerrit.wikimedia.org/r/#/c/50857/2/js/lqt.toolbar.js I'm trying to convert an old $.ajax API request to use mediawiki.api [16:20:45] Problem is we were relying on the returned jqXhr object to use .abort on... Is there a way to do that with a Promise object? [16:27:33] Krinkle|detached, ^ [16:33:42] sucheta, hi you around? [17:21:16] New patchset: Rachel99; "add search for accent to search" [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56181 [17:27:52] Krenair: In a meeting, ask me in an hour. [17:36:30] rachel99: nice! [17:37:05] chrismcmahon: Thanks! Zeljkof helped a lot! [17:38:28] sumanah: ^^ community contributions to browser tests. thanks rachel99 we appreciate it. [17:38:47] Sure :) [17:45:16] qgil: hi; I'm going to do a quick review of that trilingual blog post now, format it and publish it [17:45:44] guillom, the English version is the one that matters [17:45:56] guillom, the German version was already publshed in the WMDE blog [17:45:58] Well, it's the only one I can really review :) [17:46:09] My German is limited, and my Dutch even more so. [17:46:29] guillom, about the Dutch version, I don't know what is the practice with translations. [17:46:33] * RoanKattouw looks up [17:47:12] guillom, I just wanted to make sure you don't do extra work because of the formatting of a doc :) [17:47:21] RoanKattouw: it's in a private gdoc :( ; in a few minutes I'll put it on the blog as a draft and you can take a look if you want [17:47:29] OK sounds good [17:47:31] Let me know [17:47:54] qgil: ah, well, it's standard to add the language template at the top for navigation; if you only want me to publish the English version, tell me now :) [17:48:31] English and Dutch. German... we could republish. guillom [17:49:00] If I do 2 languages, I might as well do 3; it's no extra work :) Ok, will do now [17:49:19] thanks guillom [17:49:33] sure [17:53:38] ugh, gdoc really is a terrible way to draft posts; it adds a *lot* of crap the the HTML :( [18:00:00] qgil: who should sign the post? You, Denise? If it's her, I'd need a title. [18:00:19] (I mean, her title) [18:04:35] <^demon> guillom: s/way.+$/thing/ [18:04:54] ^demon: preaching to the choir :) [18:12:46] guillom, wait... [18:13:41] guillom, http://blog.wikimedia.de/2013/03/18/wikimedia-hackathon-in-amsterdam-am-24-26-mai-2013/ --> Nicole Ebber, and there is a title there [18:14:03] maybe RoanKattouw can help with the Dutch translation of the title [18:14:32] I meant her position :) sorry for the confusion [18:14:52] So Nicole's name should go at the bottom of our post? [18:15:01] (just making sure) [18:15:36] qgil: Wikimedia Hackathon in Amsterdam 24-26 mei 2013 [18:16:12] https://blog.wikimedia.org/tag/multilingual-post/ [18:16:40] guillom, Nicole is the person who wrote it, then Denise translated [18:16:50] qgil: ok, thanks; much clearer :) [18:17:33] guillom, assumptions - that major bug in human language [18:19:36] thanks roan, btw [18:22:38] hah, the original post had a pic. [18:28:46] kaldari, a couple Echo questions [18:28:53] Is it possible to have an email-only notification? [18:29:02] What is the 'payload'? [18:29:53] * Reedy thinks about metasploit.. [18:30:20] :) [18:30:28] sure [18:30:51] in the prefs you can turn off either email or web for each category of notifications [18:31:48] the payload is some optional chunk of data that gets sent with the notification, such as the edit summary, a text snippet, a list of categories, etc, [18:36:28] qgil: preview https://blog.wikimedia.org/?p=22820&preview=true [18:37:09] guillom, Error 404 - Not Found do I need to be logged in? [18:37:18] qgil: logged in :) [18:37:32] Reedy: Do you know of any caching regarding the default api help page? I'm on a local install with little to no caching and for some reason, api modules from extensions I uninstalled yesterday still show up and extensions I installed today don't. When I trigger the actual module (action=....) it works as expected (the old one yields Unrecognized value, and the new one works) [18:37:39] It's still a draft (not published) so mortals can't see it (yet). [18:37:42] Krinkle: Yes [18:37:56] Reedy: http://cl.ly/image/3E2S1l2c0h44 [18:38:04] $wgAPICacheHelpTimeout [18:38:06] Reedy: Unknown action 'visualeditor', and look what's listed below in the help [18:38:10] :D [18:38:26] Reedy: Aha, thanks! I've been looking in the ApiHelp code but didn't find it. [18:38:36] ;) [18:38:55] Found it, in ApiMain wgMemc [18:38:56] Thx [18:39:16] guillom, getting new password..... [18:39:23] heh [18:40:21] kaldari, thanks. I'm starting to get the hang of it. [18:40:55] guillom, looks good! [18:41:00] superm401: sorry we don't have documentation for all of this yet [18:41:02] great [18:41:11] qgil: should we wait for RoanKattouw_away? [18:41:41] guillom, nee. It's ok. [18:41:45] I'm tempted to publish now, and let Roan tell us if there's something to fix [18:41:46] ok [18:42:11] Posted: https://blog.wikimedia.org/2013/03/27/join-the-wikimedia-hackathon-in-amsterdam-on-may-24-26-2013/ [18:42:46] guillom, this blog reminds me that categories / tags there should be one day aligned with https://www.mediawiki.org/wiki/User:Qgil/Contributors#One_ontology mwah wah wah! [18:43:23] guillom, thank you very much! [18:44:02] qgil: no problem :) [18:44:57] 89 Exception from line 637 of /usr/local/apache/common-local/php-1.21wmf12/includes/cache/MessageCache.php: Message key 'Filepage.css' does not appear to be a full key. [18:44:57] 1 Exception from line 637 of /usr/local/apache/common-local/php-1.21wmf12/includes/cache/MessageCache.php: Message key 'Common.css' does not appear to be a full key. [18:45:04] Wonder where whose are coming from.. [18:46:04] big file is big... [19:03:12] Hey Krinkle, do you have a moment now? [19:03:18] Krenair: Yep [19:03:30] Krenair: What was it again? [19:04:16] In https://gerrit.wikimedia.org/r/#/c/50857/2/js/lqt.toolbar.js I'm trying to convert an old $.ajax API request to use mediawiki.api [19:04:19] Problem is we were relying on the returned jqXhr object to use .abort on... Is there a way to do that with a Promise object? [19:05:13] Ah, right. [19:05:23] Krenair: No, and there couldn't be. [19:05:40] hi, on hr.wikipedia Kafić link (Village pump) in navigation portlet just became Village pump, any info how to fix that? [19:05:44] A Promise object represents an asynchronous return value (with handling for error and progress). [19:05:52] Okay, so I'll have to stick to the old $.ajax then Krinkle? [19:05:59] Not per se, hold on [19:06:20] Krenair: A promise object can't possibly know how (or even if) an action can be aborted. A promise could be coming from anywhere for any reason. [19:06:27] Krenair: However there's the secret [19:06:30] $.ajax() also returns a promise [19:06:46] Yet it has an abort method. [19:07:04] That's because promise methods are detachable. They are designed to be easy to mix and extend. [19:07:18] It makes sense for both $.ajax() and mw.Api to provide an abort method [19:07:31] I'd say, implement it. It should only be like 1 like in mw.Api to add the abort method. [19:07:38] 1 line* [19:07:51] But until that time, yes, you'll have to stick to $.ajax. [19:08:30] Okay, I'll amend this LQT change to use $.ajax then try to modify core to provide .abort [19:08:32] Thanks Krinkle [19:08:57] Krenair: If you want to make it slightly shorter syntax, you could use $.getJSON instead of $.ajax [19:09:09] It's even shorter (and faster) than mw.Api in this case [19:09:18] since you're just using action=query, for which mw.APi doesn't provide anything [19:09:23] Only extra overhead. [19:10:35] New patchset: Reedy; "Few more lines to skip" [mediawiki/tools/release] (master) - https://gerrit.wikimedia.org/r/56194 [19:11:02] Change merged: Demon; [mediawiki/tools/release] (master) - https://gerrit.wikimedia.org/r/55654 [19:11:12] New review: Zfilipin; "This is work in progress, do not merge to master." [qa/browsertests] (master) - https://gerrit.wikimedia.org/r/56181 [19:44:40] ^demon: this looks strange: https://gerrit.wikimedia.org/r/#/c/55912 . I see no "Verified" column. [19:45:30] <^demon> Yeah, weird UI bug. [19:45:34] <^demon> I think it's fixed in master. [19:54:51] ^demon: https://gerrit.wikimedia.org/r/#/c/56199/1 :) [20:07:43] qgil|lunch: did you repeat the hackathon dent on identica? [20:08:25] Otherwise I did it and I misplaced my head. [20:09:33] OK, I see you also retweeted it, so I'm not losing my mind :) Just so you know for the next time, I usually take care of that, so you don't have to worry :) [20:14:10] guillom, ok you are right. Sorry! [20:15:05] qgil: no problem at all; I got distracted while posting on identica by all the messages about identica closing etc., so you were right to assume that I had finished :) [20:29:28] basile: IDENTI.CA ISN'T CLOSING (though there are no new signups) [20:29:31] :) [20:30:40] yeah [20:30:47] it's just more l33t now I guess? [20:31:18] it's just going from php -> node.js [20:31:19] :D [20:39:01] heh [20:39:30] sumanah: more like identeratti, back to a closed beta ;) [20:42:41] YuviPanda: Seems like a logical choice for such an event driven platform (not a must by any means, but certainly promising and raising in the area) [20:42:56] I wonder when MediaWiki will go (yes, when, not if, call me crazy) [20:43:16] Krinkle: super long term, I see 'cool' projects moving off php [20:43:36] Krinkle: though I doubt we ever will, without a significant fork. though having a 100% completed parsoid might be one stpe there :) [20:44:27] Right now it isn't very attractive to do server side because of the overhead and context loss (no user or database interaction, yet) [20:44:30] Krinkle: i think wikitext is the biggest impediment to this lack of alternatives, I think [20:44:57] Meaning, it wouldn't hard to implement a MediaWiki extension like AbuseFilter in nodejs [20:45:47] yeah [20:45:48] I'm guessing standalone projects (e.g. separate entry points, like eventlogging and parsoid) could use nodejs. [20:46:02] parsoid already does, I guess [20:46:06] Anything else should stick to PHP, and if and when we do a restart (e.g. MediaWiki 2.0 perhaps) we'll start over. [20:46:10] YuviPanda: Indeed. [20:46:26] EL is primarily 0mq + php [20:46:31] but the mongodb bits use python, IIRC [20:46:41] YuviPanda: Though not exposed publicly, only accessible from web servers internally, it is wrapped around as a MediaWiki API.php module [20:46:53] (parsoid) [20:47:08] Krinkle: sure, but the code is tehre for someone else to use, I guess [20:47:18] Sure [20:47:27] Reedy: Perhaps you can help with https://gerrit.wikimedia.org/r/#/c/56204/ (see comment) [20:48:41] !e TemplateData [20:48:41] https://www.mediawiki.org/wiki/Extension:TemplateData [20:49:41] I could see one hacky way of doing it [20:51:50] YuviPanda: EL has a large python component, actually -- all the server-side handling is done in python [20:52:14] ori-l: oh! I thought only the 0mq -> mongodb was in python [20:52:26] ori-l: but yes, makes sense for that and the mysql bridge to be in python to [20:52:26] o [20:53:26] ori-l: reminds me to submit a patch to do insert-time time-based aggregation for mongodb sometime. [20:53:28] public function getCustomPrinter() { [20:53:28] if ( $this->getRequest()->getText( 'format', $format ) == 'jsonfm' ) { [20:53:28] return $this->getMain()->createPrinterByName( 'jsonfm' ); [20:53:28] } else { [20:53:28] return $this->getMain()->createPrinterByName( 'json' ); [20:53:29] } [20:53:29] * YuviPanda puts it in his TODO [20:53:31] } [20:54:45] Krinkle: It seems it's going to be ending up as a hack one way or another (as above) [20:55:02] Reedy: Hm.. I see. [20:55:04] YuviPanda: http://docs.mongodb.org/manual/tutorial/expire-data/ [20:55:19] Reedy: That's not too bad. Would you approve that in core ApiOpenSearch? [20:55:30] YuviPanda: also, http://i.imgur.com/oP0I0xK.png <-- heh! no idea what github is interpreting as perl [20:55:34] why would we want to do that? [20:55:36] Krinkle: It's designed mostly to let people have whatever format they want [20:55:42] So it's a hack to limit [20:56:02] ori-l: do we have expletives there that github is interpreting as perl? :P [20:56:06] YuviPanda: it's a way to have collections that represent a fixed time-window (last five minutes, or something) [20:56:14] Reedy: Yeah, the format= parameter is optional (supposed to be ignored even) [20:56:25] .. when a custom printer is provided. [20:56:35] heh [20:56:42] I guess. We've worse hacks around for other things... [20:56:45] ori-l: really? that looks like a way to remove data after x seconds... [20:57:30] Krinkle: Can you get quorum between Roan, myself, Brad, Yurik, Max... [20:57:31] ;) [20:57:42] YuviPanda: right [20:58:47] Oh, Krinkle... Interesting [20:58:58] Have you looked at the OpenSearchXML extension? [20:59:12] // We can't use $this->getMan()->getParameter('format') as this [20:59:12] // seems to override our specified limits and defaults, picking [20:59:12] // 'xmlfm' instead of 'json' as default. [20:59:42] Line 51 onwards [21:00:02] That looks slightly neater IMHO [21:01:05] Reedy: I'll check it out, thanks. [21:02:47] Krinkle, is it "typeof someFunction() === 'undefined'" or "someFunction() === undefined"? [21:03:12] Krenair: No '()' either way. [21:03:17] Krenair: As for which to use, https://www.mediawiki.org/w/index.php?title=CC/JS#Type_checks [21:04:03] ok, pretend it's someFunction( 'info here' ) then [21:04:23] Not sure if this is considered a local variable, property or global variable under that [21:04:28] Krenair: You're checking the return value of the invokation? [21:04:41] Local variable in that case [21:04:47] The actual line I'm looking at is if ( typeof $( this ).data( 'timerID' ) !== 'undefined' ) { [21:04:56] I tried to make my question more generic [21:05:07] ok [21:05:08] I see. Yes, local variable in that case. [21:05:51] cache[title] also a local variable? [21:06:12] Property [21:06:32] But same treatment [21:10:56] Reedy: So what's the story behind using $this->extractRequestParams(); vs $this->getRequest()->getText() [21:12:42] The latter was something I found in Wikibase [21:12:49] Using extractRequestParams() is the "api way" [21:13:13] I'm having trouble finding said code again in Wikibase to ask them to clean it up.. [21:13:50] Reedy: OK, makes sense. [21:14:21] The getRequest method came later with the context parent class being introduced [21:16:27] :o [21:16:35] Krinkle: why is one better than the other? [21:16:52] aude: one of which? [21:17:11] It deals with prefixes and such [21:17:23] public function extractRequestParams( $parseLimit = true ) { [21:17:23] // Cache parameters, for performance and to avoid bug 24564. [21:17:24] extractRequestParams vs getRequest [21:17:25] :D [21:18:48] hmmm, ok [21:19:49] That first comment won't work anyway as $format is undefined at the top [21:21:02] Reedy: I noticed when playing with opensearch that it seems a bit odd that it literally ignores the 'format' parameter [21:21:10] Perhaps it should error when it is set? [21:21:18] (at least when set to something other than json) [21:21:53] It's designed to follow a specified format [21:22:02] https://www.mediawiki.org/w/api.php?action=opensearch&format=text [21:22:03] interesting [21:22:05] that does error [21:22:07] and only expects using it in that type [21:22:34] ah, coincedence [21:22:46] https://www.mediawiki.org/w/api.php?action=opensearch&format=txt [21:22:58] Nope, that also errors [21:23:03] though not on my local install [21:23:32] 'validateFormat' [21:23:34] Nice [21:24:02] And getAllowedParams [21:24:03] Of course [21:24:13] Okay, never mind. Nothing needs to change in core, this is perfect. [21:24:15] On WMF it's a different module [21:24:18] yeah [21:24:26] https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/OpenSearchXml.git;a=blob;f=ApiOpenSearchXml.php;h=bd8b7b482ff2638fc398a9d486a361026f50787a;hb=HEAD#l134 [21:24:33] That should probably be added to core as well [21:24:53] so that format=xml doesn't just silently serve json when it isn't installed [21:24:58] / We can't use $this->getMan()->getParameter('format') as this [21:25:00] lol, getman [21:37:36] Reedy: https://gerrit.wikimedia.org/r/#/c/56320/ [21:43:19] kaldari, I think I've almost got it. It has a type of gettingstarted-start-editing, which is defined. And it's calling EchoEvent::create. [21:43:24] But it doesn't actually notify them. [21:43:34] I've got a draft, do you mind taking a look? https://gerrit.wikimedia.org/r/#/c/56321/ [21:43:42] sure [21:44:40] superm401: I think I know the problem... [21:44:54] Okay... :) [21:45:17] Notifications by default can't be sent to the event agent, i.e. users can't send notices to themselves. [21:45:35] I don't remember exactly where this condition is set though [21:45:43] Even though I explicitly added them as a recipient? [21:45:56] yes, I'm sure there's a way to allow it though [21:45:57] I tried to do it the same way as welcome. [21:46:11] But I noticed welcome has some special-case code. [21:46:16] I may have missed something relevant. [21:46:17] Looking. [21:47:08] Krinkle, this seems to work, but I'm not sure I've done it right: http://pastebin.com/9tEjeT40 [21:47:26] superm401: it's in NotificationController::getSubscriptionsForEvent [21:47:55] kaldari, got it, thanks. [21:48:01] you can pass an extra 'notifyAgent' param to allow it [21:48:44] Krenair: Looks about right, though beware that the deferred/promise creation is currently not centralised for submodules. Check the other mediawiki.api.* files as well. [21:48:46] the logic behind the restriction is that otherwise people would accidently trigger notifications to themselves in a lot of different circumstances [21:49:07] and usually people don't need to be notified about their own actions :) [21:50:15] kaldari, I see. It might be good if you didn't have to also add them to the users array in getDefaultNotifiedUsers. [21:50:21] In other words, if notifyAgent implied that. [21:50:40] Do you know if Vibha is on IRC? [21:51:11] superm401: true [21:51:30] Krinkle: I don't think she uses IRC [21:51:35] ok [21:51:55] she's usually available on gchat/jabber thouhj [21:51:57] though [21:57:28] kaldari, I updated it. Still doesn't work unfortunately. [21:57:53] hmm, I can take a deeper look in about half an hour [21:59:11] you may want to check your echo_event table to see if the problem is in the event creation or the notification delivery [21:59:57] kaldari, thanks, will check the table. [22:18:25] superm401: You probably want to assign your notification to the 'system' category [22:18:44] kaldari, thanks, I actually figured it out a few minutes ago. [22:19:01] what was the problem? [22:19:10] That. :) [22:19:18] oh, good :) [22:19:22] Now I have an issue with email. [22:19:43] You support plain text and HTML email, right. I see it's text by default, which is good because I'm using command-line email in my VM. ;) [22:20:01] right now, our HTML email support is incomplete [22:20:20] so text email is the only thing actually working at the moment [22:20:34] Oh, okay. [22:21:00] kaldari, any trick to making a text link (i.e. correct raw URL)? [22:21:12] in theory, the HTML email shouldn't require any extra work from the 3rd party developer anyway, since it will mirror the presentation on Special:Notifications for the most part [22:21:50] Isn't email-body-message already different from title-message? [22:22:10] yes, that's for text email [22:22:26] kaldari, so do I have to pass the URL of the link (to a special page) as a parameter to the email? [22:22:51] what's the link to? [22:23:00] Special:GettingStarted [22:23:23] It only varies per-wiki (not per-user or anything) so it could be in the message, but I don't know how. [22:23:32] Obviously [[Special:GettingStarted]] doesn't work. [22:24:49] I believe you could just use an anchor tag here. The message is generated on the server side, not the client side, so you can have HTML in it. [22:25:12] or you could set up a special handler for it in a formatter class [22:25:45] but you aren't using a custom formatter class yet, and I suppose it would be nice if you can avoid that :) [22:26:37] kaldari, agreed, special handler is over-kill. I'll do it as a param for now. You might want to think about general solutions as you improve the email support (e.g. a good way to convert wikilinks to text with displayed URLs). [22:27:15] kaldari, how could I just use an anchor tag? [22:27:19] It's plain text, right? [22:27:32] superm401: we have support for that for several parameter types already - you might be able to use 'titlelink' but I'm not sure if it supports Special pages [22:28:23] And I would still have to specify the URL. [22:28:42] no titlelink and agentlink generate the URL for you when needed [22:29:02] depending on the context of the message.... [22:29:56] lemme find the code.... [22:31:26] See BasicFormatter::setTitleLink() for example [22:32:48] you might be able to just pass 'Special:GettingStarted' as a 'titlelink' param. [22:33:02] like I said, though, I haven't tried it with Special pages though [22:33:52] then in your message you just use a token for the link and it will substitute in a Wikitext link, or an HTML link depending on the output format [22:35:41] kaldari, hmm, but some of the logic for titlelink is in EditFormatter. [22:37:23] yeah, I should add titlelink param handling to BasicFormatter [22:37:59] no sense in having the logic in a parent class but only accessible from the child class [22:38:07] that's silly [22:38:46] In the meantime, you can set your formatter class to EditFormatter... [22:39:36] The formatter classes are a heirarchy. Each child just add extra capabilities to the parent, but should also retain all the parent functionality [22:40:33] like you'll notice that any params not explictly handled in EditFormatter are passed to the parent for handling in EditFormatter::processParams() [22:42:51] kaldari, okay, sounds good, I'll try using EditFormatter for now. [22:42:56] mwalker: heya, just curious on the status of the fix for https://bugzilla.wikimedia.org/show_bug.cgi?id=46579 [22:43:06] superm401: again, sorry none of this is documented yet [22:43:16] mwalker: I'm heading out earlier than normal today (in about 20 minutes) so just checking in before I leave [22:43:25] some of it is still in flux [22:44:12] greg-g: I approve :) [22:44:27] greg-g: I'm writing test cases now [22:44:38] so we're looking good [22:44:42] awesome [22:44:45] thanks man [23:30:11] kaldari, I don't get how BasicFormatter::processParam handles agent. [23:30:29] It has a special case for when there is no actual agent, which makes sense. But the numbering isn't consistent. [23:30:45] Does it only work if a particular notification always has an agent or never has an agent? [23:53:37] Project MobileFrontend-linux-android build #22: UNSTABLE in 8 min 53 sec: https://wmf.ci.cloudbees.com/job/MobileFrontend-linux-android/22/ [23:53:38] * l10n-bot: Localisation updates from http://translatewiki.net. [23:53:38] * jrobson: Add Page and Section view [23:53:52] superm401: I'll see if I can explain... [23:55:06] the numbering of the tokens for the i18n message isn't necessarily the same as the numbering of the params that are specified in your notification definition. In other words, you're correct that it isn't consistant... [23:55:43] in many cases the numbering happens to be the same, but this isn't always the case... [23:57:47] some params spawn extra tokens that are for specific limited purposes, usually i18n grammar rules [23:59:46] in the case of agent, it spawns an extra param for the grammar rule that is either the name of the agent or an empty string