[00:00] argh, still a surprising amount of people registering imports of http://code.launchpad.net/ URLs [00:00] damn, I need to procrastinate but I can't be bothered [00:01] jelmer: Yeah, I'm not quite sure how we have so many terrible users :( [00:01] bigjools: Enjoying the slow Internet access, at least? :) [00:01] Haha [00:01] wgrant: it's actually quite quick [00:02] better b/w than I had back at my house in the UK [00:02] Bandwidth-wise, sure :) [00:02] latency not so good but I'm not that fussed [00:02] LP is noticably slower to start loading pages [00:02] Yes [00:03] wgrant: I think our UI (at least this bit of it) is worse than our users :) [00:04] wgrant: I think we should blame our users, en masse, last, not first, when there is a repeated issue. [00:04] its much more likely that we are confusing them, than that they all arrive pre-confused. [00:04] lifeless: Mmm, seeing some of the questions that come through... [00:04] We have some preeeeetty moronic users. [00:04] I have no doubt that there are some which get excruciatingly confused; so far down the learning curve its hard to show them that they have stuff to learn [00:05] but still [00:05] Now, the UI around all this abominable. [00:05] Note how many recipes are against lp:launchpad/stable [00:05] But some of the mistakes are so incomprehensible that it can only be explained by users being braindead. [00:10] wgrant: I think you underestimate the confusion causable by poor UI [00:12] Does anyone know what one does about whoopsie crash reports? [00:12] It does the WER thing. [00:12] chat to ev [00:12] Of just submitting and then disappearing. [00:12] its the new shiny [00:12] So I can't track the progress of the X crash that I see hourly. [00:41] https://lpstats.canonical.com/graphs/WildcherryCPU/20111106/20120307/ is pretty [00:42] In 3 months wildcherry should have no load at all :) [00:48] hah [00:48] its dropped 15% [00:48] which is substantial [00:49] Another 7% will go once slony dies. [00:51] Now, with a few fixes to the store selection code, we can sensibly have downtime on wildcherry without hardware upgrades :) [00:52] Which means that once slony is gone we will never have any reason to have downtime ever again. [00:53] (we might just have to pause write requests for a few seconds here and there) [00:54] wgrant: and reads... [00:54] Nah. We can do a rolling upgrade on the DB servers to avoid that. [00:56] Pause replication, pause writes, switch to slave-only, upgrade master, switch to master-only, unpause writes, reattach slaves, wait for slaves to sync, switch to normal. [00:56] s/reattach slaves/unpause replication/ [00:57] wgrant: we've had this talk before [00:57] wgrant: I know you're convinced; I'm not [00:57] wgrant: I'd like to make sure that we don't count on something that isn't (yet) known to work-or-not work : decide at the last possible moment [00:57] I'm hoping one day I'll catch you over-tired and you'll be convinced too. [00:58] we can talk on skype now if you want [00:58] I'm certainly over-tired ATM [00:58] Nah. [00:58] This is still a while off :) [00:58] Heh [00:59] the fundamental issue I see is that we don't have a hard timeout on scripts yet, don't have the hard timeout <=5 seconds everywhere, and without both of those things, downtime will be faster overall. [00:59] Also, pg9.1 has some pretty nice lock reductions which let fkey modifications etc only take out exclusive read locks. [00:59] Er [00:59] exclusive *write* locks [00:59] So reads can continue while you're adding constraints. [00:59] Which is interesting. [01:00] Sutre, there are those issues. [01:00] This is a future thing :) [01:01] StevenK: discovered the ff issue - not a real issue. there's a "legit" try/catch in the yui code to handle new vs legacy querySelector behaviour and it seems firebug had "break on exception" on (i didn't turn it on). you turn it off using the toolbar button in the console panel [01:03] Right [01:04] the other thing is that sadly even with the new html5 browser behaviour to use lucid's webkit the yui tests still pass locally [01:05] Run ec2 with -p? [01:05] -p does? [01:05] Or ec2 demo, ssh in, and test manually? [01:06] might try that. will ec2 demo do all the setup that ec2 test does? [01:06] -p is --postmortem [01:06] Pretty much [01:06] with -p i have to wait for failure, right? whereas with ec2 demo i can get straight in and try stuff [01:07] Right [01:07] wallyworld: Want me to try them locally? [01:07] with the html5 browser, i had to move and egg from lp-source out of the way so it would use the system version [01:08] I think I have YUITestLayer working now. [01:08] In my container. [01:08] wgrant: that would be nice if you could [01:09] wgrant: you would need to pull pillar-access-service-infrastructure, more-accesspolicy-service, more-accesspolicy-service-2, more-accesspolicy-service-3, more-accesspolicy-service-4 [01:09] Or just more-accesspolicy-service-4? [01:09] and then bin/test -vvct test_observertable [01:09] it's a pipe, so the previous ones are needed [01:10] s/are/are not/ [01:10] Not if you've used bzr pump [01:10] which i have [01:10] didn't realise that [01:10] Pipelines aren't magical. [01:10] They're just a series of branches with a command to merge between them, basically. [01:11] right, i didn't appreciate/forgot that pump did the merge [01:12] It does mulitple if you pump from the first pipe :-) [01:14] yeah. and i've had several conflicts to resolve doing that the past week or so [01:14] Welcome to pipelines [01:14] Ah [01:14] The tests run better when the JS has been built, it turns out. [01:15] indeed [01:15] There we go, errors. [01:15] that is a new thing due to the combo loader work [01:15] so wonder why it errors for you and not me [01:15] given we are both using the lucid webkit etc [01:15] This is on lucid [01:15] You're not using lucid webkit [01:16] wonder why your lxc seup worked then [01:16] You're using a possibly old version of webkit that's in precise, but might not actually be old. [01:17] wgrant: did you run "sudo lxc-create -t ubuntu -n lpdev -f /etc/lxc/local.conf -- -r lucid -a i386 -b $username" ? [01:17] Different name and different config file, but yes. [01:17] lxc.network.type = veth [01:17] lxc.network.link = lxcbr0 [01:17] lxc.network.flags = up [01:17] Was the config I used [01:18] Note that the bridge device should be lxcbr0 in precise, rather than virbr0 in earlier releases. [01:18] i used virbr0 [01:18] Should still work, if you have a virbr0 [01:18] but my issue what the container wouldn't start [01:18] But it's not created by default when you install lxc [01:18] Oh? [01:18] it said could not mount rootfs [01:19] and then other error messages from there [01:19] Tried disabling the apparmor profile? [01:20] sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disable/; sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start [01:20] i think i tried that. will try again [01:20] well fuck me, that worked [01:21] i will go add that to the wiki [01:21] thanks [01:21] wonder why apparmor doesn't like lxc [01:22] Bug #925024 [01:22] <_mup_> Bug #925024: apparmor makes it impossible to install postgresql-common on Precise < https://launchpad.net/bugs/925024 > [01:22] It seems to be a kernel bug. [01:22] AFAICT the rejected operations should be permitted. [01:22] So possibly cgroups and LSM don't like each other very much. [01:22] Again. [01:22] wallyworld: Note that for html5-browser to work in the container it'll need an X server. [01:23] So either ssh in with -X, or use xvfb-run [01:23] will try that, thanks [01:23] wgrant: do you use a separate source tree for lp? otherwise you need to make each time you switch using lxc to metal [01:23] due to python 2.6 vs 2.7 etc [01:24] wallyworld: I don't run on metal. [01:24] ah, ok [01:24] Interestingly, the rest of the workarounds on /Running/LXC seem to be unnecessary on precise. [01:24] All I needed was to apt-get install lxc, disable the apparmor profile, lxc-create, and rocketfuel-setup [01:25] i find it too much of a pita to start/login to lxc so i stick to metal [01:25] I have stuff in ~/bin to handle that. [01:25] Just tiny shell scripts [01:25] still extra typing [01:25] lp-start, lp-sh, lp-stop [01:25] i need to run rocketfuel with --no-workspace too [01:25] lp-sh handles sshing in with -A -X, and changing to the right dir [01:25] And lp-bounce restarts the appserver in the current directory. [01:26] Reasonably smooth. [01:26] yes, doesn't wound too bad. you also need to hack postgres config too i think [01:26] if you run postgres outside the container [01:26] They should be unrelated. [01:27] Oh, you mean run the client outside the container? [01:27] You could, but I just do it through SSH [01:27] you need to alter the config to allow "external" connections. well i did last time i tried lxc [01:27] ah yes, client outside container i think was it [01:30] the main thing for me is editing hsots all the time [01:30] drives batty me [01:30] my view is that using lxc just isn't worth the hassle, expecially when lp dev is painless on metal [01:31] lifeless: Why do you have to edit it frequently? [01:31] i'm only using it to try and reproduce a ec2 test failure [01:31] My dnsmasq tends to be good about reassigning the address like once every 6 months. [01:31] wgrant: so my primary lxc is on my desktop (which has 8 cores and 16GB ram); it doesn't keep the same IP (which is being allocated from my LAN dhcp server) [01:32] Ah [01:32] lifeless: It has a static MAC... [01:32] I haven't tracked down how it gets a 'hwaddr' for its 'ethernet' [01:32] wgrant: it should, but .. [01:33] $ grep hwaddr /var/lib/lxc/lplucid/config [01:33] lxc.network.hwaddr= 00:16:3e:24:3f:3e [01:33] grep hwaddr /var/lib/lxc/lucid-test-lp/config [01:33] robertc@lifeless-64:~$ [01:33] loloneiric? [01:33] natty [01:33] I think [01:33] anyhoo [01:33] Yeah [01:33] precise is muuuuch nicer [01:34] how does that interact with ephemeral [01:34] No workarounds required. [01:34] Good question.; [01:34] (I'm on precise) [01:45] lifeless: https://code.launchpad.net/~wgrant/launchpad/more-bug-heat-murder/+merge/96033 [01:56] bigjools, thanks :), 'instant virgin' or 'comic sans'? [01:57] oh dev tips :) [01:57] wgrant: can you recall the command to recompile things like svn libs in sourcecode since my lxc is 32bit and host is 64bit and stuff won't run atm [01:58] wallyworld: make clean; make [01:58] wallyworld: make -C sourcecode clean all [01:58] sudo make shorter [01:58] s/all/build/, maybe [01:58] lifeless: did make clean; make, will try what wgrant said [01:59] ah -C sourcecode does delete all the .so files [01:59] wgrant: What's the ppad user? [02:07] wgrant: faaaaark. now bin/test -vvct test_observertable gives me a core dump [02:08] quick reminder [02:08] does the job runner switch db user? [02:09] or do they all run as one megaar user ? [02:23] StevenK: Ancient, from before ArchiveRework [02:23] lifeless: It switches sometimes. [02:23] wallyworld_: You're running with -X? [02:23] wallyworld_: It'll segfault or abort if there's no X server. [02:23] wgrant: ah ffs. forgot that. thanks [02:24] wgrant: i was recalling how previously we had issues running a 32 bit lxc container on a 64 bit host and there were seg faults [02:24] wallyworld_: That's what I'm doing. [02:24] Always have done. [02:24] there were segfaults mid last year [02:25] and curtis had to add changes to html5 browser [02:25] Oh, for html5-browser [02:25] strangely, some of the yui tests passed without X [02:25] I've never really used it. [02:25] wgrant: that's what's used to drive the yui tests [02:25] I know. [02:25] I hadn't run them before today. [02:25] ah ok [02:34] * wallyworld_ sees a pommy git ^H^H^H^H^H bigjools arriving at his house to use the printer [02:35] Heh [02:35] haha [02:35] lifeless: I suspect this branch will fail ec2. [02:36] lifeless: Because person merge will still want to talk to the table. [02:36] It should really have landed with the patch, to db-devel. [02:36] But we'll see. [02:39] should be able to drop bugjob tonight no ? [02:39] Might *just* be in db-stable in time. [02:39] Or did it make it through before the devel failure? [02:39] enoidea [02:41] It's been in db-stable for about 20 minutes. [02:41] Er [02:41] s/db-// [02:41] So it will be in db-stable in about 6.5 hours [02:41] So it's probably going to be tomorrow. [02:41] Unless we violate the usually procedures and do the db-deploy from stable [02:49] wgrant: whats the new shiny for db user switching ? [02:51] StevenK: have you landed your enterprise id helper yet ? [02:53] I'd just like to say that bigjools is awesome [02:53] * wallyworld_ decides to locks his screen next time he makes that pommy git a coffee [02:56] lifeless: see lib/lp/testing/dbuser.py [02:56] with dbuser('foo') [02:56] Or with lp_dbuser() [02:56] Or switch_dbuser('foo') if you hate life and context managers. [02:57] lifeless: Unless you want to do it in production code, in which case you're approaching things the wrong way. [02:58] nah, just writing smoke tests [02:58] and oot of practice === mwhudson_ is now known as mwhudson [03:13] lifeless: Playing in ec2 last I checked [03:13] add-enterpriseid => devel [OK] (up for 4:31:32) i-dbc91abf [03:13] So, 30 minutes ago? :-P [03:16] lifeless: Just landed. r14907 [03:40] wallyworld_, have you made progress? Is there a firefox defect in Lp's javascript? [03:41] sinzui: html-browser still worked fine on precise with the older webkit, but i did get lxc working - needed to disable apparmor [03:41] sinzui: Based on my investigation, public bugs with private branches work fine, and that bug can be closed. [03:42] sinzui: the issue is that a Y.one() call is returning null when it shouldn't - i have printed the innerHTML and the requested node is there [03:42] StevenK, really? okay [03:42] sinzui: It worked for me on .dev, if you have a few minutes we can try it on prod [03:43] sinzui: the one issue i can see is that there is an with no closing tag within the that is being selected and not returned [03:43] wallyworld_, are events involved...is the node not there *yet*, but is byt the time print happens [03:43] StevenK, sure [03:43] wallyworld_, ! [03:44] sinzui: but the mustache template uses "" and we do that same thing in lots of other places. using "" makes no difference [03:44] sinzui: Do you have a private branch that you can see and I can't? [03:44] wallyworld_, invalid HTML does indeed lead to unpredictable DOM traversal [03:45] wallyworld_, " really is invalid and a *HTML* parser will throw a wobbly [03:45] sinzui: weird thing - using "" and logging innerHTML still prints "" with no closing tag [03:45] and will also throw the *HTML* parser for a wobbly if the page claims it is xhtml [03:45] so it should be ? [03:46] wallyworld_, do not assume that the thing printing is the thing interpreting [03:46] what's the correct syntax for img ? [03:46] that is how lots of fucked up markup is introduced [03:46] wallyworld_, we state we serve xhtml, the tag is a self-closing empty tag [03:47] sinzui: like ""? that's what's in the mustache template [03:47] wallyworld_, yes [03:47] but print innerHTML is leaving out the closing tag [03:48] which i was thinking was the issue [03:48] but is not [03:48] wallyworld_, yes because that method is 1, not in any standards [03:48] and 2 it predated xhtml by 3 years [03:48] so it still makes no sense why the Y.one() is failing on lucid [03:49] wallyworld_: What is the precise text of the template? [03:51] wgrant: https://pastebin.canonical.com/61669/ [03:52] Is that valid? [03:52] An img with no src? [03:52] wgrant, I think you have a point [03:53] You might mean   or so [03:53] I'm not sure what the usual pattern is. [03:53] Since there's like 4 different ways to do it in the codebase already. [03:53] Let's throw in a couple more :) [03:54] wgrant: sinzui: got it working. used Y.one("[id=xxxx]") syntax [03:54] instead of "#xxx" [03:54] Still, not valid HTML [03:54] wgrant, close enough. We use hidden text for TestBrowser, which will never see this anyway [03:54] wallyworld_: I smell of Baldrick [03:54] src %URI; #REQUIRED -- URI of image to embed -- [03:54] QED [03:54] bigjools: too much info [03:55] wgrant: here there is no src, it's a sprite [03:55] wallyworld_, I think that means an invalid id was generated. does it have dots in it [03:55] wallyworld_: Then it's not an img [03:55] wallyworld_: enjoying the pommy weather? [03:55] or was it a duplicate...which is also invalid [03:55] sinzui: nope, otherwise i would not haves used # [03:55] not a dupe either [03:56] bigjools: no [03:56] wallyworld_: bwahaha :) [03:56] wallyworld_: anyway strictly speaking, you're the pohm [03:56] http://www.w3.org/TR/xhtml1/dtds.html#dtdentry_xhtml1-strict.dtd_img agrees [03:56] So both XHTML1(.1) and HTML4.01 hate you [03:57] wgrant: i see where i fucked up - i don't need the img [03:57] i just needed to add class = "sprite edit" to the anchor [03:58] Yeah, and probably an nbsp or similar inside it [03:58] Otherwise it can end up zero-width [03:58] wallyworld_, correct. we use sprites on other elements to avoid the img element [03:58] Which isn't awesome for displaying bgimages. [03:58] we do not want to tempt the browser to download [03:58] sinzui: so webkit on precise must be more forgiving [03:59] We've had problems like that before, yeah. [03:59] Some old Firefoxes don't like self-closing
s, for example. [03:59] wallyworld_, yes. the newer lib emulates the behaviours of gecko and trident better [04:00] sinzui: i started out using img with src='@@/edit' or whatever and when i decided to use sprites instead messed up the conversion [04:00] yes, a div is not allowed to be empty. the same is true for

