[00:00] Right [00:00] done [00:00] We have to wait for abentley's rollback to hit qas too [00:01] Nope. [00:01] We've turned the feature off on production. [00:01] So we can deploy to 14399, or would you prefer to wait? [00:02] I'd prefer to deploy ASAP. [00:02] The two rollbacks are qa-ok if they only affect the disabled feature. [00:02] There's two rollbacks? :-( [00:03] Yes. [00:28] is it just me or is there something strange on lp where the font size varies on some pages? [00:30] maybe it's just my browser === Ursinha_ is now known as Ursinha [01:01] hm [01:01] i'm going to add a timeout to bzrlib tests [01:01] it's pretty generous, 300s [01:01] i wonder if this will hurt lp [01:01] 300s per test [01:01] *600s [01:02] how are you going to do this? [01:07] https://code.launchpad.net/~mbp/bzr/test-timeout/+merge/83559 [01:07] it crashes the whole test run [01:07] :/ [01:08] probably better than hanging [01:11] what do you think/ [01:11] lp could turn it off [01:11] or we could have it off by default [01:11] interesting [01:11] I have a few different angles here [01:12] firstly lp - you can check the longest test run by introspecting a subunit stream from a failed ec2 run [01:12] longest duration of a single test, I mean [01:12] true [01:12] add 50% or so and we're safe. [01:12] secondly, I think this would be good to put into testtools and/or fixtures [01:12] it has no need to be bzrlib specific [01:12] and its really quite nice [01:13] also true, i thought about that too [01:13] it is a bit abrupt [01:13] e.g. fixtures would happily accept a timeout fixture which alarms if not turn down in time [01:13] but i don't see any better options [01:14] yep [01:14] you can use signal.signal to inject an exception when SIGALARM is received, I suspect [01:14] we don't currently depend on fixtures [01:14] we could [01:15] probably yes [01:15] that could make it tidier [01:15] at the expense of perhaps not terminating in some cases [01:15] so the contract could be TimeoutFixture(duration, callback) [01:15] eg if you are stuck in C code [01:15] perhaps yes [01:15] as we actually were in the case that motivated me to write this [01:15] mm [01:15] it might still get it unjammed [01:15] it could be an option [01:16] if you review https://code.launchpad.net/~mbp/testscenarios/module-scenarios/+merge/80287 i will be more likely to send you more patches :) [01:16] anyhow those are my thoughts - share the niceness more widely, and check the longest run LP [01:16] has [01:16] poolie: its right up on my list actually, I nearly got to it yesterday. [01:21] "you're boring me... BANG" [01:59] lifeless, ok https://code.launchpad.net/~mbp/python-fixtures/timeout/+merge/83721 [02:00] * lifeless cues the on hold music [02:00] for the diff? [02:00] what's up with the longpoll stuff for that? [02:00] no, for you :P [02:00] i see a lot of noise about it [02:00] oh ok [02:00] we're about to go live [02:01] anyhow, immediate feedback is that this is much more than test specific; (haven't seen the diff yet) [02:01] oh? [02:02] well its a good generic 'I'm doing something and I might not come back' facility, wrapped up in a context manager [02:02] so I'd like to drop the focus on tests in the prose around it [02:02] mm [02:02] i see your point [02:03] i think it is really for emergency use [02:03] your readme says TimeoutFixture [02:03] i wouldn't encourage using it widely [02:03] your body tests TestTimeout [02:03] until for instance it copes properly with several things happening at once [02:03] you'reright [02:03] I prefer the former (and jml is arguing for just Timeout, for this case) [02:03] poolie: I think its fine to have something with caveats [02:04] poolie: the caveats are real, and devs can make informed choices. [02:04] you're right that aside from that it is not test specific [02:04] 211+ import pdb;pdb.set_trace() [02:05] just 'Timeout' is ok with me [02:05] heh [02:05] is possibly not intended to be merged [02:09] its amazing how loudly cats can snore [02:09] i don't really want to fix that in this branch :) [02:09] or indeed at all [02:09] cat snoring? Indeed :) [02:10] so given all this, perhaps the sample data does not need to be tests but just functions [02:10] make sense to me [02:12] that's quite nice they'renot test specific [02:19] actually that's more testable not going through the double-testing layer too [02:24] ok re-pushed [02:33] poolie: I wonder whether a callback is more useful than an exception [02:34] poolie: e.g. a trivial callback can raise, a different one could log a marker about how far through (whatever task) things were when the alarm triggered [02:35] perhaps I'm overthinking this [02:45] huwshimi: i've updated the demo to use local storage to persist changes between page refreshes, and added in editing on the details page. let me know if there's anything else [02:45] wallyworld_: Awesome, will do. [02:50] lifeless, maybe so [02:50] perhaps that can wait until someone has a need for it [03:05] wgrant: pop quiz; lp_serve and codehosting sections in schema.conf, both run as same uesr right ? [03:08] lifeless: They should, yes. [03:09] lifeless: Check the owner of their existing OOPSes? [03:20] Does anyone want to help me think about bug statuses/colours/grouping? Voice, or IRC if multiple people are keen. [03:20] wgrant, poolie: I think both of you have discussed colours etc on IRC in the past [03:22] wait, that should have been bug status colours and status grouping [03:23] huwshimi: Sure. [03:24] Hopefully poolie's around too. [03:25] wgrant: OK thanks, let's give it a minute and see if poolie wants to join in [03:25] wgrant: Or I can just ramble here [03:28] here is good [03:29] sure [03:31] So, we're going to try out moving the status into the top line of the new bug listings. We'll sit the status next to the importance and style it similarly to the status. We need to figure out some colours for statuses. So... [03:31] The colours for the importance will probably stay the same (at least at this point). Colours do a good job of signifying different types of importance. [03:32] Even though importances are really one type of "thing" [03:33] We don't want the status colours to fight with importances so we could make them tones of one colour, or we could group statuses so that there are only a few colours [03:34] The status groups I came up with were the following: [03:34] Initial (New, Incomplete, Opinion, Confirmed, Triaged) [03:34] Rejected: (Invalid, Won't Fix) [03:34] Opinion is Rejected [03:34] wgrant: Ah thanks [03:34] Triaged is not Initial. [03:35] The other two groups were: working (In Progress) and done (Fix Committed and Fix Released) [03:36] Right. [03:36] wgrant: Would you break up that inital group? I'm mostly trying to identify a group of statuses that are essentially the same thing [03:36] Triaged certainly needs to be separate. [03:36] I don't know about the others. [03:36] wgrant: So in a workflow it probably wouldn't move between statuses in the same group [03:37] huwshimi: Fix Committed goes to Fix Released, New to Incomplete. [03:38] wgrant: Ah you're right [03:38] Fix Committed, Won't Fix, Opinion and Confirmed have no good reason to exist. [03:39] huwshimi: 'same thing' [03:39] huwshimi: have you seen the issue tracker draft spec ? [03:40] lifeless: Yeah, I was just looking at that [03:40] wgrant: In a sense could you say that In Progress and Fix Committed are kind of the same thing? [03:40] huwshimi: there is indeed an effort ongoing to reduce the number of statuses [03:40] wgrant: They're both a "this bug is being worked on" statuses, just with a different tense [03:41] huwshimi: it is perhaps tricky to do just now- because of the ongoing debate about the value of the nuance [03:41] lifeless: Yeah, in some ways this might be a step towards that (having similar colours) [03:41] huwshimi: we'd expect many 'new->incomplete', 'new->opinion|invalid|wontfix', 'new->triaged' transitions [03:42] many projects don't use in-progress /fix committed at all AFAICT [03:42] etc [03:42] I think most projects would use In Progress. [03:42] Fix Committed is probably rare. [03:42] wgrant: in progress is bit twiddling overhead [03:43] lifeless: I guess the thing here is that the colours won't force anyone into any kind of workflow, but might (if people notice the subtleties) help people see what stage the bug is at. [03:45] so for a quick segue [03:45] there there a few interesting dimensions around a bug and lifecycle [03:45] there is the progress bar dimension [03:45] there is the what-is-it-waiting-for dimension [03:46] there is the 'when will it be usable' dimension [03:46] to illustrate the difference, consider an LP bug [03:46] its 'done' when its released and switched on via flags [03:47] to get there it may wait on user input many times (some of which may use the INCOMPLETE state) [03:47] it may wait on dev, design, qa inputs [03:47] it may wait on deployment pipeline [03:47] and it may be usable for a user once its enabled for beta users [03:48] so, I think its important to decide *which* dimension you are trying to quantise when you think about this [03:48] otherwise you'll tie yourself, and our users, up in knots :) [03:48] (and note that 'status' as its currently defined doesn't map directly to -any- of these dimensions) [03:49] I wish I had some helpful insight here - sorry ! [03:52] lifeless: That is helpful. I still think we can provide some hints to what part the cycle of the bug is at. There's a group of bugs that need some extra info/management/discussion before they can be worked on (New, Triaged, Incomplete, Confirmed). There's the bugs that have been rejected (Invalid, Won't Fix, Opinion). There's bugs that are being worked on (In Progress, Fix Committed). And there are bugs that are do [03:52] ne (Fix Released). [03:53] I know that doesn't necessarily map to everyone's workflows [03:53] but I think it's correct in terms of what we have in Launchpad right now [03:54] And I [03:55] The result of those categories is just chosing a colour for each status. Do Invalid, Won't Fix and Opinion really deserve an individual colour or can they be lumped together in a "rejected" colour [03:56] * micahg wonders why opinion still exists [03:56] micahg: I think we all do. [03:56] haha [03:57] huwshimi: Triaged bugs are ready to be worked on. [03:57] huwshimi: 'triaged' bugs can be worked on' [03:57] ah, yes [03:57] huwshimi: as can confirmed [they just don't have an importance set] [03:57] huwshimi: I think the 'reject' and 'being worked on' sets are good [03:58] huwshimi: arguably rejected + fix-released is one grouping (bugs that are finished with) [03:59] lifeless: I thought the same about bugs that are finished with, but I think it would be good to distinguish between them as they have pretty opposite outcomes [04:00] huwshimi: sure, I buy that; was being a bit socratic :P [04:01] :) [04:05] So do you think I would get away with having 5 status colours? For each of: Unconfirmed (New, Incomplete), Ready (Triaged, Confirmed), Rejected (Invalid, Won't Fix, Opinion), Being worked on (In Progress, Fix Committed), Done (Fix Released) [04:06] (with unconfirmed, ready etc being labels I'm only using to help explain right now) [04:06] That sounds reasonable. [04:07] +1 [04:08] wgrant, lifeless: Awesome, thanks for the help :) [04:08] anytime [05:00] Is doctest an actual upstream Python module? [05:02] yes [05:02] its in the stdlib [05:02] Oh, ew. [05:17] Ah ha! poolie! [05:17] 14337.1.1 mbp@can | from testtools.testresult.real import _details_to_str [05:38] * StevenK tries to remember the magic he used to get Person:+index working in a test harness. [05:38] Stupid RDF. [05:39] Not RDF, but XRDS. [05:41] wgrant: are you reviewing today? If so: ooh, pick me, pick me! https://code.launchpad.net/~jtv/launchpad/bug-849683-patchup/+merge/83729 [05:42] jtv: The cloner is used ~twice per release. [05:42] To perform archive rebuilds. [05:42] That explains. Well, no more problem anyway, with this branch. [05:43] Actually, IDS uses it too. [05:43] So three times a release :) [05:44] jtv: What changed in lib/lp/soyuz/doc/buildd-queuebuilder-lookup.txt? [05:44] There's a big block of changes where I can't actually see any differences. [05:44] Lint. [05:44] Yeah, but I can't see what. [05:44] Oh. [05:44] Got indented too far (I guess by the doctest formatting tool), and thus overran the 78th column. [05:44] Indended by 4 instead of 5. [05:44] Yeah. [05:44] AH [05:45] Was it 5? Ah yes. Then it wasn't even the formatting tool, I guess. [05:45] StevenK: “AH”? are you okay? [05:45] jtv: I was wondering too [05:46] jtv: Approved, thanks for the fixes and cleanups. [05:46] Thank you. [05:56] allenap: wgrant: teamparticipation updates are racy; thats why it gets out of sync I suspect. [05:56] allenap: or at least, may explain. Requires select for update to fix. [05:56] hi all [05:56] lifeless: That's possible, but pretty unlikely. [05:56] StevenK, yes that was me [05:56] i even saw the lint warning [05:57] exporting the symbol seemed likely to overflow my stack [05:57] i guess i could have suppressed it? [05:57] its a rather noddy warning TBH [05:57] we have it disabled for most of LP [05:58] you could more reasonably warn it is an underscored symbol... [05:58] but [05:59] it is more of a warning of "may break in the future" rather than "is broken now" [05:59] let the future fix its own bugs, we have enough of our own [05:59] huwshimi, lifeless, like robert said there are a bunch of different dimensions there [06:00] ah [06:00] i agree with a lot of that stuff [06:00] i will suggest one more thing [06:00] which is that some statuses are inherently more interesting than others, most of the time [06:00] specifically the 'in play' statuses of new, inprogress, fixreleased [06:00] *fixcommitted, i mean [06:00] and maybe incomplete [06:00] they are more likely to be something some one wants to work on next [06:00] perhaps they should be more prominent [06:01] poolie: It annoys me that bin/test prints it every time [06:01] does it? [06:02] the import warning? [06:02] Yup [06:02] guys, help me decide about the tarball download feature [06:02] it does not appear on the default lh home page only on per-revision pages [06:02] i could fix it and update [06:02] bug [06:02] or, i could fix a bug saying it's not in the lp main ui [06:02] which is ultimately more interesting [06:03] bug 240580 [06:03] <_mup_> Bug #240580: Ability to download a tarball for a revision < https://launchpad.net/bugs/240580 > [06:03] you just closed it wgrant :) [06:03] Both? :) [06:03] or, no, maybe that was something else [06:05] poolie: Thanks. I'm a little hesitant to start placing importance on certain statuses, just because I don't understand enough about the ramifications on some people's workflows (I know it'd just be a small UI thing, but it's one less issue with the UI I want to possibly introduce right now). [06:06] EWHAT: database/schema/tst.dot [06:06] that also sounds reasonable [06:06] what do you specifically want to do next? [06:06] huwshimi, i'd be curious about your thoughts on my mail about a Thanks button [06:07] more from a ux than implementation perspective [06:07] not likely to happen soon though [06:07] poolie: doing it the lh main ui would be nice; doing it in the LP main ui is also nice. I don't see them as the same bug, and whichever you choose to work on first is up to you :) [06:07] i think i will mark this bug complete and file followons [06:08] poolie: My initial reaction is that it would be a nice, friendly, community building touch. I think it would add a nice rewarding experience to using Launchpad. [06:10] :) [06:12] jtv: hey, is there an existing collection of scripts for doing db schema evolution w/slony the way we do ? [06:12] lifeless: no idea — haven't followed how our schema stuff interacts with slony tbh [06:13] the scripts get wrapped in slonik [06:14] so things that want to use ORMs etc to generate db patches - well they can't ;) [06:14] they could if they emit the schema changes to a stream, but not if they depend on commit/rollback etc [06:14] or on processing data mid-migration [06:15] however there are a raft on pypi [06:17] random link of the day [06:17] http://bulbflow.com/overview/ [06:23] Maybe once we're on 9.x we can look into streaming replication. [06:23] yeah [06:23] stub wants to wait for a bit for 9.x, some slony issues that concern him [06:24] Yes. I do still water at the mouth with new postgres release summaries though. [06:24] :) [06:29] lifeless, nice [06:29] lifeless: the staging oops report contains an entry that makes me wonder if you've set the timeout threshold too low… [06:29] -1.00s OOPS-fead2780a43b01845f361d2acbb79f14 Unknown [06:29] jtv: hah [06:29] :) [06:29] It took minus one second and _still_ it times out. That's going to be hard to optimize. [06:30] jtv: its all about i [06:30] Are we squaring our times then? [06:30] call cern [06:30] poolie: good point. [06:31] jtv: oops tools applies a heuristic [06:31] jtv: it appears to be glitched - https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-fead2780a43b01845f361d2acbb79f14 [06:31] jtv: note the oops actually doesn't report any timing data whatsoever [06:31] jtv: and by glitched I mean '-1 to avoid confusion' [06:33] GAHHH sorry I have to focus on something else right now. [06:33] Grrr all these notify() functions and all this time the test wasn't calling the right one. [06:38] ugh [06:38] database/schema depends on canonical.* [06:38] twitch [06:38] How? [06:38] from canonical.launchpad.scripts import db_options, logger_options, logger [06:38] from canonical.database.sqlbase import connect, ISOLATION_LEVEL_AUTOCOMMIT [06:38] from canonical.database.postgresql import fqn [06:39] Ah [06:40] yes [06:41] so, making a separate tool will involve some way to bridge our global magical config settings and the separate tool [06:42] You want to pull database/schema out entirely? [06:42] the driving logic, yes. [06:42] microservices need DB's and slony. [06:44] I need a name though [06:44] lazr_postgresql I guess [06:44] (refusing to namespace on grounds of being sane) [07:18] wgrant: if Ubuntu syncs a source package from Debian and then builds it, would SPR's dsc_signing_key and dsc_maintainer_rfc822 be the Debian maintainer's? [07:19] jtv: signingkey is probably empty. I'm not sure what maintainer is... it depends what gina does. [07:19] * wgrant hunts. [07:19] spr = SourcePackageRelease( [07:19] section=sectionID, [07:19] creator=maintainer.id, [07:19] component=componentID, [07:19] sourcepackagename=name.id, [07:19] maintainer=maintainer.id, [07:20] So the maintainer should be the Maintainer field from the imported source package. [08:02] morning guys [08:04] Good morning [08:04] Goeiemorgen jtv [08:05] Goedenmorgen! [08:05] double dutch [08:58] Morning [09:01] Hey [09:02] good morning === jam1 is now known as jam [09:22] hi all [09:23] bigjools, is rabbit appropriate for storing thing indefinitely? [09:23] maybe it is, i just had the idea it was for in-flight messages [09:23] poolie: not at all, it's just a transport mechanism [09:23] so it's rabbit as a path to a service storing stuff in psql or whatever [09:23] it's just a very useful way of firing and forgetting [09:24] memories of Dallas :) [09:24] I only shot Osama, no rabbits :) [09:25] bigjools: would need a query API too for it; so if doing that might use http for the store as well (given that we probably want to know the audit was committed :P) === almaisan-away is now known as al-maisan [09:26] lifeless: rabbit has a reliable commit mechanism IIRC [09:27] bigjools: if you use it in rpc mode its equivalent to an http call [09:27] why not just stick to Rabbit then? [09:27] bigjools: if you use it in persistent message fire-and-forget-but-tell-me-that-there-is-at-least-one-subscriber then its potentially lossy unless you have an HA story for it [09:27] bigjools: and we don't have an HA story for it [09:28] and do we have HA story for some future storage mechanism? [09:28] slony [09:28] (thats yes, if we use postgresql, or yes if we use cassandra, etc) [09:28] do slaves stay up if the master goes? [09:29] can you store data in a HA fashion? [09:29] for slony, yes and no - slaves stay up, master being down prevents writes [09:29] which is my point [09:29] this is different to rabbit in the fire and forget mode where messages can disappear entirely [09:30] so I don't see why its your point [09:30] my point is that nothing has HA for storage [09:30] so why not just use a single API over rabbit instead of an API for this, another API for that ... [09:30] uhm, cassandra does [09:31] if we need HA writes [09:31] we don't use cassandra [09:31] this discussion is maddening [09:31] I'll chat with you another day [09:31] why? [09:31] you don;t like my questions? [09:31] I don't mind questions, but the goal posts seem to be moving [09:32] I'm talking about being sure the audit item is logged [09:32] what goal posts? [09:32] you're talking about being up all the time [09:32] they are different things [09:32] umm, you started with the HA thing [09:32] not me [09:32] I started with lossiness [09:33] not with HA; to avoid loss of messages with rabbit you need to either be using it in RPC mode, which is rather pointless, or you need to an HA story for it [09:34] we might as well just use a separate Storm store to talk to an auditing PG [09:34] well [09:35] that wouldn't be reusable by other services and wouldn't have higher integrity due to needing direct access from the main appservers etc [09:35] what we have with rabbit today is a mostly-reliable messaging syste, [09:35] which is great [09:36] we don't have guaranteed delivery except in rpc mode where you wait for a reply from the consumer [09:37] the main impact this has is that when we really care about a message being delivered, we need to either use rpc mode or not pass it via rabbit; either is ok [09:39] Technically, our writes to PostgreSQL can be lost. Slaves are lagged, and if we lose the master we lose the lag time's amount of data changes. [09:40] true, though if we lose the change we made, and keep the audit trail for it, thats arguably less of a problem than keeping the change and losing the audit trail [09:40] I'd consider looking at celery, which seems to allow you to use various things as the back end such as rabbit or postgresql [09:41] I had a skim the other day since abently keeps mentioning it and it looks nice. I like projects that take their documentation seriously. [09:43] bigjools: sorry for the maddening comment; ELONGDAY + we are/were crossing wires [09:43] bigjools: I usually value teasing things apart and getting more clarity :( [09:43] * lifeless heads to be [09:43] d [09:44] (PS: cynthia had a bad night last night.... so we all did) [09:44] lifeless: I have jetlag, you have a baby. Great combo :) [09:44] indeed! [09:44] have a good day [09:44] * lifeless goes === gmb changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: gmb | Critical bugtasks: 3*10^2 [10:23] lifeless: fwiw, re "Fixture" suffix: my main concern is that I use TempDir and EnvironmentVariableFixture the most, and either the former should be TemporaryDirectoryFixture or the latter should be EnvVar (or at least EnvironmentVariable). Too much to remember otherwise. [10:37] wgrant: Regarding your comment on https://bugs.launchpad.net/bugs/897269 about check-teamparticipation.py. I don't want to have to manually fix TP ever, so I think it's worth fixing it automatically as well as having the report. [10:37] <_mup_> Bug #897269: check-teamparticipation.py does not fix spurious participation records < https://launchpad.net/bugs/897269 > [11:23] "This membership is going to expire in 7 days from now" === matsubara-afk is now known as matsubara [11:58] vila: You have put a big smile on my face :) https://bugs.launchpad.net/bzr/+bug/843211 [11:58] <_mup_> Bug #843211: With pipelines I cannot set push_location and public_branch generally < https://launchpad.net/bugs/843211 > [11:59] bug 872112 [11:59] <_mup_> Bug #872112: Buildd-manager combines DB write transactions and asynchronous calls < https://launchpad.net/bugs/872112 > [12:00] allenap: glad you like it ! Other kind of feedback also welcome :) [12:00] I think everyone who uses pipelines will buy vila a beer ... [12:01] Indeed! [12:01] bzr push errors with can't do it / branch doesn't exist, so I sigh and run sync-pipeline [12:01] * vila coughs [12:01] make sure it works as you expect, there may still be some shaloow glitches [12:01] shallow [12:02] Since I've stopped landing so many Soyuz branches, I've stopped using pipelines so much. I wonder why that is ... === mrevell_ is now known as mrevell [12:46] Does anyone know where I can find (in order to modify) the oops-tools-django-dependencies or oops-tools-django-testsuite-dependencies packages? I am a total newb to this stuff. [12:48] matsubara, ^ ? [12:51] allenap, bzr+ssh://bazaar.launchpad.net/%2Bbranch/lazr-source-dependencies/ [12:51] matsubara: Thanks :) [12:51] hmm that came from bzr info and looks wrong. the right branch is lazr-source-dependencis [12:51] allenap, https://launchpad.net/lazr-source-dependencies [12:52] matsubara: Cool. [12:52] * allenap contemplates filing a bug about not finding that package from site-wide search. === matsubara_ is now known as matsubara === matsubara is now known as matsubara-lunch [14:22] allenap, matsubara-lunch: lazr-source-dependencies is deprecated, use lp-source-dependencies [14:24] flacoste: I was about to ask matsubara-lunch about that, but for another reason. I was looking for the oops-tools-django-dependencies and oops-tools-django-testsuite-dependencies packages, but they're not in either lazr- or lp-source-dependencies. Do you know anything about them? [14:24] allenap: aren't they in the meta-lp-deps project? [14:25] * allenap looks [14:26] gary_poster: How I manually get the SimpleViewClass-munged version of a view class? [14:26] allenap: where did you get these packages from? apt-cache search doesn't find them over here? [14:27] flacoste: They're in the python-oops-tools PQM chroot, so it's conceivable that they were made by a LOSA. [14:28] allenap: yeah, i don't know where these packages are maintained? did you look on the oops-tools deployment wiki page if there is any info on them?% [14:29] flacoste: I'll have a look. [14:29] https://dev.launchpad.net/QA/OopsToolsSetup [14:29] allenap: i don't see anything there [14:29] Ta. [14:29] if you find the answer, please update that page :-) [14:29] flacoste: Will do :) [14:33] mthaddon: Do you know what the lineage of the oops-tools-django-dependencies and oops-tools-django-testsuite-dependencies is? I've just seen that the former is installed on carob. It's also installed in the python-oops-tools PQM chroot (wrt. https://rt.admin.canonical.com//Ticket/Display.html?id=49246). [14:36] allenap: I think they've been losa-maintained up til now and are just in lucid-cat (should be able to download the source from any server in the DC) [14:38] abentley: no, I've muted everyhting, just listening [14:38] rick_h_: no, you haven't. Your lips are red. [14:38] yea, but you can't hear me right? abentley [14:39] I'm not hearing you saying anything. I'm just hearing echo. [14:39] ok, well I've muted all inputs at pulse [14:40] rick_h_: You were still outputting to Mumble. I guess it's possible to do that without using Pulseaudio, but it seems unlikely. [14:43] mthaddon: Ta, thanks. [14:52] abentley: adeuring http://www.youtube.com/watch?v=_zhQIfT7g58&feature=youtube_gdata_player is the video I mentioned, good stuff [14:52] thanks [14:56] rick_h_: cool, thanks. === vednis is now known as mar === mar is now known as mars [15:03] Hi gary_poster, I'm investigating a timeout (bug 890927) and it turns out the problem is the repeated security check queries (line 2234 in lib/canonical/launchpad/security.py). Jeroen said I should talk to you about this because it's a matter you've worked on previously… so here I am :) [15:03] <_mup_> Bug #890927: private PPA Archive:+index timeouts < https://launchpad.net/bugs/890927 > [15:04] I thought they were cached these days? [15:05] I think they are *somewhat* cached. But each package on the page generates a security check query. [15:06] In this case, the exact same query is repeated. [15:06] that is a harder problem to solve [15:06] I guess this is the "published" check? [15:06] Right, hence Jeroen's advice to talk to Gary about it. [15:07] if you can already see the page, there's little point doing those checks [15:07] since all the necessary security has been passed already [15:07] It's the ViewArchive launchpad.View check. [15:07] True. [15:07] right, so the view check is done for the archive, and then the same archive again and again for each package [15:07] Exactly [15:08] a dirty fix would be rSP :) [15:08] Dirty indeed :), a more generic caching mecanism would be nice here. [15:09] mechanism* [15:09] Besides, the call comes from a place that I think is called from many other places which might need the security checks. [15:10] Working around that might be possible but even more dirty. === matsubara-lunch is now known as matsubara [15:12] rvba: are you thinking of a cache of (obj, permission_name) ? [15:12] Also, solving this elegantly might bring more performance improvements elsewere. [15:12] true [15:13] bigjools: right now, honestly I don't know if that's really possible but yeah, I was thinking about having a LRU in the request for that. [15:16] bigjools: but I need to understand how the caching in place (which does not work in this case for some reason) works first. [15:21] rvba, I'm sorry I missed this [15:21] rvba, I'm trying to use Empathy as my IRC client and not having success with notifications yet [15:21] rvba, should I still look at the backlog and try to figure out what is going on :-) [15:21] gary_poster: no worries… maybe you can give me a few hints to understand how perm check caching works and what you think can be done in this case. [15:22] ok lemme read backlog [15:22] thanks gary_poster. [15:22] gary_poster: How I manually get the SimpleViewClass-munged version of a view class? [15:24] * gary_poster tries to remember these details... [15:25] abentley, if I understad you correctly, that is what you will get from the adapter lookup [15:25] You can get the adapter registry itself [15:25] and do a lookup there without actually instantiating the class [15:25] if that helps [15:26] gary_poster: I have been trying to do the lookup manually, but I don't know exactly what to look up. Here's what I'm trying: https://pastebin.canonical.com/56497/ === jcsacket1 is now known as jcsackett [15:29] rvba, so, I'm not ignoring you, but abentley's question is easier :-P [15:29] gary_poster: I figured :) [15:30] abentley, I'd suggest getting the site manager. that has an adapter registry on it for adapter lookups (and a separate one for utilities) [15:30] gary_poster: I'm not expecting a solution but hints btw [15:30] ack [15:31] abentley, that gives you an interface that's closer to metal [15:31] and I think it will be easier for you to use [15:31] the interface is described in zope.interface IIRC [15:32] abentley, as to the traceback, I don't know enough about what the cls is and so on to have an opinion as to what the problem is [15:32] gary_poster: the cls is defined at the top of the pastebin. [15:32] but I suggest dropping that and working with an interface that lets you specify the interfaces. [15:34] abentley: duh, sorry. in that case, I'd guess the problem is that +base-layout-macros is registered for something else. The adapter registry will give you the raw materials to anwer that question directly though. [15:35] I'm more than happy to dig in with you, abentley, but I'm trying to re-set up my LP environment with LXC, so I don't have a working environment atm [15:35] and I should try to help rvba [15:35] gary_poster: undertood. I used +base-layout-macros because it's registered for *, which I thought meant anything. [15:36] yes abentley, you are right. I don't have an immediate answer; I would have to dig too. :-/ [15:37] rvba, so, IIRC, we cache our security lookups in the security policy. [15:37] gary_poster: I see that in lib/canonical/launchpad/webapp/authorization.py.LaunchpadSecurityPolicy === al-maisan is now known as almaisan-away [15:38] right rvba. Maybe if I look at that I will better understand the problem. [15:39] Because ATM I don't see what isn't working [15:39] gary_poster: me neither but maybe I'll try debugging it to see what's going on … then I'll come back to you. How does that sound? [15:42] gary_poster: the thing that I don't get is where the cache is exactly. I see a local object named cache being manipulated in checkPermission (same file). [15:43] rvba, cool. I'm interested in the IApplicationRequest check, because that's the only thing that jumps out at me as a way for the cache to be ignored. Although...these objects are in fact different, right? [15:43] I suspect my problem is that I've plenty of different objects being checked… and it turns out the check is the same because the objects are all related to the same archive. [15:44] gmb, you need to thank me. It took *me* 5 hours to review jtv's buildd-manager branch. [15:44] rvba, right. So, that would lead to a few sorts of solutions [15:45] the _underlying_ check is common [15:45] bigjools: You mean the 1200 line one that StevenK appeared to have started reviewing? [15:45] rvba, am I right that actually instantiating the IAuthorization adapter is the expensive bit here? [15:45] bigjools: exactly. [15:45] gmb: that is the badger [15:45] bigjools: Thank you for taking care of it. [15:45] rvba, can we state categorically that these objects get their permissions from some other object? [15:46] I believe we have an existing mechanism for that sort of thing [15:46] gmb: :) You didn't actually need to thank me, I am just feeling relieved I finished it [15:46] bigjools: (I daresay that it would have needed input from you or your fellow Soyuz experts either way) [15:46] I do not know how efiicient it is [15:46] gmb: actually it was more of a Twisted domain change [15:46] gary_poster: yes, SourcePackagePublishinghistory -> Archive. [15:46] bigjools: I was really glad when I saw StevenK's name attached to it; I guess that made me overlook the fact that he hadn't actually reviewed it... [15:46] lol [15:47] rvba, ok, what is their IAuthorization now? I think bac recently did some work on IAuthorizations that can explicitly pass their work off to another object. We should make sure that this takes advantage of the cache [15:47] gary_poster: the expensive part is the query, triggered by the call to getUtility(IArchiveSubscriberSet).getBySubscriber in checkAuthenticated of ViewArchive (lib/canonical/launchpad/security.py) [15:48] rvba, do you happen to have a stack trace for that? [15:48] gary_poster: that sounds like a solution. [15:48] gary_poster: yes, hang on. [15:48] gary_poster: http://paste.ubuntu.com/753787/ [15:49] rvba: are you qa-ing Bug:887078? [15:49] once that's clear, we can deploy and re-enable custom bugs listing [15:50] flacoste: I'm on it. [15:51] rvba, ok cool. That looks like we could take advantage of the cache pretty easily. Lemme see if I can find the magic authorization adapter... [15:51] (I see you are doing something else, np) [15:52] flacoste: rarg, in fact I QAed it this morning, I simply forgot to change the tag. Sorry about that. [15:52] Qa-ok. [15:52] gary_poster: cool! [15:57] I'm not sure which objects we are talking about here, but I suspect that we are already using DelegatedAuthorization, which I bet is what I was looking for. I'm slowed down by having to install stuff like ctags, sorry [15:57] gary_poster: not using pycharm? :) [15:58] bigjools, with my new-ish Clojure (lisp-y) interest, emacs has been getting my attention these days :-) [15:58] run away! [15:59] :-) [16:00] rvba, ok yeah, this is interesting [16:01] lib/lp/app/security.py has DelegatedAuthorization [16:01] it delegates to the raw authorization adapters [16:01] thereby skipping our cache entirely [16:01] Makes sense. [16:01] so... [16:02] we can think about this a few different ways [16:02] ViewSourcePackagePublishingHistory inherits from DelegatedAuthorization and delegates the checks to obj.archive. [16:02] right [16:02] my first coherent thought is that this abstraction bay be in the wrong place [16:02] may [16:03] Because it feels like the security policy ought to be in charge of its cache [16:03] so *it* ought to be able to see "oh look, it is delegated" [16:03] and *it* can look in the cache [16:03] and if it doesn't exist, do the adapter dance [16:04] that's less flexible than what we have now [16:04] but it ought to be a whole heck of a lot faster for cases like this [16:05] So let's think about an alternate case for a sec though [16:05] let's say we wanted to keep DelegatedAuthorization as is [16:05] in order to do that... [16:06] Maybe instead of calling checkAuthenticated in there we could use the checking method from LaunchpadSecurityPolicy [16:06] not only would it need to know about the cache, but it would need to be able to convert the cache answer to a real answer [16:07] because the cache answer is for a gievn participation [16:07] which means a given user [16:07] checkAuthenticated would need to look at the participation [16:07] (the request) [16:07] and compare the participation's user with the user it has [16:07] if they are the same, then we can use the cache [16:07] if not, we have to do our usual checks [16:08] that would be relatively easy to code, but it feels icky to me [16:08] this might be good enough for my problem :) [16:08] yeah [16:08] I don't love it, but it feels practical [16:08] let's talk about what feels nicer to me for just a sec though :-) [16:08] and see if something can fall out there [16:08] sure :) [16:09] I'm fuzzy about this participation thing though… [16:09] well, first, do you see what I mean about why it would be nicer, or am I on crack [16:09] What does it means exactly? [16:09] oh sure [16:12] so, the zope security system has this idea that multiple participants (think "principals," users or groups) can be involved in a security interaction. This allows modeling people granting permissions without escalating permissions. If I give you the ability to do something, and you try to do it, the security system should consider my permissions and your permissions, or else we are potentially in a privilege escala [16:12] tion scenario [16:12] that is unimprtant to us [16:12] we only allo w a single participation [16:12] and that is a request [16:12] which represents a security interaction between a user and the system [16:12] ok, hence the whole len(participations) > 1: raise RuntimeError("More than one principal participating.") [16:12] typically for the length of a transaction [16:13] precisely [16:13] so that's a participation [16:13] ok, thanks gary_poster. [16:13] is that clear-ish now, or should I try again? :-) [16:13] ok cool [16:13] so, my concern is that the cache on the participation is an artifact of the security policy [16:14] We could expose the cache in some way explicitly I suppose [16:15] Although... [16:15] Well, I have an old dislike of grabbing the request from the air [16:15] (thread local) [16:15] and I'd like to do that in as few places as possible [16:15] but anyway [16:16] gary_poster: why would we need the request? I suppose you mean because we need to get the user, but the user is provided when checkAuthenticated is called right. [16:16] ? [16:17] So if we expose the cache like you said, we could use it in DelegatedAuthorization.checkAuthenticated [16:17] rvba, we need the request, because it is the participation, and it has the cache that the security policy sets up. So if the authorization itself needs to check the cache, it needs to pull the request up [16:17] right rvba. It woud ideally be some kind of utility, I guess, if we did it that way [16:17] Ah ok, the security policy is on the request itself. [16:18] rvba, not quite, the cache is. Let's look back at authorization.py [16:18] wd = participation.annotations.setdefault(LAUNCHPAD_SECURITY_POLICY_CACHE_KEY,weakref.WeakKeyDictionary()) [16:19] cache = wd.setdefault(objecttoauthorize, {}) [16:19] LaunchpadSecurityPolicy is our security policy, obviously, Less obviously, instantiating it creates the interaction. [16:19] And yeah, there's the participation. [16:19] == request [16:19] with the cache [16:20] rvba, fwiw, I'm fine with a call of some sort too if you like, if you think it would go faster. Fine with irc too :-) [16:20] gary_poster: I was about to suggest the same thing :) [16:20] :-) [16:20] * rvba fires up skype. [16:20] skype ok? [16:21] yeah, cool rvba [16:21] I'm garyposter on Skype, rvba [16:23] gary_poster: I'm trying to find how to add a new contact, hang on :) === beuno is now known as beuno-lunch === gmb changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugtasks: 3*10^2 === Ursinha is now known as Ursinha-lunch [17:32] matsubara, Can you do exploratory testing of bug 885692. I think this bug fixes bug 603732 and bug 375331 too [17:32] <_mup_> Bug #885692: bug supervisors have more power than maintainers and admins < https://launchpad.net/bugs/885692 > [17:32] <_mup_> Bug #603732: If there is no driver a maintainer should be able to accept a bug nomination < https://launchpad.net/bugs/603732 > [17:32] <_mup_> Bug #375331: Some extra filebug options don't show up for projects not having a bug supervisor < https://launchpad.net/bugs/375331 > === beuno-lunch is now known as beuno [17:43] sinzui, yes [17:44] abentley: adeuring heads up, running out for lunch, bbl. [17:44] rick_h_: okay === salgado is now known as salgado-lunch === Ursinha-lunch is now known as Ursinha === salgado-lunch is now known as salgado [19:08] hi all [19:08] howdy poolie [19:09] hi there [19:09] what are you up to now rich_h_? [19:10] poolie: chilling in a conference room in AL while beating my head on a wall trying to figure out why this one tests fails [19:10] oh you're with gary? [19:10] hate that "hmm, one last test and all done..." the last ones know how to poke you [19:10] or deryck? [19:10] not atm [19:11] yeah [19:11] but hopefully later this wek [19:11] week that is [19:11] or spurious failures after a long test run [20:17] gary_poster: The ultimate solution to my problem: http://pastebin.ubuntu.com/754062/ (I did not realize that view were multi-adapters). [20:18] o/ abentley [20:18] abentley: ah, sorry, I should have spotted that. Glad you found it. [20:18] poolie: \o [20:18] who do i bug exactly, to fix problems i see with vcs imports? or should i just bug someone to add me to that team so i can fix them? [20:19] abentley, fwiw, I still think you will like the end result of your code better if you use the raw adapter registry [20:19] fix in the sense of failures, or they are just misconfigured, dobey? [20:19] if you want to help garden them i'm sure that would be welcome [20:19] dobey, have you already mentioned something in Launchpad questions? If so, I apologize, we're trying to work through the list. [20:19] poolie: well in this case it's misconfigured [20:19] gary_poster: This is test code, and it's passing, so I don't understand what more I'd want. [20:20] abentley: oh ok. I thought you were making a tool. What you'd want more: not to have to create a throw-away object. [20:20] jelmer, how could we do that for dobey? [20:20] gary_poster: no, i just spent ~30 minutes or so looking at 2.5 year old code that i thought was new :( [20:20] dobey :-( gotcha [20:21] gary_poster: and my understanding is that ~vcs-imports is a place most people don't want to be [20:21] gary_poster: Oh, I thought the API was the same whether I did it directly or on getGlobalSiteManager(). [20:22] poolie: it looks like ~canonical-bazaar is admin for ~vcs-imports, so we should be able to add another member :-) [20:22] and it doesn't help that i can't just configure a new import if someone else already owns a branch which i would like to set up as an import in the proper place [20:22] dobey, it's certainly true that we don't have experts on that code any more. :-/ [20:22] poolie: I wonder if we should make package imports and code imports more similar in this regard. code imports would benefit from out-of-date warnings as well. [20:22] so i guess even if i was on that team, i am not sure i would be able to fix this specific import [20:23] abentley: the API on the site manager is similar, but as I said, the site manager has adapter registries on it [20:23] that API is different [20:23] (the API of the adapter registries) [20:23] dobey: the main disadvantage of being in ~vcs-imports is that you get a dozen extra emails per day, with some spikes [20:23] dobey: what's the import? [20:24] https://code.launchpad.net/glib [20:24] jelmer: lp:glib, but it looks like someone set up an lp:glib/2.26 pointing at the git master [20:24] which is really annoying, because git master is not 2.26 [20:24] and the series are all messed up on that project [20:25] and other projects seem to have some imports set up, but don't have the series bits set up, so lp:foo doesn't work on them [20:26] dobey: ~vcs-imports won't really help for that, vcs import admins can only really change the source URL of code imports and remove them [20:26] dobey: ~registry can change a large set of projects that aren't hosted on Launchpad, including glib [20:29] abentley: ping [20:29] rick_h_: pong [20:29] hmm [20:30] abentley: know you're busy, but wanted to see if you get a sec if you could try out my branch with the indicator js plugin for the loading graphic? [20:30] rick_h_: sure, where is it? [20:31] abentley: it works here, but it feels fragile with css and curious if it's what was intended from the discussions [20:31] https://code.launchpad.net/~rharding/launchpad/buglists-loading-885272 [20:31] abentley: I had to update the css combine template [20:31] so make sure you regen that or add in the indicator assets css file [20:31] I'm not 100% sure how that gets "updated" for people [20:32] jelmer: and i have a feeling ~registry is not a team i can be in :) [20:32] dobey: so, in general, it seems like we are a bit too strict on who can change products that aren't hosted on Launchpad but merely tracked [20:32] s/on/about/ [20:32] right [20:33] it seems there are a lot of defunct teams set up to deal with these, too [20:33] dobey: I think it's just ~registry :) [20:33] dobey, any canonical employee can be in the team if they needs to manage the 1100 projects that other projects like Ubuntu rely on [20:33] https://launchpad.net/~gnome-python-maintainers is the "maintainer" for pygobject it seems, but the team has no administrator [20:34] dobey: I do think you could probably be in ~registry but you should probably check with one of the launchpad folks. Curtis is particularly active in ~registry [20:34] dobey, ~launchpad currently dominates membership, but a few years ago, it was Ubuntu staff [20:36] ah [20:36] dobey, you are now a member of ~registry. You will see lots of edit icons on projects now [20:37] sinzui: oh, ok; thanks [20:37] rick_h_: the makefiles updates combo.css. yui3-overlayindicator is present for me. [20:38] is there any way to deal with the issue of having the same branch of git being imported by multiple people (or rather, that it can't be)? [20:38] abentley: right, but combo.css is generated from bin/combine-css which I had to manually add a path to [20:38] abentley: and combin-css comes from the buildout templates [20:39] rick_h_: bin/combine-css is also generated by the makefile, AIUI [20:39] dobey: euhm, sortof [20:39] dobey: launchpad's URL checking is pretty naive, so if there are multiple URLs for a repository they can each be registered [20:39] abentley: ok, cool, sounds like you're good === matsubara is now known as matsubara-afk [20:43] rick_h_: I'm not seeing the spinner in firefox, and chromium looks busted. [20:44] abentley: any errors? I'm seeing them in both. [20:44] abentley: this branch doesn't have the backport for the chrome bug [20:44] jelmer: hrmm [20:44] so to view it I had to just manually change the html to disable the -disabled css [20:45] rick_h_: Uncaught TypeError: Cannot read property 'next' of undefined. [20:45] abentley: right, that's the chrome issue from yesterday [20:45] try to merge with devel I guess to correct that part [20:45] rick_h_: If you merge stable, that should go away. [20:45] abentley: I just cheated and hand changed the css rule hiding the overlay [20:46] abentley: right, just didn't do that today yet. Thanks [20:46] abentley: the image is in the center of the overlay'd div [20:46] so make sure to check for it in the center of the table [20:46] jelmer: i guess i also need to be a member of vcs-imports to be able to configure a branch as owned by vcs-imports? [20:48] jelmer: or should i just make ~registry the owner? [20:48] rick_h_: It should be visible from the top and the bottom, so if being vertically centred makes it hard to see, we probably shouldn't do that. [20:49] abentley: ok, so the stuff that this was working on was creating a single div overlaying the updating content with the spinner [20:49] abentley: we've got a larger spinner, 32px that's used with the grey'ing out of the content to show it's going [20:50] dobey: ~registry is fine as a branch owner as well [20:50] ok [20:52] rick_h_: I don't know what the answer is. Maybe two spinners. [20:52] rick_h_: Did you change the main spinner recently? [20:52] wgrant: yes, I needed one that would work on a grey background [20:53] wgrant: I guess Huw said to pick one until he got around to making one [20:53] rick_h_: Aha [20:53] Is it slightly larger than the old one? [20:53] wgrant: we've got two versions now, a 16 and 32px versions of the same gui [20:53] wgrant: shouldn't be, the px size is exact [20:53] The old one was already too big (it caused the page to jump around), but this one seems larger. [20:53] hmm. [20:53] it might push to the edge of the px more than the last, but it's exactly at 16 like the old [20:54] abentley: ok, does it show up for you though? [20:54] abentley: I guess more "does it work" for you and then we can go after the asthetics some [20:54] rick_h_: Unclear. I merged stable and now I'm dealing with the aftermath. [20:55] abentley: lol, ok. I'm running on juice with my mifi, so going to head to a coffee shop I think. [20:55] abentley: so back online in a bit [20:55] rick_h_: cool. [20:55] sinzui: hrmm; i can't seem to change the development focus on glib. [20:56] dobey, ~registry does not maintain it [20:57] dobey, Robert Ancell is in ~upstream, and he is also in ~registry [20:57] right, ok [20:58] dobey, ~jjardon can add you to the team [20:59] dobey, we made him the maintainer of several gnome projects. He will happily add people who can help fix the series. [21:01] is "release url pattern" on a series a regex, or just a glob? [21:05] i guess a glob, otherwise .* could have different results i suspect [21:07] its a glob [21:16] is there some way to specify a git branch to import now, rather than it implicitly always being master? [21:16] Add ',branch=foo' to the end of the URL [21:18] ah ok [21:22] bah, coffee shops need more than 6 tables. Walk out there and no space [21:24] hrmm, imports failing [21:24] http://launchpadlibrarian.net/86214321/registry-glib-trunk.log [21:24] dobey: the URL is incorrect, the /git/ bit shouldn't be there for git.gnome.org IIRC [21:25] jelmer: oh, hrmm; it's there for the git+ssh versions [21:25] the standard git server doesn't error out when a repo doesn't exist, it just hangs up, hence that error message [21:25] yeah, git://git.gnome.org/glib.git seems to work, git://git.gnome.org/git/glib.git doesn't [21:29] jelmer: did you update the URLs somehow? i didn't see how to do it, so i just deleted the glib branch and recreated it, but i see the gobject-introspection ones are working now [21:30] dobey: there should be a link down the page "Edit import source or review import" [21:30] dobey: maybe you have to be in ~vcs-imports to see it [21:31] jelmer: i don't see those. [21:32] yeah, that's ~vcs-imports only i think [21:32] dobey: I don't think it's a problem for us to add you to ~vcs-imports [21:32] rick_h_: So, it looks nice, and the grey overlay helps a lot. But it seems to activate only on the first load, in both Firefox and Chromium. [21:32] jelmer: ok :) [21:32] unless you are allergic to email :) [21:33] abentley: ok, will look [21:34] mwhudson: i have procmail :) [21:34] dobey: lucky you get any email at all then! [21:35] * mwhudson doesn't trust procmail [21:35] well, my ability to drive it, really [21:35] mwhudson: well, i get the mail i care about :) [21:36] rick_h_: easiest way to trigger a load is probably the sort buttons. [21:37] abentley: ok thanks. Yea it looks like the show/hide is triggered. Not sure if it's too fast or just not showing [21:39] abentley: ah, nvm, I see it. Thanks for the heads up [21:39] rick_h_: np. [22:32] abentley: ok, pushed fixes, the indicator spinner dom element was removed via the ajax response :) [22:32] abentley: if you get a sec to see if that looks better for you, we can even but huwshimi and see if this is what we wanted and if I should try to land it [22:35] huwshimi, hi, i'd like to have a link to download a tarball of branch contents, within the main lp ui [22:36] can you help me work out where that ought to go (both which page and where on the page?) [22:36] poolie: Sure [22:36] there is a bug... [22:37] bug 897537 [22:37] <_mup_> Bug #897537: no link to download branch tarball within the main lp ui < https://launchpad.net/bugs/897537 > [22:39] huwshimi, so... [22:39] i can imagine this would lead in to a much larger redesign [22:39] perhaps without end [22:40] actually you know all this [22:40] do you want to talk about it now or just reply on the bug later? [22:40] poolie: Let's have a quick chat now [22:41] poolie: So this link is to download the source of any branch at any revision? [22:41] yes [22:42] with obviously an important special case being getting the source of the tip of the branch, and an important case of that being getting the tip of trunk [22:42] poolie: And can we only show links only on loggerhead or can we have them in our main ui as well? [22:42] perhaps, until lp has good main-webapp per-revision pages, we're better off focussing on just getting the tip, and people can click through to loggerhead to get past revisions [22:43] not quite sure what you mean [22:43] the point of the bug is that we ought to show them in the main ui [22:43] the urls are predictable so the main ui can just make them up [22:43] poolie: Right, I'm just checking we can actually do that [22:43] ah awesome :) [22:43] i think :) [22:43] hehe [22:45] So I imagine it would be useful to display a "download the source" link for on https://code.launchpad.net/loggerhead and https://launchpad.net/loggerhead/+download and https://code.launchpad.net/~debian-bazaar/loggerhead/experimental [22:46] And probably http://bazaar.launchpad.net/~debian-bazaar/loggerhead/experimental/files [22:46] yep [22:46] that last one, bazaar.l.n is loggerhead, so that's a separate issue [22:47] specifically bug 897535 [22:47] <_mup_> Bug #897535: tarball download link only appears on per-revision page < https://launchpad.net/bugs/897535 > [22:47] yeah [22:48] I would be a little hesitant to put source download links on project overview pages (https://launchpad.net/loggerhead). Mostly as it might create confusion as to how to get the code properly (most of the time we don't want people to just download the code, we want them to grab a bzr branch). [22:48] yep [22:49] is already a bit "omg what do i do now" [22:49] :/ [22:49] perhaps part of the problem there is that the headings are not very visually distinct? [22:49] the font is barely any larger and the whitespace is not helping [22:49] actually now that I think about it if we add a get the source link on https://launchpad.net/loggerhead/+download it should probably be a link to https://code.launchpad.net/loggerhead so people can decide whether they want a branch or a tar ball [22:50] yes [22:50] https://code.launchpad.net/loggerhead has a link back [22:50] i think both of them should try to say "or perhaps you want a branch/a tarball instead" [22:52] it is worthwihle i suppose [22:52] it feels a bit like a kludge for people ending up on the wrong page :) [22:53] but i suppose it's natural people will go to a 'wrong' page that as they explore [22:56] I'd be inclined to be fairly specific with the wording too. On a branch page I would write: [22:56] Get this branch: [22:56] bzr branch lp:~debian-bazaar/loggerhead/experimental [22:56] or download .tar.gz [22:56] or something along those lines [22:57] yeah [22:57] so [22:57] often, people should either get an actual release tarball, or they should get a proper branch [22:57] but if they do want a tarball, it ought to be possible to find how to do that [22:58] so +download links to the branch list [22:58] the branch page offers you a tarball with the wording you gave above [22:58] and... should the list-of-branches page do anything? [22:59] Do you mean this page: https://code.launchpad.net/bzr ? [23:00] If so I would think it would be useful to have a .tar.gz link on that page too. I imagine some people will be using branches to host content that people would want to get at without using bzr (if it was a js library or some design files etc.) [23:01] The wording would be a bit trickier as there is already "There are download files available for Bazaar." [23:02] so as a special case, it offers you a tarball of the development focus? [23:02] wfm [23:02] the text on that page is an interesting case [23:02] the freeform text above the table [23:02] because it mixes together [23:02] stats [23:02] things you're supposed to take action on, if you're a developer [23:03] "perhaps instead you want... download files" [23:03] poolie: Yeah, we already have the special case of "bzr branch lp:bzr" so this would fit with the download of the same branch [23:03] instructions, and navigation [23:03] poolie: I know I was just trying to decipher everything going on there [23:04] so i think it all blurs together [23:05] :/ [23:05] perhaps we should just delete/hide the stats [23:06] Active reviews probably should be a link in the sidebar. It is a "related content" link [23:06] rick_h_: sorry, EOD. Let's chat about it tomorrow. [23:06] poolie: I'm consdering coming to the xmas part [23:06] rick_h_: (End Of Day) [23:06] abentley: sure thing, I'll send an email in case huwshimi gets any time to look at it UI wise [23:06] lifeless, awesome [23:10] poolie: wondering about couch camping or something [23:10] i will ask [23:12] lifeless, you're welcome to [23:12] stay here [23:12] no warranty as to comfort :} [23:12] lifeless: Sarah and I can probably find somewhere for you too, if you wish [23:12] huwshimi: email on the way, if you get a sec to check it out. I'll be in/out online tonight so feel free to ping in irc if you want to chat [23:13] huwshimi: and I'll catch you when I get back (going to hit dinner and such in a bit) [23:13] rick_h_: Cheers, will do. [23:13] huwshimi, ok this sounds like a plan: on the branch list page [23:14] get rid of the counters [23:14] active reviews and download files into the portlets [23:14] ... [23:14] can we get rid of the first sentence? [23:15] maybe.... [23:15] add 'browse', 'tarball' links to each row? [23:16] or [23:16] poolie: It might be nice to make the format of that first sentence like it is on a branch page, with a few wording changes to make it clear this is just the dev focus [23:16] maybe add tarball items only for series branches? [23:18] "get a copy of the branch using the command" is a nice way to put it, but maybe a little redundant [23:22] huwshimi, ok that sounds like a plan [23:22] anything else? [23:23] poolie: I think that all sounds pretty good [23:27] flacoste: around ? [23:27] flacoste: quick question if so