/srv/irclogs.ubuntu.com/2010/11/04/#launchpad-dev.txt

wallyworldthumper: you have an answer for that bzr packaging question?00:10
maxbbzr packaging question?00:17
wallyworldmaxb: +00:26
wallyworldmaxb: the version of bzr shipped with lp is 2.2.000:26
thumpersorry, just back from lunch00:26
maxbhmm. probably time to get to 2.2.100:26
wallyworldwe need to upgrade to either 2.2.1 or 2.2.2 and there's a timing issue that thumper needs to have input on00:26
maxbIsn't there a 2a conversion bug fix we really really want in 2.2.1?00:27
thumperwallyworld: lets get 2.2.1 in now00:27
wallyworldyes. but there's also a spin wait issue fixed in 2.2.200:27
thumperwe can get 2.2.2 when it is released00:27
wallyworldok 2.2.1 it is00:27
lifelessback00:34
lifelessthumper: the oops was new, it should have synced now00:34
lifelessleonardr: A thought on web performance00:35
lifelessleonardr: if its easy to use an API badly, people will use it badly.00:35
lifelessleonardr: group based entry and exit signatures for high latency RPC is a way to make it easy to use an API efficiently and hard to use it poorly.00:36
leonardrlifeless, can you spell out "group based entry and exit signatures for high latency RPC"? are you talking about setting up batch operations and callbacks?00:37
thumperlifeless: oops still not matching00:38
lifelessthumper: :(00:40
lifelessleonardr: batch operations is one way of thinking about it00:40
lifelessleonardr: less-than-one-roundtrip per object returned from lookups, a powerful query language, changes to multiple objects in <3 round trips - that sort of thing.00:41
lifelessleonardr: but also simply moving away from 'an object is retrieved by reading a location' as an idiom.00:42
leonardrlifeless: do locations now designate sets of objects, or something else?00:43
lifelessleonardr: Perhaps API functions. I don't know - I was replying to your comment about streamlining being orthogonalish to making performance fast00:47
lifelessleonardr: the key points I wanted to note are:00:47
lifeless - if its easy to use in a poor way, people will (and then blame us)00:47
lifeless - for high latency environments (e.g. SQL, let alone internet ops) operations on group with decomposition for single cases work better than operations on atoms with composition to talk about many things.00:48
lifelessleonardr: I'd be delighted to help frame the problem, satisfying criteria, and brainstorm with you on what changes we should do.00:48
wallyworldthumper: ignore that mp email - typo in branch name. will redo00:49
lifelessleonardr: I don't want to suggest specific solutions [at least, not without really focusing on it - its nontrivial]00:49
thumperwallyworld: ack00:49
leonardrlifeless: sure. my main concern is that although "difficult to use poorly" is possible, it doesn't go very well with "easy to use on an absolute level"00:50
lifelessleonardr: so, 'easy to use in a slow way' is different to 'easy to use in a fast way'00:51
leonardri can imagine systems like the one you're imagining, but i see users regarding them as further from their expected "web api" experience than what we have now00:51
lifelessleonardr: the slow way case is something to avoid, because users are dissatisified and we pay more.00:51
leonardri'm certainly not arguing *for* anything being slow, but i think the price of making it really easy to get started may be that the thing you create when you get started is slow00:53
lifelessleonardr: All - as far as I know without exception - of our current users complain about performance. And the usability angle seems, to me, to be tied into OAuth (which we need) as well as documentation (which is IMO poor compared to (for instance) the AWS web API docs)00:53
lifelessleonardr: now, much of the performance issues may be request completion times, not latency - we don't really know [yet].00:54
leonardrmaybe by making the web service uniform we can "free up" some complexity that we can then use on a more complex, but faster, usage model00:54
lifelessleonardr: and thats why I'm not personally planning on focusing on the API until we have a 1 second 99% completion time with no pages that violate that.00:54
lifelessleonardr: thats an interesting angle00:55
leonardrlifeless: that kind of bank shot is the only way i think that usability has much to do with performance right now00:56
leonardri think we're in a good position to massively improve usability without affecting performance at all, while making it easier for us to optimize specific cases00:56
leonardrbut as i told gary, i don't see any deep connection00:56
lifelesswhen you talk usability, I think object serialisation, URL routing and documentation.00:56
lifelessWhat are you thinking about when you talk usability ?00:56
leonardrlifeless: same kind of thing00:56
leonardrespecially documentation00:57
lifelessso, I guess I'd say that right now.00:57
lifelessWe should - based on jml's strategic goals - just focus on performance.00:57
lifelessfor the API00:57
lifeless(riffing)00:59
leonardrlifeless: that's legitimate, but my gut feeling is that we'll either be not changing the framework at all, or adding complexity00:59
lifelessthere are I think two broad aspects to API performance00:59
lifeless*) implementation of specific calls00:59
lifeless*) structure of the API00:59
lifelessin the current structure the implementation of specific calls is multiplied by latency because we have a chatty model01:00
lifelessso we can improve performance in two broad ways: address the structural issue, at which point specific call implementations will have a diminished but still significant impact (less calls), or we can polish the implementation of specific calls up, so that we can accurately assess the01:01
lifelessoverall balance between latency and service time01:01
leonardrlifeless: my general belief is that the current model, chatty as it is, is the one that makes most sense to python programmers because it comes the closest to letting them pretend they're working with local python objects (this was our original goal)01:02
leonardrobviously, pretending that the network boundary isn't there is going to cause problems01:02
lifelessleonardr: We chatted about this on-list.01:02
lifelessleonardr: I'm of the considered opinion that that goal is a problem.01:02
leonardrthat's fine, but there's a price to be paid: the alternate system will only be "easy to use well" in the sense that it's easier to use well than poorly01:03
lifelessleonardr: our us of an ORM in launchpad with similar goals (make it look like regular POPO code) is a direct cause of the performance quagmire we're in.01:03
lifelessleonardr: ec2's API has /massive/ adoption and it has paid that price.01:04
spivFWIW, I share the view that pretending that remote objects are like local objects isn't good, because they aren't in terms of performance, concurrent users, connection reliability, etc.01:04
lifelessapples and oranges to be sure.01:04
leonardri'm fine with the direction this is going but i feel very uncomfortable putting the "easy" description anywhere near it01:04
lifelesssure01:05
lifelessstrip that out, its pretty subjective.01:05
leonardrok01:05
lifelessvision: the default way of using Launchpad APIs will be:01:05
lifeless - fast01:05
lifeless - correct01:05
lifeless - obvious01:05
spivI don't think lifeless meant "easy" in the sense of a DWIM API, just that the APIs should be high on the rusty scale.01:05
lifelessright01:06
lifeless10 please01:06
leonardrspiv: does not compute, is rusty a person or an adjective?01:06
spivhttp://sourcefrog.net/weblog/software/aesthetics/interface-levels.html http://ozlabs.org/~rusty/index.cgi/tech/2008-03-30.html http://ozlabs.org/~rusty/index.cgi/tech/2008-04-01.html01:07
spiv(I like the first link's pithy one-page summary, but the second and third are from Rusty himself and go into a little more detail)01:07
leonardrok01:07
spiv(And add a couple more levels?)01:08
leonardr"getting it wrong" here meaning "taking a long time" or "requiring a lot of round trips"01:08
lifelessthree things I think01:09
lifelessthe two you specify01:09
lifelessand thirdly doing something not obvious right - like squashing someone elses change to a bug without warning, adding a comment to the wrong bug, etc.01:10
leonardrlifeless: if i may sum up my pov from a planning perspective, if we are going to go ahead and do a totally new web service, it's worth investigating a this-ish way to do it. but this morning i heard that our work wasn't to be coupled with the internal api work -- not that things can't change within a day01:10
lifelessI know you've been extremely careful about that, I add it here so that when we talk with *other people* there is no confusion01:10
leonardrok01:11
lifelessactually and a fourth thing01:11
leonardrwhat we're talking about is a new web service, possibly with a new custom client, possibly not. if we leave the old web service intact, people will use it instead and get bad performance01:11
lifelessthe 'obvious' that I mentioned a page or so up.01:11
leonardryeah, i meant to click on that to expand01:12
lifelessEven if its not like POPO, it should be obvious how to achieve something.01:12
lifeless(plain old python objects)01:12
leonardrlifeless: so, like the way that mapreduce is obvious?01:13
lifelessleonardr: rotfl01:13
lifelessuhm01:13
* leonardr semi-serious01:13
leonardrwe give you two simple concepts that may not be what you've encountered before, and the system is built from those, and it's incredibly scalable01:13
lifelesshere is a definition of obvious that I like: Once I've read the overview docs and played with a hello-world equivalent, I should be able to guess at the right place to look for the details on achieving something.01:14
lifelessleonardr: yes, in that regard mapreduce very much meets the definition of obvious I'm giving.01:14
lifelessleonardr: finding good axioms (like mapreduce) can be a great way to have a very clean very fast system01:15
leonardrlifeless: in that case i'd like to reiterate that we may have to deliberately break backwards compatibility to stop tempting users with popos01:15
lifelessleonardr: so, separation of concerns here01:15
lifeless*) We need a revamped API that /can/ be fast, correct, obvious all at once01:16
lifeless*) We need to transition users to this revamped API01:16
leonardrok01:16
lifeless*) We need to keep supporting the older API in *some* fashion for *some time*01:16
lifeless*) We need to keep meeting the web UI's ajax needs.01:16
lifeless   (This may be a non-API problem. Or it might be something we do simultaneously. It would be nice to keep the current 2-birds 1-stone approach)01:17
lifelessleonardr: on the in-process API stuff01:17
leonardrlifeless: after what i've seen this year, if we have a specialized ajax service, i would not put it past our users to hack into it just so they can keep using pops01:18
leonardrpopos01:18
lifelessleonardr: I wouldn't couple them together. The in-process stuff has a much lower churn cost and will involve experimentation. Lots of it.01:18
lifelessleonardr: I think the revamping of APIs needs room to experiment and breath too01:18
lifelessleonardr: but there's no reason why it should try the same things at the same time.01:18
lifelessleonardr: if we decide later on that the things are just so darn similar, we can focus on harmonising them at that point.01:19
leonardrlifeless: see if this interests you01:19
leonardrlet's stipulate that right now the web service is a big bushy mess01:19
lifelessso stipulated01:20
leonardrthe thing i planned out last year, but haven't been able to tackle just yet, will comb its hair and make it look presentable, without actually getting rid of any of the hair01:20
leonardrbut, once the hair is in the appropriate place (and this is the place where the analogy falls apart), it may resemble something within spitting distance of a "sets and ways of operating on sets" type idea01:21
lifelessok01:22
lifelessso I've no particular preconception about implementation or route-to-get-there.01:22
lifelessimprovements to what we have are still improvements.01:22
leonardrat that point we may be able to go from 100,000 hairs all perfectly arranged to a single smooth piece of plastic (to bring back the analogy despite it still not working)01:23
leonardras i get back into the stuff i wrote last year, i will keep this alternate design in mind, and see whether we can really get there incrementally01:23
lifelessawesome01:24
wallyworldspiv: that bzr 2.2.1 upgrade has been approved and is currently being landed via ec201:24
wallyworldlifeless: with the reference to tempting people use popos etc  *by design*, given the impedance mismatch between layers and the distributed computing implications and the resulting performance/robustness issues etc, i'm happy we seem to be moving to a model where it's recognised that may no longer be the best approach :-)01:27
* thumper relocates01:36
wgrantWe have an SSO OOPS in #launchpad. Where should the user be sent?01:37
* mwhudson is tempted to say "coventry"01:37
wgrantI wonder if they've revived the support link...01:37
* wgrant goes hunting.01:37
wgrantAha, it is back.01:38
spivwallyworld: yay, thanks!01:41
wallyworldspiv: np. not sure how long it will be held up in ec2 :-)01:41
LPCIBotProject devel build (184): SUCCESS in 3 hr 34 min: https://hudson.wedontsleep.org/job/devel/184/01:45
LPCIBot* Launchpad Patch Queue Manager: [r=deryck][ui=none][bug=670352] Prevent {count} from showing up on01:45
LPCIBotofficial bug tags management page when item.count is undefined.01:45
LPCIBot* Launchpad Patch Queue Manager: [r=leonardr][ui=henninge][bug=636000] Wraps configuration links in01:45
LPCIBotthe product involvement portlet with a collapsible that starts01:45
LPCIBotcollapsed when all configuration steps have been taken.01:45
LPCIBot* Launchpad Patch Queue Manager: [r=jml,01:45
LPCIBotmbp][ui=none][bug=645768][no-qa] Officially added a new test fixture01:45
LPCIBotto help with the use of feature flags.01:45
LPCIBot* Launchpad Patch Queue Manager: [r=leonardr][ui=none][no-qa] Integrate the examples added to the01:45
LPCIBotlaunchpadlib docs by https://launchpad.net/arsenal01:45
LPCIBot* Launchpad Patch Queue Manager: [r=gmb][ui=none][bug=664571] It's now possible to update an existing01:45
LPCIBotBugSubscription to have a new BugNotificationLevel.01:45
LPCIBot* Launchpad Patch Queue Manager: [r=mars][ui=none][bug=532055] Fix grammatical errors that show up01:45
LPCIBotwhen integrating a desktop with the web service.01:45
LPCIBot* Launchpad Patch Queue Manager: [r=allenap][ui=none][bug=664096] Allow the bug reporter to transition01:45
LPCIBotaway from Fix Released bug task status.01:45
lifelessStevenK: yo01:47
wgrantjelmer: Thanks.01:55
lifelesswallyworld: indeed.01:58
cody-somervilleholy cow. how many times is the code page for projects going to change? lmao01:58
lifelesswallyworld: I think you can write tasteful explicit popo stuff, but its often a bad idea ;)01:58
lifelesscody-somerville: hmm ?01:58
cody-somervillelifeless, the link to pending reviews for a project seems to have moved several times in the last few weeks on the code.launchpad.net/$PROJECT page.01:59
StevenKlifeless: Hm?02:06
lifelessStevenK: can you please change hudson to not publish subsequent successes02:08
StevenKlifeless: I've changed it to 'failure and fixed'02:08
lifelessthank you!02:09
thumpercody-somerville: yeah... bit of a PITA IMO02:30
thumperwallyworld: ping02:51
wallyworldthumper: yo02:51
thumperwallyworld: I vaguely remember you using a method in a test that got notification messages out of the response object02:52
thumperwallyworld: do you remember it?02:52
wallyworldmakeQuestion02:52
wallyworldum, no not that02:52
wallyworldyou mean for the branch alias stuff?02:52
thumperyeah02:53
wallyworldit's in test_launchpad, near the top from memory. i'll have a look02:53
wallyworldthumper: lib/canonical/launchpad/browser/tests/test_launchpad.py, there's a _validateNotificationContext() method02:55
wallyworldi think this is what you are after?02:56
thumperwallyworld: ta, and yeah, I think so02:56
* thumper shaves a yak's butt03:06
wallyworldthumper: careful of the dags. they're a lot bigger than on sheep03:07
* thumper ducks the dags03:08
lifelessewww03:08
lifelessboom- lp.soyuz.windmill.tests.test_ppainlineedit.TestPPAInlineEditing03:39
StevenKlifeless: And here I was about to tell you that db-devel is at 100% and devel is at 80% in Hudson03:41
wgrantHm, the QA bot just de-qa-ok'd a whole lot of bugs.04:24
lifelessle sigh. Yes. We just moved to a new devpad04:24
lifeless100GB more disk and more memory.04:24
wgrantAnd more flakiness?04:25
lifelessnah04:25
lifelessbut we had some migration friction04:26
* StevenK smacks the QA tagger04:29
lifelesswgrant: in fact, some of its changes are totally right04:31
lifelessmultiple landings linked to the same bug04:31
wgrantHmm.04:32
lifelesswhats the magic duck to wave to get 'current user' in lp code ?04:56
wgrantgetUtility(ILaunchBag).user or something like that.05:02
wgrantBut if you do that, you will be haunted forever.05:02
* lifeless prepares to be haunted forever05:02
lifelessactually, its a participation lookup I need05:03
lifelessinteraction.get_current_principal05:04
wgrantYou could do that.05:04
wgrantBut that's used less than LaunchBag.05:04
lifelessOTOH its correct.05:07
wgrantLaunchBag is not?05:07
wgrantIt's ugly, but not incorrect TTBOMK05:07
lifelessits redundant05:08
lifelessthat permits skew05:08
lifelessskew leads to bugs05:08
lifelessuse the anger05:08
lifelesswgrant: although arguably in this case its ok.05:14
* lifeless tosses and turns05:14
lifelessStevenK: ping?05:22
StevenKlifeless: Hm?05:35
lifelessStevenK: spm was waiting to help you with qa05:37
lifelessStevenK: you disappeared without saying anything05:37
lifelessStevenK: so we were trying to get ahold o fyou05:37
wgrantI wonder if PQM can get into testfix in the next half hour.05:51
wgrantIf it doesn't, I'll be having a branch land first time :(05:51
=== almaisan-away is now known as al-maisan
wgrantGrar.07:39
wgrantIndeed it did not land the first time.07:40
wgrantIt was submitted.07:40
wgrantBut nothing.07:40
lifelessdinner time07:40
wgrantjelmer: What did PQM whinge about this time?07:41
lifelessdoes anyone know what sends mail for merge proposals ?08:03
lifelesslooks like merge-proposal-jobs08:06
=== al-maisan is now known as almaisan-away
wgrantlifeless: I believe that's the case.08:10
wgrantlifeless: Could you check the PQM history to see what happened to my branch?08:10
lifelessnom nom nom08:10
wgrantClearly.08:10
lifelessjml: https://code.launchpad.net/~lifeless/launchpad/recipes/+merge/4005008:19
* lifeless steps away08:19
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
mrevellHowdy09:10
adeuringgood morning09:32
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
wgrantjelmer: Ah, yay :(10:28
wgrantYet Hudson remains happy.10:29
deryckMorning, all.11:00
marsmorning11:33
=== mrevell is now known as mrevell-lunch
=== mrevell-lunch is now known as mrevell
marsStevenK, thanks for setting my MP to 'Work in Progress'.  I forgot you should do that for larger needs-fixing branches.12:59
=== fjlacoste is now known as flacoste
=== matsubara is now known as matsubara-lunch
=== al-maisan is now known as almaisan-away
=== matsubara-lunch is now known as matsubara
=== deryck_ is now known as deryck
=== deryck_ is now known as deryck
jmlflacoste: hey15:56
flacostehi jml15:56
jmlflacoste: I was told recently that we don't have morphing dialog widgets yet15:56
flacostewe don't15:56
jmlflacoste: I'm surprised15:57
flacostewhy?15:57
jmlflacoste: they were a very hot topic two years ago15:57
flacostethey were15:57
jmlflacoste: why didn't we do them?15:57
flacostebecause we never reach a point that we had a workflow that needed them15:57
flacostewe actually have now15:57
flacostewe have a wizard widget15:57
flacostewhich is going to see some use15:58
flacostethat widget should have the morphin behavior15:58
=== Ursinha is now known as Ursinha-lunch
jmlwe have a wizard widget?15:58
flacosteif it doesn't have already15:58
flacosteit's in lazr-js15:58
jmlwho's planning on using that?15:58
flacosteand deryck has a branch adding it to launchpad15:58
flacosterockstar had a use for it15:58
flacosteand I think we are using it for the new subscription stuff15:58
jmltbh, I don't care about the morphing part. I care about usability & consistency w/ the rest of Canonical web stuff.15:58
jmlflacoste: cool.15:58
jmlflacoste: thanks. that helps :)15:59
rockstarjml, if only we could get a new lazr-js landed...15:59
flacosteanything else in canonical does morhping yet?15:59
flacosterockstar: does your wizard widget do morphing?15:59
rockstarflacoste, no.15:59
rockstarflacoste, I was going to do that after the fact.15:59
rockstarflacoste, but the fact that it's been pretty difficult just to get this lazr-js upgrade in really killed momentum there.16:00
jmlrockstar: I have every confidence in you16:00
jmlrockstar: you can do it.16:00
rockstarjml, I know I CAN.  It's whether or not I have the time.  :)16:00
jmlrockstar: do you have anything more important to do than make recipes rock?16:00
rockstarjml, I suspect my rotation into U1 will provide a bit more time for lazr-js hackery, since I'll be doing mostly js work anyway.16:01
flacostelunch time16:01
=== Guest63625 is now known as jelmer
=== benji is now known as benji-lunch
=== beuno is now known as beuno-lunch
jmldanilo: where are we at with importing upstream translations?16:42
danilosjml, importing them into LP projects works, we are finishing automatic import into Ubuntu from there16:43
jmldanilos: and once they are imported into Ubuntu, they'll be available as (specially marked?) suggestions for Ubuntu translation?16:44
danilosjml, no, they are already available as suggestions, but we don't really want to set them up all because migrating is going to be harder later16:45
danilosjml, they will be automatically used in Ubuntu16:45
jmldanilos: " migrating is going to be harder later"?16:45
danilosjml, well, in order for us to scale, we're actually going to be using the same table rows for both upstream and Ubuntu translations (fwiw, more than 85% of them are identical)16:46
danilosjml, so, if we import all upstreams now, we'd have to migrate when our current feature work gets rolled out16:46
danilosjml, and doing any live migration is slow and painful, and even though we'll have to do some, we want it to be minimal16:47
jmldanilos: hmm. I think I understand. Mind if I try to say the same thing in my own words?16:48
danilosjml, not at all :)16:48
jmldanilos: we can import translations into LP projects today;16:48
jmldanilos: we have WIP right now to automatically import those into Ubuntu, making those imported translations the actual translations for Ubuntu16:49
jmldanilos: we also need to do some data entry to set up imports for all of the interesting projects16:49
danilosjml, that's right16:49
jmldanilos: but we aren't going to do that yet because we need to do some data migration first, in order to be even remotely scalable16:49
jmlis that it?16:49
danilosjml, that final thing you said is the work that is ahead of us as well16:49
danilosjml, well, one before final ("do some data entry")16:50
danilosjml, as for the final thing, yes16:50
jmldanilos: I'm not sure what you mean by that. Do you mean there's also current programming work involved in doing it?16:51
danilosjml, how about a quick call16:53
jmldanilos: ok :)16:53
danilosjml, mumble has not really worked for me today, but let's try again :)16:54
lifelessmorning17:02
jmllifeless: hi17:03
lifelessoh hai17:03
jmldanilos: we have exports already, right?17:04
lifelessjml: when are we talking17:05
lifelessflacoste: ^17:05
jmllifeless: in 55mins time17:05
danilosjml, we have some exports targeted at upstreams, but it's not really what'd we call really a feature as part of seamless process if anyone wanted to use it17:06
jmldanilos: thanks.17:07
allenapDoes anyone remember how to deal with community contributions to lazr code?17:07
allenapIt's a long time since I've done it.17:07
jmlallenap: poke them in the eye, take their money and run for the hills?17:08
jmlallenap: hmm, maybe I'm thinking of something else.17:08
jmlallenap: what makes it different from dealing w/ community contributions to LP?17:09
allenapjml: That'll do though :)17:09
allenapjml: I haven't dealt with one of those in a while either.17:09
allenapjml: I assume I need to check that they've signed a contributor agreement. Then I wondered what's the accepted way of landing to (in this case) lazr.restfulclient.17:10
jmlallenap: I think that's pretty standard across Canonical17:10
* lifeless hates on testfix17:15
lifelessyou know what I think would be most useful17:15
lifelessan indicator that we're in testfix17:15
lifelessor not17:15
jmllifeless: bug 424060 (also the related bug 422964)17:20
_mup_Bug #424060: Impossible to know whether we are in testfix <build-infrastructure> <feature> <Launchpad Foundations:Triaged> <https://launchpad.net/bugs/424060>17:20
_mup_Bug #422964: testfix mode should stop the queue, rather than rejecting new items <build-infrastructure> <test-system> <Launchpad Foundations:Triaged> <https://launchpad.net/bugs/422964>17:20
lifelessjml: ah17:20
=== almaisan-away is now known as al-maisan
=== benji-lunch is now known as benji
=== beuno-lunch is now known as beuno
=== Ursinha-lunch is now known as Ursinha
=== brianchidester is now known as brianchid
=== salgado is now known as salgado-dr
=== al-maisan is now known as almaisan-away
deryckah, wifi again.18:56
abentleywgrant: around?  I'd like to understand bug #645620 better.19:00
_mup_Bug #645620: Deleting recipe leaves SourcePackageReleases with no traceability <recipe> <Launchpad Bazaar Integration:Triaged> <https://launchpad.net/bugs/645620>19:00
cr3leonardr: if I want to extend the information exported by lazr.restful which would need to use the Request object, might there be a way to adapt Entry or ResourceEntry or somesuch so that when fields are extracted from my adapted object, then my own Entry could inject it's on context sensitive information?19:01
cr3err, s/context sensitive/request sensitive/19:01
leonardrcr3: i kind of think you want to create a new resource type?19:02
leonardrcan you spell out the request/response you want to do?19:02
cr3leonardr: I'm not sure if I can just define a new resource type because I think I'd need to adapt it for another request interface as well, and all that19:06
leonardrcr3: in that case i need a little clearer picture of what you're oding19:07
cr3leonardr: for example, lets say I want to attach the version to objects returned by the restful interface, obj.version19:07
leonardrcr3: this is the web service version, or something else?19:08
cr3leonardr: yes, web service version19:09
cr3leonardr: I realize it's redundant information because I'm making a request against a versionned url, but I'd like the remote object to carry that information for debugging purposes19:09
leonardrcr3: ok, the best thing might be to subclass EntryResource and register your subclass wherever EntryResource is retrieved19:10
leonardrbenji might be able to put that better than i19:10
cr3leonardr: if someone could figure how to make IJSONPublishable(obj) in _resource.py return anything other than EntryResource, that'd be awesome!19:11
* benji reads19:12
leonardrcr3: couldn't you register your own IJSONPublishable adapter for your objects?19:12
cr3leonardr: I tried and it didn't work, I'll try to remember why...19:14
benjia custom IJSONPublishable adapter sounds to me like the way to go19:16
benji...which would probably be a subclass of the stock adapter19:16
cr3leonardr: my understanding is that I need to adapt EntryResource to provide the IJSONPublisher interface, but that never gets resolved in ResourceJSONEncoder19:16
cr3benji: class Foo: implements(IJSONPublishable); adapts(EntryResource); def toDataForJSON(self): import pdb; pdb.set_trace(); never gets called19:17
leonardrcr3: sorry, benji's -fu in this matter is stronger than mine, and i have to work on other stuff19:18
benjicr3: you have to register the adapter so the component machinery knows it exists19:18
cr3benji: I also had something like this in my configure.zcml: <adapter factory="bar.Foo" />19:19
benjicr3: don't you want something like adapts(EntryResourceWithVersion) instead of adapts(EntryResource)?19:20
cr3benji: I meant EntryResource literally though, to override the one in _resource, not just for a specifically adapted class+version19:23
* cr3 had to lookup the latest lazr.restful code just in case "EntryResourceWithVersion" actually existed :)19:23
benji:)19:23
benjiso you want the version on all objects then?19:23
benjihmm, I'm surprised you didn't get an error on start-up, it sounds like you've created a conflicting registration (two adapters for the same set of interfaces)19:24
cr3benji: I'd like to make a best effort, so if I could override EntryResource with my own toDataStructure or somesuch, I could try a few things19:24
benjiis there a branch I can see or can you pastebin the diff or something?19:24
cr3benji: I worked on that yesterday evening and didn't get anywhere, so I deleted everything thinking I was going down the wrong path19:25
benjiit sounds like the right path to me, you want to replace one component with another (slightly different) one; that's what they're for :)19:26
cr3benji: just to make sure I understand correctly though, I should be aiming for "return IJSONPublishable(obj).toDataForJSON()" in ResourceJSONEncoder to return my own IJSONPublishable implementation in order to augment the data normally returned by EntryResource.toDataForJSON, right?19:26
cr3benji: err, "IJSONPublishable(obj)" should return my own IJSONPublishable..., the complete call should return the data :)19:27
benjicr3: right (in other words "IJSONPublishable(obj) should return the result of your adapter (which is a class that /implements/ IJSONPublishable) which will be something that /provides/ IJSONPublishable (an instance of your class)"19:30
cr3benji: awesome, if you happen to have an example somewhere, that might help. otherwise, since I seem to understand what's going on, I'll probably figure it out eventually :)19:31
cr3benji: by the way, good work on the whole registration of adapters and interfaces in lazr.restful, pretty cool stuff!19:32
benjicr3: I don't have an example at hand, but it sounds like your previous attemt was very close19:32
cr3benji: I'll make sure to keep the code if I get blocked again :)19:32
benji:)19:32
benjiLeonard deserves the credit for anything nice in lazr.restful and Jim Fulton gets credit for the Zope component framework19:34
leonardractually i bet flacoste deserves the credit for what cr3 is mentioning19:34
cr3sounds like a few people making a project come together nicely, as far as I can see. I'm jealous :)19:35
=== matsubara is now known as matsubara-afk
jcsacketthas anyone seen a storm query replace a condition with FALSE?22:19
thumperjcsackett: no22:34
wgrantabentley: Hi.22:41
abentleywgrant: doh.  EOD and I have company.22:41
=== Ursinha is now known as Ursinha-afk
wgrantHeh, sorry.22:42
thumperwgrant: hi22:52
thumperwgrant: I'm about to head out to lunch, but I know a little about what abentley was going to talk to you about22:53
thumperwgrant: bug 64562022:53
_mup_Bug #645620: Deleting recipe leaves SourcePackageReleases with no traceability <recipe> <Launchpad Bazaar Integration:Triaged> <https://launchpad.net/bugs/645620>22:53
wgrantthumper: What do you want to know about it?22:53
thumperI think we were wondering how to create the traceability22:54
thumperperhaps through making the recipe registrant the uploader?22:54
wgrantDon't delete things.22:54
thumperwgrant: not deleting things isn't really an option22:54
thumperwe should allow people to delete things22:54
persiaDeleting a semantic object doesn't necessarily require removal of the underlying datastore: one can have a "deleted" flag, or similar.22:55
wgrantthumper: Normally we record the signing key used on the changes file.22:57
thumperpersia: sure22:57
wgrantthumper: That is clearly not possible here.22:57
wgrantSo we agreed that the SPRB would be recorded.22:57
wgrantAnd now you're nullifying that.22:57
thumperhmm...22:58
* thumper has to run, but perhaps we could talk more after lunch22:58
wgrantSure.22:58
wgrantjelmer: Hi. Could you try to land my branch before we get into testfix again?22:59
jelmerwgrant: Yes.22:59
wgrantjelmer: Thanks.22:59
wgrantlifeless: Hi.23:11
lifelesshi23:11
lifeless'sup ?23:11
wgrantlifeless: Has cesium had anything CP'd lately?23:12
lifelessI'm not sure; let me see23:12
wgrantMore precisely, do you know which rev of devel it is?23:12
lifelessshould be 1182423:12
lifelessI'll check23:12
wgrantBecause the code involved in adare's issue has sort of been completely rewritten this cycle.23:13
lifelessdo we need to roll it back ?23:13
jelmerwgrant: are you talking about the async builddmanager?23:13
wgrantjelmer: Yes.23:13
wgrantlifeless: Unlikely.23:13
lifelesswgrant: confirmed23:13
lifeless1182423:13
wgrantlifeless: Aha, thanks.23:14
wgrantNow I have to try to make sense of this Twisted monster.23:16
wgrantThe deferreds really make the traceback rather useless :(23:19
* spm hands wgrant a lantern of codelight, flaming sword of gdb-ness and a pet grue - with which to hunt and slay the twistd monster.23:23
wgrantspiv: Can I convince you to check for the existence of a directory on germanium?23:24
wgrantEr.23:24
spmprobably not, but you can convince me?23:24
wgrantspm: ^^23:24
wgrantStupid tabs.23:24
spm:-)23:24
spmwhich one?23:25
wgrantspm: /srv/launchpad.net/ubuntu-archive/ubuntu-temp23:25
spm2010-11-04 23:25 /srv/launchpad.net/ubuntu-archive/ubuntu-temp/23:25
spmverra recently updated going by that, if that helps23:26
wgrantYeah, as I suspected :(23:26
wgrantBraindead lucilleconfig.23:26
wgrantMakes my removal branch slightly more difficult.23:26
spmrm -rf is hard?23:26
wgrantspm: That's the primary archive's temp dir. PPAs happen to use it too, due to lucilleconfig being stupid (it was added 'temporarily' a little over six years ago). My removal branch changes the way that path is calculated, and it will end up somewhere different on germanium.23:32
wgrantSo yay, config changes.23:32
spmah. goo! I approve in general terms based on your description. sounds good! +1. etc etc. :-)23:33
spmgood!23:33
spmmind you. $job-1. I was there for 6 years on a 4month temp contract. I can see how these temp things remain. :-D23:34
lifelessspm: I was like that @ Micropay23:35
wgrantHeh.23:35
LPCIBotProject db-devel build (119): FAILURE in 3 hr 33 min: https://hudson.wedontsleep.org/job/db-devel/119/23:44

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!