/srv/irclogs.ubuntu.com/2010/10/07/#launchpad-meeting.txt

=== Ursinha-afk is now known as Ursinha
bacthumper, rockstar, stub, mwhudson, stevek, lifeless -- Reviewer Meeting in a few minutes00:59
mwhudsonhi bac00:59
bachi mwhudson00:59
mwhudsonbac: how is asia treating you?00:59
bacmwhudson: good.  having fun.  eating well.  not ill.01:00
mwhudsonbac: all good01:01
bac#startmeeting01:01
MootBotMeeting started at 19:01. The chair is bac.01:01
MootBotCommands Available: [TOPIC], [IDEA], [ACTION], [AGREED], [LINK], [VOTE]01:01
bacgood morning...who is here?01:01
bacme01:01
mwhudsonme01:02
mwhudsonthumper won't be here01:02
wgrantme01:02
* wallyworld here01:03
bac[topic] agenda01:04
MootBotNew Topic:  agenda01:04
bac* Roll call01:04
bac * Agenda01:04
bac * Outstanding actions01:04
bac * Mentat update.01:04
bac   * salgado (ui)01:04
bac   * henninge (ui)01:04
bac   * stevenk (code)01:04
bac * New topics01:04
bac  * Nice Storm gotcha (bigjools)01:04
bac  * canonical.launchpad is still deprecated, sinzui (AsiaPac meeting only)01:04
bac  * [[http://paste.ubuntu.com/507156/|Truth conditionals and the new "all" and "any" functions]], henninge01:04
bac[topic] mentoring update01:04
MootBotNew Topic:  mentoring update01:04
bacit may be news to you here that henninge and salgado are UI mentats.  they are doing really well.  please send your UI reviews to them first, if you can spare the extra time mentoring entails.01:05
baci've been using them both lately and getting really good feedback from them.01:05
bacalso, sinzui reports the number of UI reviews overall has gone up quite a bit in the last two months, which is great.01:06
bacthere are no UI reviewers in this timezone.  do you normally just throw it at rockstar?01:06
bacsince stevenk and thumper are both absent we won't get a report out out of them...01:07
mwhudsoni haven't had a ui review to do in aaaaages01:07
bac[topic] Nice Storm gotcha (bigjools)01:08
MootBotNew Topic:  Nice Storm gotcha (bigjools)01:08
mwhudsonis this the one that wgrant knows all about?01:08
bacwgrant do you want to discuss this issue?01:08
wgrantIndeed.01:08
* wgrant finds the rev.01:08
bacwgrant: did you discover it or just fix it?01:08
wgrantI broke, discovered, and fixed it.01:09
wgranthttps://code.edge.launchpad.net/~wgrant/launchpad/bug-653382-domination-series-restriction/+merge/3733301:09
bacthe trifecta01:09
wgrantSaying "SomeClass.column in (some list of values)" will always evaluate to True.01:09
wgrantThis can be... dangerous.01:09
wgrantSo please watch for it.01:10
wgrantProbably a Storm bug, but also probably not fixable.01:10
wallyworldall bugs are fixable, no?01:10
bacwgrant: do you have any sense of why it is evaluating to True?  makes no sense on the surface01:12
lifelesshi01:12
bachi lifeless01:12
lifelesssorry for tardiness01:12
wgrantbac: Storm columns have an __eq__ which returns an Expr.01:12
wgrantAn Expr is not False.01:12
wgrantI suspect this is the problem.01:12
lifelesswhats the exact code in question?01:13
mwhudsonoh right, you can't override what the list does for __contains__01:13
wgrantmwhudson: You can override from the other end.01:13
bacwgrant: and the work-around is to use is_in01:13
wgrantbac: Right.01:13
wgrantAnd it non-intuitively fails in the wrong direction.01:13
mwhudsonlifeless: https://code.edge.launchpad.net/~wgrant/launchpad/bug-653382-domination-series-restriction/+merge/3733301:13
lifelessright01:13
lifelesstheres a broader issue01:14
lifelessstorms syntax often looks right but is wrong01:14
lifelessfor instance Class.column == otherclass.column01:14
lifelessis nearly always wrong.01:14
wgrantIs it?01:14
lifelessyes, because one or both are Reference objects01:15
lifelessnot Int objects01:15
wgrantOh, right, yeah.01:15
lifelessthe right spelling, with SQLBase is Class.columnID == otherclass.columnID01:15
wgrantBut that at least generates an error.01:15
lifelesswgrant: not always, for entertainment value.01:15
lifeless(or Class.columnID == otherclass.column, or vice versa)01:16
wgrantThat has always irked me, and it seems like it should be fixable.01:16
wgrantHave we talked to Stormers about it?01:16
lifelesscomment on the bug I filed01:16
bacregarding the first problem with 'in', sinzui has volunteered to see if he can create a matching regex to throw into lint to catch them.01:17
lifelessthat would be nice, *if* when that is found, we always write a test (because it implies missing test coverage)01:18
bacreturning a bit to UI reviews, henninge mentioned that a lot of people are including screenshots, which are great.  he also said noodles has created some screencasts which have been helpful.  an example is at https://code.edge.launchpad.net/~michael.nelson/launchpad/652838-select-diffs-for-syncing/+merge/3757201:19
bacgiven my mad video skillz, i could see this easily taking me twice as long as writing the patch so i doubt i'll try it01:19
bac[topic]  canonical.launchpad is still deprecated, sinzui (AsiaPac meeting only)01:20
MootBotNew Topic:   canonical.launchpad is still deprecated, sinzui (AsiaPac meeting only)01:20
bacthis topic was from last week in the AmEu meeting.01:20
bacapologies for me having to late cancel the meeting here last week.01:20
bacsinzui was disturbed to see some people adding to the code in canonical.launchpad01:21
bacreviewers should look out for that01:22
lifelessThats quite likely me, and I'll happily defend doing that if needed.01:22
lifelessmoving stuff around doesn't fix bugs or improve performance01:22
lifelessit doesn't help our users01:22
lifelessit *may* make things easier to maintain.01:23
lifelessNot moving things around doesn't increase the cost of maintenance, avoids conflicts with db-stable and focuses on getting things done.01:23
baclifeless: it is deprecated and the agreed goal is to evacuate it.01:24
lifelessright01:24
lifelessbut thats separate to fixing specific bugs or issues.01:24
baci don't think the issue is with making short-term fixes there but trying to avoid growing a lot of new code01:24
bacwith the recognition that it is sometimes very tangled and hard to extract01:25
lifelessAs PEP8 says, fitting in with an existing structure is often better than being pure but inconsistent.01:25
lifelessI *have* extracted things from there when it made sense.01:25
bacthe appeal was for reviewers to keep their eyes open for it and expect a solid argument for why it makes sense.01:26
lifelessSo I think this adds friction to no benefit01:26
lifelessI don't think reviews should be worrying about trivia like this, its not a good use of the reviewer or reviewees time.01:26
lifelesssure, mention it - 'are you aware we're trying to kill that namespace'01:27
lifelessbut that should be the limit, IMNSHO.01:27
mwhudsoni'm not sure that the proposal was for anything more than that01:28
lifelessmwhudson: 'solid argument' sounds considerably more.01:28
lifelessI would be very sad to see someone double or triple the time to make a change, because a reviewer wouldn't approve the branch unless they moved the code01:28
baclifeless: well, if i was given a flimsy argument to that question i think i'd be concerned01:29
lifelesswhy?01:29
mwhudsonthere is a more general discussion here along the lines of 'how do we make sure changes to our coding standard actually happen'\01:29
mwhudsonlifeless: it sounds like you're very opposed to using reviews for this01:29
bacin my mind it would me the developer hadn't thought it through.01:29
lifelessmwhudson: yes, I am. I don't think coding standards do much for our code.01:30
bacif it were a non-crititical patch in week one and the developer didn't have a good reason, then i'd say it is entirely appropriate to ask them to not add new code there01:30
mwhudsonthat sounds like a topic for the mailing list :)01:30
lifelessmwhudson: I'm also concerned because I'm not seeing my architectural stuff, which is endemic in the code base, getting airplay.01:30
lifelessmwhudson: I've been letting the hindbrain think about this for a while; yes its probably time to start discussing, I think I broadly know what I want to say now.01:32
lifelessbac: I think requiring them to have a good reason suggests a stop-energy workflow and heavy rather than light touch process.01:32
mwhudsonlifeless: in some sense any change that happens as a result review is too late01:32
lifelessbac: driving iteration time down means doing less each time, but taking more bites at it.01:33
mwhudsonlifeless: even more so for architectural stuff, if you want a check on that, i think it needs to come earlier01:33
lifelessbac: combining tasks because both need to be done, and both happen to be in the same region of code, reverses the stuff needed to drive iteration time down.01:33
lifelessbac: and there is broad agreement that small chunks are easier to review (both to assess fo rlanding, and simply to keep up with whats changing in the code base); so conflating the long term effort with short term stuff seems purely counterproductive to me.01:34
mwhudson$ python -c 'import this' | grep -i now01:34
mwhudsonNow is better than never.01:34
mwhudsonAlthough never is often better than *right* now.01:34
baclifeless: i guess it depends on the scope.01:34
lifelessmwhudson: Yes, by the time someone has added a function to a class rather than adding a class; its rather late. OTOH asking 'does this scale well... how do you know' is different to asking 'how should we do this to scale well'.01:35
lifelessmwhudson: and both questions are needed.01:36
lifeless(arguably)01:36
wallyworldmy take is that the bigger picture architectural stuff should be discussed pre-implementation, FWIW01:36
wallyworldsince by the code review stage, it's too late, as i think lifeless said01:37
mwhudsonlifeless: yes, that's likely true01:37
lifelesswallyworld: I would love to see folk discussing the details of their goals on the list before doing stuff, OTOH a blocking process isn't very in-the-zone-friendly.01:37
lifelesswallyworld: So I vigorously defend folks right to JFDI01:38
wallyworldyes, in the list of with their team01:38
wallyworlds/of/or01:38
lifelesswallyworld: specifically on the mailing list; team chats on voice and irc chats in channels other than launchpad-dev are invisible to many people.01:38
lifelessThere are plenty of studies showing that for group intelligence, the more *participants* the better the outcome.01:38
wallyworldack01:38
lifelesshere's what I want: if someone sees a bug, they can:01:39
lifeless - fix it01:39
lifeless - land the fix01:39
lifeless - in a short period of time01:39
lifeless - get feedback on what01:40
lifeless  - *must* be made better before deployment01:40
lifeless  - *can* be made better if someone wants to01:40
lifeless  - *should* be improved before they forget the context for what they did01:40
mwhudsoni also wonder if (in some cases) we should land stuff behind a feature flag01:40
mwhudsonas an almost matter of course01:40
lifelessI think we do much of this today, but in an order that has many many handoffs.01:41
lifelessmwhudson: +101:41
wallyworldIMHO, this architectural stuff needs to be right up there since with the small incremental changes we tend to do, it's way to easy to get architectural decay over time, like the frog in the boiling water analogy01:41
mwhudsonthen it becomes "what must be done before the flag turned on"01:41
lifelessmwhudson: I think it would be a sensible default. See my mail to the list later this afternoon.01:41
mwhudsonlifeless:  :-)01:41
mwhudsonbecause turning on flags out of order is way easier than deploying revisions out of order01:41
bacmwhudson: good point01:41
lifelesswallyworld: I think its all too easy to get gearing-issues.01:41
lifelesswallyworld: Are you familiar with LEAN ?01:42
wallyworldyes, but not an expert01:42
lifelessvalue stream maps ring a bell ?01:42
mwhudsonlifeless: an advantage of blocking landing until something has been done is that it's less likely to be forgotten and less damaging (in some ways) if it is01:42
wallyworldno01:42
lifelesswallyworld: http://en.wikipedia.org/wiki/Value_stream_mapping01:42
mwhudsonlifeless: kanban boards probably help with this though01:43
lifelesswallyworld: each /type/ of review, and each time someone blocks/context switches /in/ a review is a handoff01:43
lifelessa VSM of our landing process is scary scary stuff01:43
lifelessmwhudson: a bit, but its also an accomodation to having a painful process.01:44
lifelessconcretely, lets say that we asked every team lead to *enforce* an architectural review : transparency, performance, cohesion, etc, on *every landing*01:44
wallyworldlifeless: agree, which is why i mentioned that if the bigger picture stuff were done pre-implementation, it wouldn't hopefully be an issue come review time01:45
lifelesswallyworld: pre-impl is part of the VSM01:45
lifelessbac: so, sorry that this has scaled into a larger discussion.01:45
bacbut i think pre-impls are not being done consistently or with much vigor01:46
lifelessI don't think preimpls work.01:46
baclifeless: not a problem.  it is a good discussion01:46
lifelessbecause they are another blocking step in doing stuff01:46
lifelesspeople will often chat about things01:46
lifelessbut a detailed preimpl at the level needed to catch these things, given our maturity as a project, is actually a big deal.01:47
wallyworldbetter to put in some effort up front and catch any issue early rather than pay a bigger cost later IMHO01:48
baclifeless: it seems like you're saying each opportunity for collaboration is a blocking point to be avoided.01:48
lifelessbac: no, I'm saying *requirements to collaborate* are harmful.01:49
lifelesswallyworld: some years ago I would have agreed with you; now I think we need to identify where things could have been done better and train individuals so the next time is better.01:49
lifelessbac: here's an example. If you *had* to have a preimpl call, came up with a good idea on saturday, who would you speak to? or would you wait until sunday when I'm around (my monday)01:50
baclifeless: i don't see that we have those 'requirements to collaborate'.  we have suggested collaboration points, if warranted.01:50
wallyworldhmmm. not sure i agree :-) look at methodologies life orthogonal defect classification etc - all designed to catch issues early since the cost of fixing later is too great01:51
lifelesswallyworld: this ties into the cycle time. if the cycle time is a days work, more or less, how much will you gain/lose ?01:51
lifelesswallyworld: the risk is bounded, the delay is minimal.01:51
baclifeless: the only time we've *enforced* pre-imp calls is with community contributors and only to ensure their work is on target and desirable01:52
lifelessbac: I'm addressing wallyworld's argument, not what we have today. Today reviews are the mandatory choking point.01:52
wallyworldi would warrant if it takes a day up from to save the collective project cost of bad implementation, recfactoring costs etc later, then it's worth it :-)01:52
lifelessbac: and I'm arguing that we need to take trivia out of that choke point and put things that matter in.01:52
lifelesswallyworld: I couldn't parse that, sorry.01:53
wallyworldsorry, if it takes a day up front to save much more time later due to the cost of bad implementation, factoring etc, then it's worth it01:54
wallyworldbut the real answer IMHO it "it depends" - it's a judgement call as to what effort is needed depending on the downstream risk and cost of getting it wrong01:54
mwhudsonanother thought is that tying some of these discussions to branches is a bit silly01:55
bacwallyworld: and i do see that in practice.  the answer to a reviewer request is often "that's a good idea but out of scope.  i'll open a tech-debt bug and put in an XXX but i'd like to land what i have now."01:55
wallyworldlifeless: "things that matter" = getting the architecture right01:56
wallyworldbac: yes. i think it comes down to our collective experience as competenent software engineers to do The Right Thing01:56
bacthis has been good, but let's move on01:57
bac[topic]  [[http://paste.ubuntu.com/507156/ |Truth conditionals and the new "all" and "any" functions]], henninge01:58
MootBotNew Topic:   [[http://paste.ubuntu.com/507156/ |Truth conditionals and the new "all" and "any" functions]], henninge01:58
bacso, this was a request to change our style guide to account for any() and all()01:58
bacafter some good discussion we decided not to change the contional rules and to incorporate them into the use of any() if desired01:59
bachenning was agreeable and is going to update the style guide02:00
lifelessone sec02:00
lifelessso, I think 'if foo:' is perfectly cromulent python and we should use it.02:01
lifelesswhen its an accurate statement of the desired logic.02:01
bacthe concensus from the discussion is that the truth conditional can be problematic as is masks what is being tested.  there was strong support for making those tests explicit02:03
* mwhudson is on a call now, drifting out02:03
lifelessbac: by that logic we shouldn't use functions02:04
lifelessbecause they mask what they do02:04
baca recent example of where we didn't follow the requirement was your suggestion to wgrant this week02:04
lifelessright02:04
lifelessthe long winded version was *wrong*02:04
lifeless(buggy)02:05
bacyes, b/c he really did need to check all of the conditions that are implied by the shorter test02:05
lifelessits a mistake to avoid a powerful idiom in the language simply because its brief.02:05
lifelessthere can be good reasons to avoid it, but brevity isn't one IMO.02:06
lifeless(for instance, storm result sets don't define a __nonzero__, and they need to define one which raises, I suspect)02:06
bacthe reason for avoiding it isn't the inherent brevity.  brevity is good, is readable, and takes less typing.02:06
bacthe rationale is that implicitly testing for None and "" and 0 often leads to mistakes.02:08
baclifeless: i urge you to bring your argument up on the list.02:08
baci also think we need to have a multisession throw down at the epic to cover a lot of these topics.  doing it in person may be the best way to get real concensus with everyone's buy in02:09
lifelessI'll put it in my queue; its not something I feel strongly compelled to debate at this point in time (because to me this falls in the bucket of 'we shouldn't be specifying this in reviews anyway')02:10
baci think our process may be at a point similar to where we were at MIT and those sessions were tremendously valuable in affecting change02:10
lifelessbac: tell me more?02:11
bacthe sessions with the poppen-people02:11
bacmary and tom02:11
baci think we made fundamental changes to our process that were great02:11
bacand i think we may be equally stagnant now and need something similar to address the problems02:12
bacthe reviewers meeting is the wrong forum, especially since it is disjointed02:12
bacthe ML doesn't seem to work for big changes02:12
bacanyway, we've had a wide-ranging long discussion here and i appreciate it.02:13
bacbut i need to get some breakfast.02:13
lifelessI have one more thing :)02:13
bacthank you all for participating02:13
lifelesssorry!02:14
bac#endmeetin...02:14
bacyes?02:14
lifelessI'd like to find out how reviewers have been going with discussions about the architectural guide stuff02:14
lifelesshas is slipped your mind? been tried and too hard? No context? would training help? is it too vague? or too wacky?02:15
baci cannot say.  we discussed the idea and it seemed to be well received.  i have not done follow up.02:15
lifelessthis is important to me, and I'm being asked about it by mgmt folk :)02:15
baci don't think this is a change that is going to happen by simple encouragement in a meeting or in a list message02:15
lifelessbac: if you have suggestions about getting it to happen, I'm all ears.02:16
lifelessbac: after your breakfast, perhaps :)02:17
baclifeless: i have nothing useful ATM02:17
baclifeless: sure02:17
bacanything else?02:17
bac302:17
bac202:17
bac102:17
bac#endmeeting02:17
lifelessbac: failing that, can we at least add a 'retrospective on arch guide' to the next meeting02:17
MootBotMeeting finished at 20:17.02:17
baclifeless: let's talk later.  i'm pretty busy for the next four hours.  does that run past your EOD?02:17
lifelessmy day is all confused today02:18
lifelessping me02:18
bacok02:18
=== Ursinha is now known as Ursinha-afk
=== maxb_ is now known as maxb
=== Ursinha-afk is now known as Ursinha
=== salgado is now known as salgado-lunch
=== salgado-lunch is now known as salgado
=== gary_poster_ is now known as gary_poster
=== Ursinha-afk is now known as Ursinha
UrsinhaOOPS-1741SMS118:34
ubot5https://lp-oops.canonical.com/oops.py/?oopsid=1741SMS118:34
=== salgado is now known as salgado-afk
=== EdwinGrubbs is now known as Edwin-lucnh
=== Edwin-lucnh is now known as Edwin-lunch

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