[04:00] Ah [04:00] Easily fixed :) [04:00] sinzui: there should be a strict xhtml or fail mode on the newer libs [04:01] wallyworld_, that is from 2009. by 2010 we were supposed to stop using @@/ urls because they waste resources [04:01] sinzui: yeah, i copied from elsewhere and realised sprites were preferred and messed up the fix [04:01] wallyworld_, lots of old code still uses the spectacles/testicles style [04:02] wallyworld_, IE 9 actually has a instruction to tell it not to fallback. ...do xhtml or html5 or die trying [04:03] sinzui: i'm still perplexed at the behaviour - Y.one('#xxx') fails, Y.one('[id=xxx]') works, and in both cases, the offending is well inside the containing element being selected [04:03] You're invoking undefined behaviour. [04:03] Of course it's perplexing :) [04:04] sinzui: so no webkit library strict xhtml switch ? [04:04] wallyworld_, The fact is some many people never learn the standards, that all the engines are written in a try/except pattern. Try to do the doc type. on exception slow down, choose to re-write the dom to be valid, or fallback to quirksmode [04:04] wallyworld_: Serving as application/xhtml+xml will cause Gecko and WebKit to parse it as XML [04:04] IE9 too [04:05] But we can't do it, because Microsoft are fucktards and didn't support it until IE9 [04:05] sinzui: also, i hacked in hide_console_messages=False to see the logged output [04:05] i think that's what you were going to put back in as a cmd line switch? [04:06] wgrant: i was meaning xhtml for running the tests [04:06] wallyworld_, I don't see anything wrong with id="P1-permission" [04:07] Maybe we need to look at the whole file to see if something interfered with the block under test [04:07] sinzui: me either. but since the contains that invalid it must bark [04:07] barf [04:08] wallyworld_, this test is from your 3rd branch right? [04:08] sinzui: yes [04:09] -4 [04:09] -3 [04:09] or -4 [04:09] introduced in -3 [04:09] Ah [04:09] The test results were from -4 [04:09] wgrant: that's the one i was landing [04:09] wgrant: sinzui: but fixing the still fails when i used Y.one('#xxx') [04:10] s/fixing/deleting [04:10] :( [04:11] While it didn't make much sense that that would cause the problem, I had hoped the layout engine was retaliating to discourage people from writing blatantly invalid markup. [04:11] but Y.one('[id=xxx]') works [04:11] wallyworld_, Can you convince the console to print everything in the body? [04:11] sinzui: yes, believe so. let me do that [04:12] the fuck [04:12] Line 47 of base-layout.pt [04:12] * wgrant deletes [04:13] sinzui: ah, ffs. i know why i left the img in there. lazr ChoiceSource requires an editcon img node [04:13] i will have to look at the ChoiceSource src code to see if there's a way around that [04:14] see, we wrote a lib that requires us to screw with things [04:15] sinzui: so rather than go back to using i'll fix ChoiceSource or figure out how to call it differently [04:15] wgrant, stab away [04:15] i may just be able to pass in the anchor [04:15] wallyworld_: Then we can fix the inline bug modifying stuff to not be terrible :) [04:15] Currently the edit icon loads late [04:15] Because it's not a sprite [04:15] yeah :-( [04:16] well, what a frustrating day or so [04:16] wallyworld_, the image is secondary to the id-lookup-fail [04:16] sinzui: ok, will get print the body, just a sec [04:20] sinzui: https://pastebin.canonical.com/61671/ [04:21] let's see if it looks valid [04:21] wallyworld_, looking at the source _observer_policy_template may be creating duplicate ids if there is more than one user [04:22] sinzui: you may be correct there - this is in the li elements [04:23] sinzui: and indeed, in the test, data for 2 users is rendered [04:24] yep [04:24] the ids are reused [04:24] they MUST fail since they are invalid [04:26] sinzui: scary that it passes on precise [04:26] wallyworld_, I declare shenanigans. I see some of the test already looks up id as a normal attr. I think only the first id in the tree is returned [04:27] or in the case of a tree fragement, only the child matches [04:28] sinzui: all but one of those test lookups do lookup unique ids [04:28] so should be changed to # [04:28] I see this is common practice in out code too because zope is putting dots in our ids :( [04:28] yes :-( [04:29] wallyworld_, we do want to it be #, but we need to add the user to the id's string as was done with remove [04:29] sinzui: the other workaround used is to Y.DOM.xxx [04:29] yes, i need to fix the template [04:33] sinzui: my point about it being scary that the tests pass on precise still stands though. we should see if something can be done [04:34] wallyworld_, I am looking at http://webkitgtk.org/reference/index.html right now [04:35] ok ;-). and i'm figuring out how to adjust my use of partials to get the required data available for the template to use [04:35] I do not see a strict flag to ensure the test dies [04:35] that is unfortunate [04:35] wallyworld_, ! [04:35] ? [04:35] wallyworld_, your test html does not claim to be xhtml strict [04:36] wallyworld_, set this as the first two declarations [04:36] [04:36] [04:36] in the test harness html? [04:36] change transitional to strict [04:37] yes [04:37] That will change how any browser written in the last 5 years interprets the content [04:37] We should really be polyglot (X)HTML5 with a doctype of [04:38] sinzui: test_observertable.html has: [04:38] "http://www.w3.org/TR/html4/strict.dtd"> [04:38] lolwut? [04:38] Launchpad has *never* been HTML 4.01 [04:38] It's had a doctype of XHTML 1.0 Transitional from the very start. [04:38] % bzr grep Transitional | grep -c 4.01 [04:38] 6 [04:39] wgrant, I was thinking about that last week. I suspect there will be some oddness that we need to test to ensure we do not gt stung. such as our ids [04:39] lib/lp/registry/help/sharing.html: wgrant, We tried html5 in the 2.0 design. IE hated it. we know know it is trivial to make it accept it [04:40] sinzui: Well, AIUI IE6 is now dead to us. [04:41] sinzui: given test_observertable.html appears correct, i'm not sure what else i should be changing [04:41] IE7 and IE8 still only have HTML4.01 parsers, with no HTML5 or XHTML, but they should cope better. [04:41] Ie 7 and 8 need a js initiate dom check to reenable css after it encounters html 5 [04:42] wgrant: I didn't think we could declare IE6 support dead? [04:43] IE6 is more than 10 years old. [04:43] Even if there's a good reason to support it, there's no good reason to support it. [04:43] Like Jimmy Hoffa and Elvis, we do not need to declare them dead. They are dead, and we will ignore them [04:44] Now, Microsoft continues to fuck the world over by preventing IE9 from running on Windows XP. But at least declaring IE6 and potentially IE7 dead gives us *some* freedom. [04:44] regardless, the js-dom-creation hack works in IE 6 and restores CSS after the html5 element is encountered [04:45] or at least say, you must try another OS, how about Ubuntu === jtv1 is now known as jtv [04:46] sinzui: Are you undistracted now? :-) [04:46] yes [04:47] sinzui: Do you have a private branch on prod that you can see, but I can't? [04:47] maybe [04:49] StevenK, what bug do you want me to link it too? [04:51] sinzui: https://bugs.launchpad.net/moblin-multimedia/+bug/221429 ? [04:51] <_mup_> Bug #221429: moblin media fails to launch < https://launchpad.net/bugs/221429 > [04:51] linked [04:52] StevenK, can you still see the bug? [04:52] sinzui: Looks good to me. No Linked branches. [04:52] sinzui: Can you see the branch linked? [04:52] fab. This tested private team and private branch [04:53] I removed the link [04:54] Oh, wait, it's talking about a different page [04:54] is this a doh moment [04:54] ? [04:54] No, I'm wrong, the user says he can't see a bug page linked from +assigned-bugs [04:55] So it is IBugTask:+index that is implicated. [04:55] StevenK, that is still the bug page [04:55] sinzui: I'll comment and mark it fix released, do you want me to just archive the card? [04:55] yes. We did time on it [04:56] sinzui: Plan to tackle 933759 for the rest of the day [04:56] Sigh. bug 933759 [04:56] <_mup_> Bug #933759: Added information_visibility_policy to bug and branch < https://launchpad.net/bugs/933759 > [04:57] I just wrote 2 garbo jobs, what's one/two more [04:57] Have fun storming the castle. I plan to take a Cadbury chocolate bar for the rest of my day [04:57] I suppose it requires a DB patch first [05:30] wallyworld_: Has your enum landed? If so, what is it called? [05:33] Oh, duh, it's AccessPolicyType [05:33] Does that mean bug 933759 is out of date and the column on bug and branch should be named differently? [05:33] <_mup_> Bug #933759: Added information_visibility_policy to bug and branch < https://launchpad.net/bugs/933759 > [05:40] StevenK: cool [05:57] wgrant: Am I right? I should be adding an accesspolicy column to bug and branch? [05:58] lifeless: Can you untestable or something r14902? [06:00] StevenK: Not accesspolicy [06:00] Potentially accesspolicytype [06:01] wgrant: A shorter form of what sinzui suggested is information_visibility, but the enum is AccessPolicyType. [06:01] Perhaps visibility_policy [06:01] It is complicated. [06:01] Because there are public bits in AccessPolicyType [06:01] Which I had not envisioned. [06:02] wgrant, wallyworld_: In a private project isn't everything Proprietary data? [06:02] huwshimi: It should be, yes. [06:02] wgrant: Do you have the option for anything else? [06:03] I'd hope not. [06:03] Potentially you could argue that userdata and embargoedsecurity could exist in a private project. [06:03] But I don't believe we've been asked to do that. [06:03] wgrant: and some public projects can have some Proprietary data? [06:03] All three can exist in a public project with optional proprietary bugs. [06:04] wgrant: Gotcha [06:06] wgrant: Thanks for that === almaisan-away is now known as al-maisan === al-maisan is now known as almaisan-away [07:09] wgrant: I am adding a mthod to IAccessPolicyGrantSource.... [07:09] def delete(grants): [07:09] """Delete the specified grants. [07:09] :param grants: a collection of (`IAccessPolicy`, grantee `IPerson`) [07:09] pairs. [07:09] """ [07:09] that ok with you? [07:09] i need it for the +sharing page [07:11] wgrant: also, have you considered using named tuples for the various parameters and return types? [07:12] wallyworld_: s/delete/revoke/ [07:12] ok [07:12] wallyworld_: I avoided namedtuples because they're not very JSON-friendly. [07:13] i thought there would be support for them [07:13] seems like an expected thing to have [07:13] but maybe not [07:14] Why would you expect that? [07:14] They're a native feature in just about 0 languages. [07:14] They're an awkward hybrid of a map and a list. [07:14] Which has very little reason to exist. [07:15] they are implemented under the covers like a normal tuple [07:15] Sure. [07:16] so i thought the generated implementation might have something [07:16] But you can't represent a namedtuple in JSON. [07:16] since it would be such a common requirement [07:16] Heh, common? [07:16] There's no sensible way to represent a namedtuple in JSON, so it's unlikely that people would do it... [07:16] but you can represrnt a dict in json which a named tuple can be mapped to i think [07:17] No. [07:17] namedtuples have order [07:17] You could map a namedtuple to a dict. [07:17] But you can't round-trip through a sensible JSON representation. [07:17] sure, but the order could be encoded in the json [07:18] How? [07:18] Make JSON map definitions order-sensitive? [07:18] as a list of names [07:18] for example [07:18] it would just need serial/deserialisation on the named tuple generation [07:18] s/generattion/generated class [07:19] You can't deserialise. [07:19] Because you don't know what namedtuple to deserialise to. [07:19] you'd encode that as well [07:19] i used to do this sort of thing in java all the time [07:19] Adding namedtuples to JSON would provide very minimal benefit for large additional complexity. [07:20] surely pythin can support similar pluggable serialisation mechanisms [07:20] Sure. [07:20] But this isn't Enterprise Java XML SOAP Beans EE2 7.5 [07:20] anyways, it's more of a pub discussion :-) [07:20] This is JSON [07:20] It's simple. [07:21] awesome - bugs.kde.org changed its design and now the crash reporting assistant fails to work...! [07:21] it can be done simply in java, without any "enterprise" stuff, it's supported by the langiage [07:21] wallyworld_: It's not supported by the format. [07:21] bigjools: what, bugs in kde? surely not? [07:21] wallyworld_: shocking I know [07:21] wallyworld_: And I would damn well hope it's not supported by the language. [07:21] By parts of the (potentially standard) libraries, perhaps. [07:22] wgrant: what's so bad about pluggable serialisation? [07:22] Nothing, but serialisation doesn't belong in the core language :) [07:23] the language sh/could support mechanisms to add it [07:23] easily [07:23] via libraries available at runtime [07:24] Anyway, there's no reason to serialise namedtuples to JSON. [07:25] don't agree, but doesn't matter [07:26] wgrant: another question - why in the impl for IAccessPolicyGrantSouuce call AccessPolicyGrant? [07:26] and not AccessPolicyGrantSource? [07:26] eparse [07:26] the implementing class [07:26] Oh, s/in/is/? [07:26] is [07:26] sorry, tying [07:26] typing [07:26] arrgh [07:27] It's one of the two major conventions we have. [07:27] Either you have Foo implementing IFoo, and FooSet implement IFooSet [07:27] Or you have Foo implementing IFoo, and class methods implementing IFooSource [07:27] That was used a bit more in code [07:27] s/code/Code/ [07:28] Well, I guess technically Foo implements IFoo, and provides IFooSource. [07:28] hmm. ok. i find that latter convention "interesting" [07:29] Most of Launchpad is "interesting" [07:29] lol [07:31] * wallyworld_ pauses new AccessPolicyGrant method implementation - off to have dinner with bigjools. he is even older today [07:31] wallyworld_: where's my birthday pizza you aussie git? [07:31] i am leaving to pick it up now you pommy whinger [07:32] Haha [07:32] * bigjools hears aussies whinging === jtv1 is now known as jtv [07:49] Ha ha hgwefwhui [07:50] So it turns out that some of our pagetests only work because our HTML is invalid, preventing some directives from being parsed. [07:50] eg. zope.testbrowser follows http-equiv refresh [07:51] But currently they have an illegal