[15:00] <barry> #startmeeting
[15:00] <MootBot> Meeting started at 09:00. The chair is barry.
[15:00] <MootBot> Commands Available: [TOPIC], [IDEA], [ACTION], [AGREED], [LINK], [VOTE]
[15:00] <barry> hello and welcome to this week's ameu reviewers meeting.  who's here today?
[15:00] <rockstar> me
[15:00] <EdwinGrubbs> me
[15:00] <adeuring> me
[15:01] <flacoste> me
[15:02] <rockstar> That's it?
[15:02] <barry> wow, light attendance today <wink>
[15:02] <barry> allenap: ping
[15:02] <allenap> me
[15:02] <barry> bac_uds: hopeful ping
[15:02] <barry> bigjools: ping
[15:02] <barry> BjornT: ping
[15:02] <barry> cprov: ping
[15:02] <bigjools> me
[15:02] <barry> gmb: ping?
[15:03] <barry> intellectronica: ping
[15:03] <barry> mars: ping
[15:03] <barry> salgado: ping
[15:03] <bigjools> it's 7 in the morning for cprov at UDS
[15:03] <intellectronica> me
[15:03] <BjornT> me
[15:03] <barry> bigjools: what's his cell #?  let's wake him up :)
[15:03]  * barry is not sure who's at uds
[15:03] <rockstar> Ooh, that's bad...
[15:03] <bigjools> 1-800-EAT-SHIT
[15:03] <rockstar> !
[15:03]  * barry dials
[15:03] <mars> me
[15:04] <barry> bigjools: hey, waiiittt a minute!
[15:04] <bigjools> :)
[15:04] <barry> [TOPIC] agenda
[15:04] <MootBot> New Topic:  agenda
[15:04] <barry>  * Roll call
[15:04] <barry>  * Printing strings in doctests (barry)
[15:04] <barry>  * Gavin's `pretty()` function (allenap)
[15:04] <barry>  * Do we need a standard cover letter template for merge proposals? (barry)
[15:04] <barry>    * [[attachment:cover-quick.txt]]
[15:04] <barry>    * [[attachment:cover.txt]]
[15:04] <barry>  * Peanut gallery (anything not on the agenda)
[15:04] <barry>  * If there's time, the old boring script
[15:04] <barry>    * Next meeting
[15:04] <barry>    * Action items
[15:04] <barry>    * Mentoring update
[15:04] <barry>    * Queue status
[15:04] <barry> [TOPIC]  * Printing strings in doctests (barry)
[15:04] <MootBot> New Topic:   * Printing strings in doctests (barry)
[15:05] <barry> so, i mentioned this in a couple of reviews as well as in the asiapac meeting, with some positive feedback
[15:05] <barry> the idea is that in docstrings, you should (usually) be printing the value of strings instead of returning them
[15:05] <sinzui> me
[15:05] <barry> the advantage of that is that you usually don't care if its unicode or str, and you're not saddled with extraneous noise like u' and '
[15:05] <barry> e.g.
[15:05] <barry> instead of
[15:05] <barry> >>> foo['key']
[15:05] <barry> u'baz'
[15:06] <barry> you'd do
[15:06] <barry> >>> print foo['key']
[15:06] <barry> baz
[15:06] <barry> thoughts?
[15:06] <salgado> me!
[15:06] <salgado> sorry, I'm late
[15:06] <intellectronica> yes, i also prefer printing
[15:06] <bigjools> barry: +1
[15:07] <sinzui> Unless we fix/hack the the testrunner, translations and answers tests will fail
[15:07] <barry> sinzui: right.  hence the "usually" :)
[15:07] <rockstar> barry, +1
[15:08] <barry> so, as reviewers just be aware of that in code you review and suggest conversion to printing strings
[15:08] <barry> any objections?
[15:08] <adeuring> none, just a questin:
[15:09] <barry> adeuring: go4it
[15:09] <EdwinGrubbs> I think that the bug really needs to be fixed in the testrunner, since it doesn't tell you which line the error is on when you try printing out a unicode character, the whole doctest just fails, so you end up commenting out half your test  to find the offending line.
[15:09] <adeuring> what, if we want to test, if we want to check that we have for eaxmpale a string object, but not a unicode object?
[15:09] <adeuring> print repr(foo)
[15:09] <rockstar> EdwinGrubbs, +1
[15:09] <barry> EdwinGrubbs: totally agree.  it's not like we don't actually have proposed fixes either :)  iirc it's a bug in zope upstream
[15:10] <adeuring> I mean, whould we use explicity the print statment,
[15:10] <barry> adeuring: in that case you can either return the value and show the u''
[15:10] <adeuring> or should we allow the simple >>> foo
[15:10] <barry> adeuring: or, use isinstance(foo, unicode)
[15:10] <barry> adeuring: or even print foo.encode('utf-8')
[15:10] <rockstar> I'd prefer the second choice.
[15:11] <barry> rockstar: for a pure type test, i agree
[15:11] <rockstar> barry, yea' and if you want the value, you'd use print.
[15:11] <adeuring> barry: OK, though explicit encoding can make things more difficult to read
[15:11] <barry> rockstar: right
[15:12] <barry> adeuring: yep.  if we had a fixed testrunner we could just print it
[15:12] <barry> flacoste: can we ask gary to look into fixing this upstream for us?
[15:12] <adeuring> barry: ...or use repr(u'äüö')
[15:12] <flacoste> barry: gary doesn't have on the testrunner
[15:12] <adeuring> slightly better to read than the encoded string
[15:12] <flacoste> barry: but he can send emails
[15:12] <flacoste> barry: but anyway, we are way behind upstream here
[15:13] <flacoste> barry: so we should just fix our stuff for now
[15:13] <rockstar> flacoste, +1
[15:13] <barry> flacoste: maybe when we move to 2.6 :)
[15:13] <barry> and zc.buildout :)
[15:13] <flacoste> 2.6 is crack!
[15:13] <barry> :-D
[15:13] <barry> anyway for now, just be aware of this in reviews and make friendly suggestions
[15:14] <barry> [TOPIC]  * Gavin's `pretty()` function (allenap)
[15:14] <MootBot> New Topic:   * Gavin's `pretty()` function (allenap)
[15:14] <barry> allenap landed a branch with a nice pretty() function in doctest globals
[15:14] <flacoste> don't use it for API tests btw!
[15:14] <barry> although i've since heard that lazr has something similar, right flacoste ?
[15:14] <sinzui> zope.testing.doctest:1486
[15:14] <sinzui>     sys.stdout = self._fakeout
[15:14] <sinzui> Becomes
[15:14] <sinzui>     from codecs import EncodedFile
[15:14] <sinzui>     sys.stdout = EncodedFile(self._fakeout, "ascii", "utf-8")
[15:14] <allenap> flacoste: too late.
[15:14] <barry> flacoste: why?
[15:14] <barry> sinzui: yes, excactly
[15:14] <flacoste> because there is pprint_entry and pprint_collection
[15:15] <flacoste> that does that + other stuff
[15:15] <barry> flacoste: ah
[15:15] <flacoste> for example, it omits the etag key
[15:15] <flacoste> so pretty() is fine for non-API stuff
[15:15] <barry> flacoste: do we need a dev/reviewer style guide for apis?
[15:15] <flacoste> yeah, we probably do
[15:15] <allenap> flacoste: Yeah, agreed, the pprint_* functions are better for API. I'll clean up my API stuff that uses pretty().
[15:15] <flacoste> salgado started something if i recall
[15:16] <flacoste> or maybe it was for the coder perspective
[15:16] <flacoste> but yes, i'll do a API reviewer cheatsheet
[15:16] <barry> [ACTION] flacoste to do an API reviewer cheatsheet
[15:16] <MootBot> ACTION received:  flacoste to do an API reviewer cheatsheet
[15:16] <barry> flacoste: thanks!
[15:16] <flacoste> or add a section to the reviewer cheet sheet
[15:17] <barry> btw, rs=barry for any cleanup that consolidates pretty() and lazr's pretty printer
[15:17] <salgado> flacoste, barry, https://launchpad.canonical.com/API/StyleGuide is what I wrote
[15:18] <barry> salgado: nice, thanks
[15:18] <barry> [TOPIC]  * Do we need a standard cover letter template for merge proposals? (barry)
[15:18] <MootBot> New Topic:   * Do we need a standard cover letter template for merge proposals? (barry)
[15:18] <barry> i mentioned this last week.  this week i have two examples.  one a quick outline and the other more detailed, with examples
[15:19] <barry> https://dev.launchpad.net/ReviewerMeetingAgenda?action=AttachFile&do=view&target=cover-quick.txt
[15:19] <barry> https://dev.launchpad.net/ReviewerMeetingAgenda?action=AttachFile&do=view&target=cover.txt
[15:19] <barry> putting aside the issue of tool support for this, what do you think about encouraging devs to use this in mps?
[15:19] <barry> the thing i like about it is that everything's in one comment
[15:20] <barry> so when you get the mp email, you've already got the description, the lint, and the diff
[15:20] <barry> and it makes it very easy to respond in email
[15:20] <barry> i really hate it when i have to review a branch, but it's spread out over several emails
[15:21] <rockstar> barry, I don't like that either.
[15:21] <rockstar> I usually try and consolidate it into one reply.
[15:21] <barry> rockstar: right, which isn't always easy depending on your mua :)
[15:22] <rockstar> Yea.
[15:22] <rockstar> (vim ftw)
[15:22] <barry> rockstar: claws + emacs + emacsclient :)
[15:22] <bigjools> jeez, copy and paste ffs :)
[15:22] <barry> anyway.  +1, -1  for the cover standard?
[15:22] <bigjools> +0
[15:23] <rockstar> barry, which one is would be the standard?
[15:23] <barry> rockstar: they're the same except for the explanatory text and examples in the long one
[15:23] <barry> rockstar: so cover-quick.txt is the template most people would use
[15:24] <bigjools> how much of the stuff in the template should we / can we put in the MP form?
[15:24]  * sinzui has been pasting it all
[15:25] <barry> sinzui: right.  the idea is that you begin filling out the form right when you start working on the branch.  lots will be empty, but you fill it in as you think about the fix, get a pre-imp, hack the code, etc
[15:25] <barry> when you're ready for the mp, you paste the whole thing
[15:25] <rockstar> barry, why do we need bug XXXXXX section?
[15:25] <barry> rockstar: as the longer example says, it's to translate the bug description into human
[15:26] <sinzui> barry: correct. I do,
[15:26] <barry> from the native "user" :)
[15:26] <rockstar> Hm.  I think if I read the bug itself, and then read the solution, I could deduce the issues myself.
[15:27] <barry> rockstar: remember, we're trying to make things fast and easy for reviewers
[15:27] <bigjools> doesn't the branch link to the bug if you say --fixes?
[15:27] <barry> rockstar: so the dev should do more work upfront (imo)
[15:27] <rockstar> bigjools, yes
[15:27] <barry> rockstar: the idea is.  i'm going to review your branch in 5 minutes.  i should have everything i need right there in that one email
[15:27] <rockstar> barry, I'm all for people making the reviewer's life easier.
[15:27] <barry> rockstar: don't make me go looking around the world unless i want to
[15:27] <bigjools> I think that doing that and having the reviewer follow a link is better than the dev re-writing the bug description
[15:28] <barry> bigjools: the problem is that many bug have poor descriptions, or long conversational threads
[15:28] <barry> bigjools: i think it's the dev's resposibility to boil it down to: "Bug XYZ describes this very specific problem"
[15:28] <rockstar> barry, so why can't that translation to human be in the bug.
[15:28] <bigjools> barry: so I would rather the root cause was fixed then - lets update the bug
[15:29] <barry> i guess the point is that i don't want to have to hunt around in the bug.  i want to read my email, do my review and be done with it
[15:29] <rockstar> barry, maybe that would make sense as a sentence in the pre-implementation of implementation section.
[15:30] <bigjools> I hear we've got this funky tool called Launchpad that stores all this stuff for us ;)
[15:30] <barry> i should try to find a real-world example to show you what i mean.  it's really just a 2 sentence summary
[15:30] <barry> and you can just cut-n-paste the bug description if it's in human readable form
[15:30] <rockstar> If there's good information about the bug itself, I feel it really belongs in the bug, not the merge proposal.
[15:31] <barry> but if it's not, or the bug has a long conversational thread that eventually gets around to the real bug, then 2 sentences, boom you're done, and you've helped reduce reviewer friction
[15:31] <rockstar> It may be just two lines, but it's still segmentation of information.
[15:31] <bigjools> let me propose this:  if the bug's description was included in the branch page (is it already?) and the email, and the description was updated if it's inaccurate, would that suffice?
[15:31] <barry> rockstar: this isn't a big detailed thing, it's a summary.  the cover can always say there are important details in the tracker issue
[15:32] <rockstar> QA might not know to go look at the merge proposal for the actual explanation.
[15:32] <sinzui> rockstar: I summarize the bug because I don't want to make you spend 20 minutes reading all the comments that were not relevant to diagnosing the root cause
[15:32] <barry> bigjools: sure.  if it were included in the email that would help
[15:32] <barry> sinzui: exactly
[15:33] <rockstar> sinzui, I understand that, and I agree it's helpful.  I just think that we have all these buckets where certain types of information go.
[15:33] <bigjools> barry: great - I just hate the idea of re-writing the bug description and not including it in the bug report!
[15:33] <barry> this is all about reducing reviewer friction
[15:33] <rockstar> barry, and I agree it needs to happen.
[15:33] <rockstar> I also like to make sure that the branch is linked to the appropriate bugs it fixes.
[15:33] <sinzui> rockstar: secondly, I may land five branches to fix a bug, each branch focuses on an aspect of the bug that is strictly scoped so that I have small branches
[15:33] <barry> bigjools: i have no problem if the workflow is: dev updates the bug description to accurately reflect the root cause of the problem being reported, then cut-and-pastes that into his cover letter :)
[15:33] <BjornT> i think we should rename 'Bug XXX' to 'Summary', and concentrate on describing what the branch contains, rather than what the bug was.
[15:34] <barry> sinzui: excellent point!
[15:34] <rockstar> BjornT, +1
[15:34] <intellectronica> +1, and we already have that in the submission form, so the only thing is to make sure that it's displayed conveniently both on the web and in email
[15:34] <bigjools> BjornT: again, I think that should be recorded in LP, with the branch.  It can be sent with the email.
[15:34] <barry> BjornT: Summary of Bug XXXXX and i'm on board with that
[15:35] <bigjools> barry: not all branches are bug fixes though
[15:35] <barry> bigjools: hmm. okay
[15:35] <BjornT> barry: well, as sinzui said, he might land five branches to fx
[15:35] <barry> but they should be, right? :)
[15:35] <BjornT> fix a single bug
[15:35] <bigjools> barry: blueprints? :)
[15:35] <rockstar> barry, two lines in of the faur line Summary can be devoted to it.
[15:35] <BjornT> barry: should he include the same bug description in all five merge proposals?
[15:35] <rockstar> s/faur/four
[15:35] <barry> bigjools: i've heard it's a great way to increase your karma
[15:36] <bigjools> barry: you get more for blueprints! :)
[15:36] <barry> BjornT: when i've done that, the first sentence is the same, but then the rest of that summary section goes on to explain the sub-issue this branch is addressing
[15:36] <barry> but i'm okay with Summary
[15:37] <BjornT> barry: right. in that case you're not summarizing the bug report; you're summarizing your branch
[15:37] <barry> as long as i don't have to guess which bug it's addressing
[15:37] <barry> BjornT: cool, i'm convinced.  Summary sounds good
[15:38] <barry> i'll make that change and take it to the ml
[15:38] <BjornT> i do agree that the summary should explain in words what issue was fixed, rather than just saying 'fixes bug xxx'.
[15:38] <barry> btw, i really appreciate all the good feedback.  ultimately this is about making things easier for us reviewers!
[15:38] <barry> you should work harder when your dev hat is on :)
[15:39] <barry> BjornT: +1
[15:39] <bigjools> as someone once said to me, we're being worked like camels already :)
[15:39] <barry> bigjools: :)  reducing dev friction is a whole 'nuther topic
[15:40] <barry> but not for today :)
[15:40] <bigjools> 5 mins left!
[15:40] <barry> [TOPIC] # Peanut gallery (anything not on the agenda)
[15:40] <MootBot> New Topic:  # Peanut gallery (anything not on the agenda)
[15:40] <barry> bigjools: what a great straight man you are!
[15:40] <barry> so, the floor is open.  do you have anything not on the agenda?
[15:41] <rockstar> How are merge proposals going?
[15:41] <rockstar> We're fixing bugs to get things easier to use.
[15:41] <bigjools> I think they're great, but I think they could prompt us for the info that barry wants :)
[15:41] <rockstar> Is anyone noticing?
[15:41] <flacoste> bigjools: honestly, i don't think so
[15:42] <flacoste> form filling is boring
[15:42] <barry> rockstar: you had me at "PendingReviews is dead".  i think they're great
[15:42] <bigjools> flacoste: you'd rather copy & paste a template?
[15:42] <sinzui> flacoste: but note taking is safe and satisfying.
[15:42] <rockstar> barry, Hurray!
[15:42] <flacoste> yeah, free form text FTW!
[15:42] <barry> tool support would definitely make it easier
[15:43] <barry> rockstar: plus i want a button to re-send me the mp email :)
[15:43] <bigjools> I like being reminded of things, I'm not getting any younger!
[15:43] <BjornT> flacoste: +1
[15:44] <barry> flacoste, rockstar how much of the mp stuff is exposed in the api?
[15:44] <BjornT> bigjools: you should be able to use 'bzr send' and have the template come up in your text editor.
[15:44] <bigjools> BjornT: bzr send creates MPs?
[15:44] <rockstar> barry, the basic read only stuff landed last week.
[15:44] <barry> BjornT: though of course, you've already started the template when you began to think about the bug, had your pre-impl, etc. <wink>
[15:44] <BjornT> bigjools: well, somehow you should be able to submit MPs from bzr
[15:44] <rockstar> bigjools, it will, as soon as abentley gets back from UDS.
[15:45] <barry> BjornT: big +1 there
[15:45] <rockstar> BjornT, yea, that's the idea.
[15:45] <bigjools> BjornT: agree
[15:45] <bigjools> rockstar: that would be very cool!
[15:45] <intellectronica> personally, i would rather have web forms (and perhaps the ability to bypass them using the API)
[15:45] <intellectronica> and i think they would be very good for are users too
[15:45] <bigjools> well both - choice is good
[15:45] <rockstar> So diffs and bzr send are the big ones for mp right now then?
[15:46] <barry> rockstar: i think so
[15:46] <barry> oops, look at the clock.  we're the time go?
[15:46] <rockstar> Cool.  I'll bring that up in the meeting.  I know the code has been landing, just don't know the specifics.
[15:46] <barry> anything else before we break?
[15:46] <barry> 5
[15:46] <BjornT> rockstar: especially the possiblity to attach diffs (rather than having them generated automatically, which is also nice of course)
[15:47] <barry> 4
[15:47] <barry> 3
[15:47] <rockstar> BjornT, agreed
[15:47] <barry> 2
[15:47] <barry> 1
[15:47] <rockstar> Break!
[15:47] <barry> #endmeeting
[15:47] <MootBot> Meeting finished at 09:47.
[15:47] <barry> thanks everyone!
[15:47] <allenap> Thanks barry.
[15:48] <rockstar> BjornT, technically, bzr send uses attachments to send the diff.  Is that what you're saying?
[15:49] <BjornT> rockstar: kind of. what i want is to have the diff attached to the outgoing e-mail notification (not appended as normal text). this is for both new merge proposals, and for replies, where the coder is attaching a diff of his changes.
[15:50] <rockstar> Ah, so when you receive a mp email, the diff is an attachment?
[15:51] <BjornT> rockstar: yes, that is what i want. that way it's easy to get to the diff. it's easier to go to the next attachment, rather than paging through the comment to find the beginning of the diff.
[15:51] <rockstar> BjornT, okay, noted.  I'll see what I can do.
[15:52] <BjornT> rockstar: cool, thanks.