[00:00:01] And add restricting moves somewhere to the subpoints for C7 [00:00:23] I think we've covered C7 for real now [00:01:05] *Krinkle saved page [00:01:48] @todo: What about other actions (delete/protect/viewdeleted/move etc.) [00:01:52] $wgNamespaceProtection handles that too AFAIK [00:02:09] so user has to have the general right and match the wgNamespaceProtection ? [00:02:15] I guess [00:02:17] *RoanKattouw greps [00:02:18] ok [00:02:43] Oh, trunk is useless because that has per-namespace stuff already [00:03:10] or.. not [00:03:12] hm [00:03:17] Maybe you just need the edit right for those things [00:03:20] Good point there [00:03:27] But if that's a leak for us it's one for editinterface as well [00:03:44] Moving on [00:03:56] gd_shared: Whether this is a shared gadget. If another wiki uses this wiki as a ForeinGadgetRepo, these are the gadgets included. [00:03:58] C3 is something I can't do until I have mockups with HTML and CSS [00:04:15] Are you aware of the fact you'd need to i18n that stuff? [00:04:28] vvv: i18n what exactly? [00:04:36] RoanKattouw: gadget names [00:04:43] vvv: yes [00:04:46] I believe that's i18ned [00:04:51] I know so [00:04:55] I remember writing that code now [00:05:04] vvv: gd_name is an id, the title is MediaWiki:Gadget-{name}-title [00:05:11] i18n all the way :) [00:05:21] Oh [00:05:26] gd_name is the canonical name, the technical name of the gadget so to speak [00:05:34] But the title and description are used in the UI [00:05:35] And you'd better provide framework for gadget i18n then [00:05:46] We do, that's what this project is partly about :) [00:06:04] Good luck [00:06:10] You can i18n the title (=display name), description, and have regular MW-style i18n messages in the gadget [00:06:26] We already have it working [00:06:34] (Or I believe we do, I haven't actually tested the 3rd bit) [00:06:40] vvv: so no need to have huge var msgs = { ??? }; in gadgets anymore [00:06:50] and have weird /lang subpages with javascript messages [00:07:21] no more importScript( 'Gadget-foo.js/' + wgUserLanguage ); contianing msgs (override) = { ??? }; [00:07:29] (yes Roan, that's how we do i18n right now :D ) [00:07:41] I didn't even know that, but I don't wanna know either [00:07:47] I figured [00:07:50] All I needed to know is it's messy [00:07:53] Anyway, moving on [00:08:02] For C3 I'll need mockups including HTML structure and CSS [00:08:13] The ones from A4 [00:08:32] Yep [00:08:55] Krinkle: wait, and how are you going to propagate i18n for global gadgets? [00:09:15] vvv: It's all in the specification and in our brains, I'll explain later :) [00:09:15] vvv: By loading it from the foreign wiki's load.php [00:09:31] ResourceLoader does this already for all other modules, it can for gadgets the same way. [00:09:32] Alright, C4 needs to be split up [00:09:34] Oh, load.php magic [00:09:40] ForeignGadgetRepo (DB-based) is done [00:09:48] ForeignAPIRepo needs to be written from scratch [00:10:12] vvv: This is the part where we say "ResourceLoader" and you say "oh, magic. OK." ;) [00:10:32] *ForeignGadgetAPIRepo [00:10:42] RoanKattouw: well, if I ever get WikiScripts parser deployed... :) [00:10:55] *ForeignAPIGadgetRepo [00:12:44] RoanKattouw: k, I have C4 GadgetRepo with local, foreigndb an foreignapi [00:12:50] OK cool [00:12:52] First 2 are done [00:13:18] time estimate for apirepo ? [00:13:52] Hmm [00:14:40] Call that 3h [00:15:00] A bit on the conservative side, but it needs thorough testing and will probably start out buggy [00:15:46] Hm.. so here's where I remember why we may wanna keep create/modify of gadget through a special api. The title/description is saved to mw-pages. So that's 3 ajax requests in the front-end to ApiEdit otherwise. Not crazy, but not pretty either. [00:16:00] Right [00:16:06] But that was already the case [00:16:16] You can check whether they changed and be lazy if not [00:16:40] yes, but previously it'd be 1 submit to the api which would make those 2 edits and a db-write. Now it'd be 3 submits to the api. [00:17:10] No, that wasn't the case with the API as written [00:17:15] just something to keep in mind. I'll add a notification area to the form in the mockups (rather than using dialog-alerts) [00:17:31] RoanKattouw: No, but I was going to make you do that. [00:17:36] :P [00:17:43] hehe [00:17:51] anyway, ajax requests is fine, [00:18:15] OK [00:18:30] btw. time estimate for "Update preferences hook " ? [00:19:12] 1h [00:19:36] so ApiGadgetManager is gone ? [00:20:01] perhaps keep it for delete action. [00:20:08] which also does a db-row delete [00:20:17] or do we hook into delete-action of definition page [00:20:18] Nah the API module can die [00:20:19] might as well [00:20:21] Yes [00:22:54] C5 [00:23:58] *Krinkle saved page [00:24:02] http://www.mediawiki.org/w/index.php?title=ResourceLoader/Version_2_Design_Specification/Task_management&action=history [00:25:35] Looks good [00:26:30] Oh, you removed C6 but forgot to renumber C7 [00:27:49] oh [00:28:06] fixed [00:28:18] adding to C6: [00:28:22] Hook into page deletion. Remove database row on delete. (set gd_name, gd_blob and gd_shared) [00:28:25] Hook into page undeletion. Create database row on undelete. (set gd_name, gd_blob and gd_shared) [00:28:28] changing: [00:28:30] Hook into EditPage. Update or create database row on edit of a Gadget definition page. (set gd_blob and gd_shared) [00:28:39] +"or create": [00:29:11] without the "(set ..)" for delete ofcourse [00:29:21] Looks good [00:29:51] so, C5 [00:29:53] good ? [00:31:33] Yes [00:31:57] so a is done, and b just needs a time est. [00:33:14] Let's leave that [00:33:30] We'll probably find out what's missing when we do D@ [00:33:31] *D2 [00:33:38] So maybe it shouldn't be a task at all [00:34:06] k [00:34:14] C6, last for backend [00:34:26] Hmm, time ests [00:34:59] Let's say 2h for the whole of C7 [00:35:39] hm.. adding to C6: Trigger
/syntaxhighlight on all pages in gadget-definition namespace
[00:36:30] 	Ha, nic
[00:36:32] 	e
[00:36:43] 	For JSON, presumably
[00:36:45] 	?
[00:37:08] 	ie. isCssOrJsPage returning true. Yes, otherwise the parser is gonna do weird stuff on the json blob and it'll look ugly on action=view
[00:37:13] 	Yes
[00:37:24] 	It's not gonna have highlighting, AFAIK, but it'll have 
[00:37:40] 	Highlighting would be nice but would be an independent core feature
[00:37:51] 	Or maybe a hook that the GeSHi extension hooks into
[00:37:53] 	yeah, the geshi_syntaxhighlighter triggers on the same thing
[00:37:58] 	already happening
[00:38:17] 	if ( isCssOrJsPage ) { detect type and use it instead of 
 }
[00:38:23] 	Oh cool
[00:38:29] 	something like that
[00:38:41] 	http://commons.wikimedia.org/wiki/MediaWiki:Common.js
[00:38:42] 	http://commons.wikimedia.org/wiki/MediaWiki:Common.css
[00:39:19] 	Nice
[00:40:12] 	Alright, D1?
[00:40:15] 	yep
[00:40:18] *Krinkle 	saves page
[00:41:14] 	probably needs a bit of splitting up as well in D. Let's see.
[00:41:16] 	OK I think D1 and D2 are all NOLA material
[00:42:08] 	NOLA ?
[00:42:30] 	Oh, right the first google hit was right after all
[00:42:35] 	heh
[00:42:39] 	I meant New Orleans, yeah
[00:42:39] 	New orleans
[00:42:47] 	I was like, Hm.. some kind of chat abbrevation
[00:42:48] 	n
[00:45:56] 	Biggest task is the form generation and notification/api-response handling
[00:46:16] 	autocompletion and api saving is easy with the current plugins and query methods.
[00:46:27] 	Yes
[00:46:42] 	Given the API modules that I have yet to write, that'll be easy
[00:47:17] 	'Implement auto-suggest' is a bunch of jquery.ui.autocomplete hooks with small functions to either an api or an array.
[00:47:28] 	hmhm
[00:49:01] 	ApiOpenSearch, Api-gadgetpageprops thing, mw.loader.getModuleNames(), mw.config(all user rights)
[00:49:12] 	and ApiAllMessages
[00:49:24] 	ah, for which I still have a local patch to implement nocontent=1
[00:49:24] 	Yeah
[00:49:34] 	You should commit that some time
[00:49:58] 	because right now ApiAllMessages doesn't do autosuggest. It does prefixing and giving everything that matches (key and content)
[00:50:10] 	B6
[00:50:22] 	I'll add as patch for you to review in bugzilla
[00:50:26] 	OK
[00:52:46] 	Alright, so
[00:52:58] 	I think all of E can die
[00:53:14] 	Moving to wiki pages obsoletes it
[00:54:47] 	indeed
[00:55:10] *Krinkle 	saved page
[00:55:11] 	F... no sense in giving estimates there yet I don't think
[00:55:14] 	renamed a lot
[00:55:19] 	F>E
[00:55:20] 	Let's build the damn thing first before we do that
[00:55:21] 	etc
[00:55:24] 	Right
[00:55:26] *RoanKattouw 	refreshes
[00:57:09] 	Hmm, add to C2: support for legacy gadgets (without RL)
[00:57:26] 	Estimate for F1: 2h
[00:57:34] 	Legacy support 2h as well
[00:58:31] 	C2 ?
[00:59:05] 	C2d: support legacy gadgets
[00:59:34] 	It needs to go somewhere and I'm not quite sure where, so I picked C2
[01:01:00] 	k
[01:02:25] 	done
[01:02:49] 	re D2, sure that's front-end ? we discussed this the other day but I don't remember the outcome.
[01:03:14] 	"PHP creates tab, AJAX populates it, API call cached for 30 mins"
[01:03:14] 	I'm not very comfortable with the thought of making a request to the foreignrepo from the client side.
[01:03:20] 	Sounsd like it's mostly front-end to me
[01:03:27] 	I'm even less comfortable with doing so from the server side
[01:03:35] 	Right
[01:03:49] 	server-to-server https request
[01:03:52] 	Making the PHP request block on an internal HTTP request just sounds icky
[01:03:53] 	http*
[01:04:36] 	Normally I would oppose AJAX for pref tabs because of the lack of noscript fallback, but Gadgets don't really need a noscript fallback, because they don't work in noscript mode anyway
[01:04:52] 	True. I was wondering about cachebility and load though. All wmf-wikis + third party wikis making request to api for parsed messages.
[01:05:37] 	"API call cached for 30 mins""
[01:05:38] 	granted, only on prefs pane for logged in users.
[01:05:48] 	Only if they click that tab
[01:06:17] 	that cache is controlled in the repo's api, right ?
[01:06:32] 	or (s)maxage passing from frontend
[01:06:37] 	(s)maxage yes
[01:06:43] 	ok
[01:07:01] 	just be fine then
[01:07:44] 	Roan, Timo: you're having too much fun doing RL :D
[01:08:18] 	I know, it's 3am
[01:08:25] 	We're like at the bottom of our list now
[01:08:27] 	I think we're done
[01:08:33] *Krinkle 	saved page
[01:08:41] 	https://secure.wikimedia.org/wikipedia/mediawiki/wiki/ResourceLoader/Version_2_Design_Specification/Task_management is updated with more tasks and time estimates
[01:08:59] 	And we killed a bunch of tasks because of th e decision to use wiki pages for versioning gadget metadata
[01:09:14] 	and created 6 new tasks because of it ;-)
[01:09:42] 	but 6 much easier ones that add great things for users.
[01:10:27] 	most notable: Watching gadget modifications in the watchlist, recent changes for gadget changes and delete/undelete/rollback for free
[01:10:29] 	awesome
[01:14:08] 	Krinkle: So, we're pretty much done, right?
[01:14:19] 	yep
[01:14:31] 	lets deploy it
[01:15:57] 	E2, I put 40h since you said a week on the call. But I think we need to revisit that. not a full-time week, right ?
[01:16:12] *Krinkle 	exists edit mod
[01:16:16] 	You mean E1?
[01:16:20] 	yes
[01:16:26] 	Meh, let's revisit that estimate later
[01:16:33] 	When we've actually written this stuff
[01:16:34] 	Lekker belangrijk :)
[01:16:38] 	idd
[01:16:55] 	aight, I'm gonna tell my body it's 3am and close up (or close up first)
[01:16:56] 	cya
[01:18:10] 	Yeah, I'm finishing an e-mail to alolita and going to sleep too
[01:18:37] 	alolita: I e-mailed the person responsible for allocating time at the WMNL office. I suspect she might be on vacation so if she doesn't respond I'll poke Siebrand or Lodewijk
[01:18:57] 	Roan: cool - feel free to poke Siebrand
[01:19:13] 	he's your team member at wmf also on the features team
[01:19:18] 	Yes
[01:19:23] 	:-)
[01:19:38] 	They actually have a bi-weekly WikiSaturday
[01:19:46] 	Where they open the office noon-6 and invite wiki folks to come over
[01:19:51] 	Roan: awesome; time to crash in
[01:19:53] 	There is one tomorrow but Timo can't make it
[01:20:06] 	Can you make it?
[01:20:30] 	Well, it's already Saturday :) it's 3:20am so Saturday noon is 8.5h from now
[01:20:40] 	wow - better get some sleep
[01:20:42] 	Yes
[01:20:56] 	I literally do not have time to both sleep and travel all the way down there
[01:21:03] 	Plus I have other stuff to do tomorrow too
[01:21:18] 	yes ; i am sure you can ping siebrand online
[01:21:42] 	I will if I don't hear back
[01:21:58] 	ok cool; i can ping him too if you want me to
[01:22:17] 	Would be cool
[01:22:28] 	I know he has the key to the office and is allowed to let people in, and he lives in the same city
[01:23:04] 	But I decided to at least start with the process on the wiki page, which is to e-mail Marjon
[01:23:26] 	ok cool
[01:23:30] 	so i will do that
[01:23:36] 	ttyl then
[01:23:58] 	Alright, good night
[12:15:48] 	hoi RoanKattouw
[12:15:56] 	Hey
[12:16:01] 	Ik zie net je e-mail zou net reageren
[12:17:39] 	ok dan wacht ik dat even af
[12:18:32] 	Sent
[12:20:50] 	Ok. Duidelijk. Is de code nu in orde genoeg om het er maandag gewoon op te schuiven?
[12:20:59] 	Of zitten er nog allerlei haken en ogen aan?
[12:21:12] 	Volgens Neil is het nu goed
[12:22:00] 	Is dat testbaar van te voren?
[12:22:00] 	Maandagavond (ochtend SF tijd) schuiven we het erop, en later die dag vertrekt Neil dan naar Burning Man
[12:22:06] 	Geen idee
[12:22:26] 	Ben jij in SF of NL?
[12:22:27] 	Als er nog dingen mis zijn, mag ik Ian's en Jeroen's tijd opeisen zoveel als nodig is
[12:22:29] 	NL
[12:24:13] 	Ok. Is er ook al een bugfix deploy window achteraan geplanned?
[12:24:38] 	Op woensdag is er een gepland ja
[12:25:04] 	Ok. Dan zet ik dat in de mail. Sta je op de wikilovesmonuments ML ?
[12:25:17] 	Nee
[12:25:59] 	We hebben een window op woensdag dezelfde tijd (17:00 UTC) maar als er in de tussentijd nog fixes gepusht moeten worden kan dat gewoon
[12:26:07] 	De deployments calendar is vrij leeg voor komende week
[12:26:21] 	WLM begint 1 sept?
[12:26:27] 	ja
[19:13:23] 	cd includes/..
[19:13:28] 	grr