/srv/irclogs.ubuntu.com/2009/06/17/#launchpad-meeting.txt

=== rocksta`` is now known as rockstar
=== salgado-afk is now known as salgado
=== bigjools-afk is now known as bigjools
barry#startmeeting15:00
MootBotMeeting started at 09:00. The chair is barry.15:00
MootBotCommands Available: [TOPIC], [IDEA], [ACTION], [AGREED], [LINK], [VOTE]15:00
barryhello everyone and welcome to this week's ameu reveiwers meeting.  who's here today?15:00
bigjoolsme15:00
bac`me15:00
allenapme15:00
gmbme15:00
adeuringme15:00
salgadome15:00
henningeme15:00
jtvme15:00
beunome15:01
intellectronicame15:01
marsme15:01
flacosteme15:02
barryBjornT: ping15:02
barrycprov: ping15:02
barrydanilos: ping15:02
barryEdwinGrubbs: ping15:02
cprovme15:02
danilosme15:02
EdwinGrubbsme15:02
barryrockstar: ping15:03
barrysinzui: ping15:03
sinzuime15:03
barryi think that's everyone15:03
barry[TOPIC] agenda15:03
MootBotNew Topic:  agenda15:03
barry * Roll call15:03
barry * Action items15:03
barry * Mentoring update15:03
barry * Peanut gallery (anything not on the agenda)15:03
barry   * naming of unittest methods (Camel``Case or under_scores) (henninge)15:03
barry   * order of assert parameters (expected, observed) (hennige)15:03
barry * Driving maintainable Javascript code (intellectronica)15:03
barry  * Modularization and unit testing are strongly encouraged15:03
barry  * Refactoring code after a UI review is often a good idea15:03
barry  * The upper limit for JS diffs is 1600 lines (because javascript is so verbose)15:03
barry[TOPIC] action items15:03
MootBotNew Topic:  action items15:03
barryi think the only one outstanding is gary's and he's away today15:04
barryso...15:04
barry[TOPIC] mentoring update15:04
MootBotNew Topic:  mentoring update15:04
barryi think we have just one mentored reviewer left, and noodles isn't here today15:04
barryso...15:04
barry[TOPIC] peanut gallery15:05
MootBotNew Topic:  peanut gallery15:05
barry   * naming of unittest methods (Camel``Case or under_scores) (henninge)15:05
barry   * order of assert parameters (expected, observed) (hennige)15:05
barryhenninge: the floor is yours15:05
henningeHi15:05
henningeYesterday cprov and I ran into this discussion about how to name unittest methods.15:05
henningeI have always done test_the_frobnob, while his branch had testTheFrobnob15:06
henningeThe argument is: Coding style for methods is CamelCase15:06
cprovyes, and I've used CamelCase for most of the soyuz unittest, and it's not looking good.15:06
salgadoisn't the policy to use test_methodName()?15:07
intellectronicai have a feeling of deja vu15:07
* barry would greatly prefer anything make makes us more pep 8-y15:07
intellectronicasalgado: exactly15:07
marsI thought unit_tests_were_the_exception?15:07
henningebut these methods are never called directly and only appear in test runner15:07
henningeoutput15:07
bigjoolssalgado: +115:07
jtvthis was changed a few months back, but I don't remember what it was changed to exactly.15:07
gmbbarry: +115:07
flacostewe already discussed that15:07
flacostethe convention for unit test is:15:08
flacostetest_methodName_with_particular_condition15:08
bac`flacoste: that's what i remember too.15:08
henningeah, that was my faint memory, too.15:08
flacostewe had this discussion like 6-8 months ago15:08
barryflacoste: yes15:08
salgadoWhen testing a specific Launchpad method, a mix of PEP 8 and camel case is15:08
salgadoused, e.g. test_fooBarBaz()15:08
bigjoolsis it not in the style guide?15:08
flacostebarry: somebody should have updated the wiki ;-)15:08
salgadohttps://dev.launchpad.net/TestsStyleGuide#Functional and Unit Tests15:09
salgadoflacoste, it's there!15:09
salgadoIn general, you should follow Launchpad coding conventions (see PythonStyleGuide), however when naming test methods:15:09
salgado...15:09
flacosteperfect!15:09
barryflacoste: time machine activated!15:09
* bigjools sees a rapid end to the discussion coming15:09
flacosteanybody wants to rehash this?15:09
cprovcool, problem solved.15:09
henningesecond item15:09
henningeI have seen that LaunchpadTestCase uses assert(expected, observed)15:10
henningeand have used the asserts that way.15:10
henningeBut I see a lot of (obseved, expected).15:10
barryhenninge: +1 for (expected, observed)15:11
henningebarry: me, too15:11
bigjoolsdo you mean assertEqual?15:11
henningeis there a guide line for that already?15:11
intellectronicai don't understand15:11
henningebigjools: yeah15:11
henningeoh sorry, I meant assert*(e,o)15:11
henningebtw, I found out that not everybody knows about LaunchpadTestCase15:12
salgadointellectronica, self.assertEquals(sut_output, 'what I expect') instead of self.assertEquals('what I expect', sut_output)15:12
barryhenninge: could you please update https://dev.launchpad.net/TestsStyleGuide15:12
intellectronicai don't think it's worth having a policy on that. it doesn't matter15:12
bigjoolsI don't either15:13
salgadoagreed15:13
barryactually, i think it's better to be consistent because it's easier to debug15:13
bigjoolshow does it make it easier?15:13
barrybigjools: you have to think less when you see failing output15:13
henningeyes, it's for clarity.15:14
intellectronicaif you want to make it really easy you can do `expected = expr \n observed = expr \n assertEqual(expected, observed)`15:14
henningeintellectronica: true15:15
bigjoolsyeah, I quite like that style15:15
henningethat is fine by me, too.15:15
barryintellectronica: it would be better to have that in the framework15:15
intellectronicabut again, i don't think we should force this. just remember that it's a possibility15:15
bigjoolsI think encouraged but not enforced15:15
barryjust sayin', all things being equal, we prefer (expected, observed)15:15
bac`bigjools: +115:15
barrybigjools: +115:16
henningebigjools: +115:16
* bigjools is not used to this many people agreeing with him15:16
barryhenninge: can you capture this in the wiki?15:16
henningebarry: will do15:16
barry[ACTION] henninge to capture decision on assert*(expected, observed) preference in wiki15:17
MootBotACTION received:  henninge to capture decision on assert*(expected, observed) preference in wiki15:17
barryhenninge: thanks!15:17
henningenp15:17
barry[TOPIC]  * Driving maintainable Javascript code (intellectronica)15:17
MootBotNew Topic:   * Driving maintainable Javascript code (intellectronica)15:17
barry  * Modularization and unit testing are strongly encouraged15:17
barry  * Refactoring code after a UI review is often a good idea15:17
barry  * The upper limit for JS diffs is 1600 lines (because javascript is so verbose)15:17
intellectronicawhat a stupid title. i should be shot15:17
barryintellectronica: why? because of the oxymoron? :)15:17
* bigjools chuckles15:18
barryintellectronica: the floor is yours15:18
intellectronicain the last ajax swat team meeting, we rockstar and deryck led a discussion about how to produce better (more maintainable, easier to test) javascript code15:18
intellectronicawe made several observations:15:18
intellectronica1. code that is OO and modularized is much easier to work with than code that is very imperative and/or relies on closure too heavily15:19
intellectronica2. unit tests (aka YUI tests) are a great way to test our code. in many cases much better than integration tests15:19
intellectronica3. working on UI features it is often easier to first concentrate on completing a working UI than on code quality15:20
intellectronicathat's fine, but it means that we should refactor the code immediately after it passes UI review15:20
intellectronicathat can happen either before code review, or if not, the reviewer should encourage doing that (either as part of this branch or in a followup branch)15:20
intellectronicafinally, since javascript code is so much more verbose, we propose a much higher limit, in order to encourage developers to not skip these important steps15:21
flacosteone of those being writing unit tests15:21
intellectronicawe think 1600 lines (double the limit we have for python) is reasonable15:21
barryintellectronica: how can we get more assistance in making our js work correctly, and be more consistent?  although everyone i've asked for help has been very helpful, i still often feel like i'm just hacking in the dark until it works15:22
flacostejust unit tests can talk 2/3 of your branch size15:22
barryintellectronica: when you say "javascript unit test" you're not talking about windmill, right?15:22
barryor are you?15:22
intellectronicabarry: to some extent, we are all a bit in the dark, discovering how to best go about this. discussions in #rhinos and on the canonical-javascript mailing list are a good way to exchange ideas15:23
marsbarry, yuitest, not windmill15:23
intellectronicabarry: no. we're talking about in-page unit tests using the yuitest framework15:23
barryintellectronica: fair enough :)15:23
intellectronicayou'll be glad to learn that they are much easier to write and execute15:23
barrymars: i don't know anything about yuitest.  where can i learn and/or where are good examples in our code?15:23
flacostelazr-js/src/*/tests15:24
barryintellectronica: that would make me very very happy :)15:24
sinzuiwhere are these unit tests in our tree?15:24
intellectronicabarry: see lib/canonical/launchpad/javascript/soyuz/tests for example15:24
marsbarry, right now the best examples are in lazr-js itself, but others will be landing examples in launchpad soon15:24
flacoste<...>/javascript/*/tests15:24
intellectronicaalso all widgets in lazr-js have tests15:24
flacostecurrently,only the soyuz module has some15:24
flacosteyep lazr-js/src/*/tests15:24
barrycool, thanks, i will be looking at those for the branch i'm currently working on15:24
flacosteunit tests are really "unit" tests15:25
flacosteno Launchpad15:25
flacosteonly DOM and you code15:25
flacosteand it's an self-created DOM15:25
marsbarry, btw, the test infrastructure is open for hacking and improvement.  Please feel free to stop the pain :)15:25
sinzuiSo I believe lp_dynamic_dom_updater.js is the only Launchpad test in our tree15:25
flacostein lauchpad, yes15:25
flacostelazr-js has tons of them15:25
intellectronicaso you still need to do some integration testing, but the advantage is that they encourage you to do a good job on modularizing your code15:25
barrymars: i will as soon as i can localize it.  right now, it's mostly a full-body numbing throb.  :)15:26
barryi think the other problem is that anything touching js just takes WAY more time to develop.  i don't think it's entirely the fault of not being as familiar with js.  it's a function of the ui 90/10 rule and the fact that yui documentation is lousy15:27
* barry knows he's just ranting15:27
intellectronicabarry: that, and the fact that we're all still learning. i bet in a couple of years we'll all be js/yui wizards. it takes time to build competency15:28
marsbarry, thankfully we have started to work on that. intellectronica's process improvements are an important step towards speeding things up15:28
barryintellectronica: true.  though, we need to keep that in mind when estimating story points and such15:28
sinzuiintellectronica: so your saying in a couple of year javascript will require less keystrokes to code?15:29
barrymars: yes, and they are greatly appreciated.  our velocity will certainly improve over time15:29
marssinzui, yes, actually15:29
* beuno yells from the back "FASTER! FASTER!"15:29
intellectronicasinzui: i'm sure in a couple of years you will have written enough gedit plugins to automate most of the crud :)15:29
sinzuiI guess the soyuz team won't notice since their class names exceed the line limit15:29
* barry mumbles "dabbrev"15:30
* sinzui pines for Javascript 1.7/ECMA ??15:30
bigjoolsat least we have tests!15:30
marssinzui, you want ECMA 3.1 :)15:30
intellectronicai think we digress. maybe we should start a js coder support group for ranting...15:30
intellectronicais everyone cool with the increase in diff limit (and understands why it's necessary)?15:30
barryintellectronica: yes :)15:30
sinzuiI think YUI looks to Java for inspirtation where are Javascript 1.7 looks to Python15:31
marssinzui, not the cloaked OO pining of 4.X ;)15:31
barryintellectronica: it does make it more difficult to review, but it does make sense.15:31
intellectronicabarry: well, you don't really need to review the block delimiters and the uber-verbose documentation15:31
marsintellectronica, +115:32
barryintellectronica: true15:32
barryintellectronica: i'm certainly up for an experiment here.  if it's too painful we can address it again15:32
intellectronicai think i'm done, unless anyone has anything to add15:33
intellectronicaand no, "javascript sucks" isn't a valid item. we already know that :-/15:33
barryintellectronica: thanks. can you send a message to launchpad@ about the length limit?15:33
mars:P15:33
intellectronicabarry: will do15:33
barry[ACTION] intellectronica to email launchpad@ about js branch length limit increase15:34
MootBotACTION received:  intellectronica to email launchpad@ about js branch length limit increase15:34
sinzuiHow are we increasing our JS reviewers?15:34
intellectronicasinzui: i think by now pretty much everyone on the team does js reviews15:34
marssinzui, formally?15:34
bigjoolswhich team?15:34
intellectronicabigjools: reviewers team (which is almost the same as the developers team)15:35
bigjoolsintellectronica: I don't review JS then15:35
marssinzui, because js reviews are open to all, we leave it up to the reviewer's discretion15:35
sinzuimars: I know a lot about javascript, but I do not consider myself a review because I do not know much about YUI, YUI unit tests, and windmill15:35
barryright.  we're asking all reviewers to do js reviews, but ask the swat team for help when needed15:35
intellectronicabigjools: well, time to start, then :)15:35
bigjoolsintellectronica: I need to write some js myself first :)15:35
salgadosame with me15:35
bac`me215:36
intellectronicabigjools: yes, i guess that's a prerequisite15:36
barryone problem with this though is that there's little consistency in our js style15:36
marssinzui, right.  Depends on the review.  If it is a one-line logic bug, then you don't need a JS mentor call15:36
barryfor example, every branch i've written has had different recommendations during js review15:36
intellectronicabarry: anything in particular you've noticed?15:36
marssinzui, but if you desire a second opinion, then give someone on the AJAX team a shout15:37
barryintellectronica: little things mostly, like where to stash objects, anim-reversing15:37
barryintellectronica: i think of it more as refinement rather than conflicts15:37
flacosteyeah15:37
flacostethat pattern are not clear yet15:37
barrymars: can you remind us who is on the "ajax team"?15:38
marsanim-reversing is about learning, and weak docs (my fault)15:38
flacosteso i think it's normal to get divergent opinion on these aspects15:38
barrymars: no, i think flacoste has it right.  we're learning as we go, so consistency suffers for now.  we're just building up tech debt we know we'll have to pay off later15:38
* barry sees no other way around that15:38
flacostebarry: EdwinGrubbs, mars, intellectronica, jtv, flacoste, rockstar15:38
flacostebarry: and noodles15:39
* mars can't type today15:39
flacosteand danilos - by virtue of having attended the Berlin sprint15:39
barryflacoste: thanks.  we should capture that on a wiki page, if it isn't already15:39
danilosbarry: I think it is15:39
marsbarry, it is15:39
barrycool15:39
barrythanks15:39
intellectronicabarry: deryck too knows a lot about js and yui and can help, b.t.w15:39
marsbarry, just check the 'skills' column on the current reviewers page15:40
danilosbarry: https://dev.launchpad.net/ReviewerSchedule15:40
marss/skills/specialities/15:40
barryas i said, everytime i've asked someone for some js help, y'all have been very nice and very helpful.  thanks!15:40
barrywe have 5 minutes left.  is there anything else to talk about today?15:41
flacosteyes15:41
flacostei have15:41
flacostei'd like to get an update on the JS testing experiment15:41
flacosteanyone tried it out in the last week?15:41
barrynope15:42
marsno, no JS landings :(15:42
flacostereally?15:42
flacosteok15:42
intellectronicaa better question is: anyone been through review with a js branch which hasn't gone through testing?15:43
flacosteyes, that's the proper way to phrase the question?15:43
flacoste!15:43
barryno, but i have a js branch going into review hopefully today15:43
flacosteaha!15:43
barryi guess i can be a guinea pig :)15:43
flacostewhat about the timeline branches that Edwin landed last week?15:44
marsflacoste, the easiest way to push back on this may be to have reviewer's ask "Has it been tested on all browsers?"15:45
barryguess not.  we're outta time, so shall we call it a day?15:46
flacostesure15:46
barryflacoste: let's ask again next week!15:46
barry#endmeeting15:46
MootBotMeeting finished at 09:46.15:46
barrythanks everyone15:46
intellectronicathanks barry15:46
adeuringthanks barry15:46
gmbTa barry.15:46
=== salgado is now known as salgado-afk
=== Edwin is now known as Guest37223
jmllalalala23:29
mwhudsonhi23:29
thumperhi ho23:30
barry#startmeeting23:30
MootBotMeeting started at 17:30. The chair is barry.23:30
MootBotCommands Available: [TOPIC], [IDEA], [ACTION], [AGREED], [LINK], [VOTE]23:30
barryjml, mwhudson, thumper hi23:30
jmlhi23:30
thumperhi23:31
mwhudsonhello23:31
barryso, do you guys have anything or would you like me to start by reviewing the summary from ameu?23:31
thumpersummary is good23:31
mwhudsonsummarizing is good23:31
barry[TOPIC] summary from ameu23:32
MootBotNew Topic:  summary from ameu23:32
barryhenninge brought up a question about the order of parameters in unittest assert*() methods23:32
barrywe agreed that we "prefer" but won't "enforce" the order: (expected, observed)23:32
jml+123:32
thumper+123:32
barrycool23:33
jmlthat's what bzrlib does, and I think it's drifted into a lot of lp.code(hosting)?23:33
mwhudson+123:33
barryyeah, consensus seemed to be behind this.  where there was some disagreement was on forcing people to do that order, so we compromised :)23:33
thumperI'd probably enforce it23:34
barrynext, intellectronica outlined some of the things that the ajax swat team's been discussing about js branches23:34
barrythumper: i would too, but there was no consensus, so "strongly prefer" seemed good enough23:34
thumperbarry: strongly prefer but individual reviewers may enforce L)23:35
barry:)23:35
barrymore on this, or move on?23:35
thumpermove on23:35
jmlwait23:35
jmlare there any actual _points_ from the js branches?23:35
jmlor was it just a discussion?23:36
barryjml: yes.  if we're moving on, i'll cut&paste intellectronica's points :)23:36
mwhudsongo go23:36
barrycode that is OO and modularized is much easier to work with than code that is very imperative and/or relies on closure too heavily23:36
barryunit tests (aka YUI tests) are a great way to test our code. in many cases much better than integration tests23:37
barryworking on UI features it is often easier to first concentrate on completing a working UI than on code quality. that's fine, but it means that we should refactor the code immediately after it passes UI review. that can happen either before code review, or if not, the reviewer should encourage doing that (either as part of this branch or in a followup branch).23:37
barryfinally, since javascript code is so much more verbose, we propose a much higher limit, in order to encourage developers to not skip these important steps. 1600 lines23:37
barrylook in .../javascript/*/tests for unittest examples; only soyuz is in our tree atm. or look in lazr-js.23:37
barryEOT23:37
jmlI would add "largely functional" to "OO and modularized"23:38
thumperquestion23:38
jmlbut that's just me.23:38
thumperwhere is lp.code javascript supposed to go?23:38
barrythumper: i don't know.  this morning was the first i heard of that stuff23:38
barrythe existing stuff is in l/c/l/javascript/*23:39
barryso... old tree23:39
thumperhmm..23:39
thumperwho is going to move this?23:39
barrybut i know very little about it (first looked at it about 10 minutes ago)23:39
barrythumper: another good question.  i don't even know how to /run/ it23:39
mwhudsonit seems we have a meeting of the js-resistant!23:40
thumpertrue23:40
barrymaybe when i send the minutes of the meetings, we can start a discussion of these on the ml23:41
barryi really can't give you much more than what i just pasted ;)23:41
jml:)23:41
barrythumper has a topic when we're ready to move on23:41
thumperIt'd be nice if we could have the javascript for the apps in the right part of the tree23:41
jmlI'm ready to move on :)23:41
mwhudsonmove on23:42
thumpermy topic23:42
barrythumper: it's all yours23:42
thumperthis week the code team removed all lp.code imports from canonical.launchpad.database.__init__.py and canonical.launchpad.interfaces.__init__.py23:42
thumperthe team leads agreed to get this done for their projects23:42
thumperwe should make sure there are no imports from these modules in reviews23:43
thumperto make their job easier23:43
thumperI personally changed many IPerson and IProduct imports to lp.registry23:43
barrythumper: awesome.  new is better :)23:44
jmlme too, actually.23:44
thumperthat's it23:44
mwhudson+123:44
jml+123:44
barry+123:44
barrythanks thumper23:44
thumpersold!23:44
barryanything else guys?23:44
jmlbarry, one more thing23:44
barryjml: you're up23:45
jmlbarry, I'd be kind of interested in knowing how many reviews people do per day.23:45
thumperjml: we have real metrics23:45
jmlbarry, because I'm thinking that the small size of asiapac lends itself (perversely) to everyone doing more reviews.23:45
thumperjml: in LP23:45
jmlthumper, extract them for me :)23:46
barryyes, that would be cool to know!  thumper can you get a losa to run a report?23:46
thumperjml: some LP lib magic should be able to do this23:46
thumperbarry: I don't need no stinking losas :)23:46
jmlbarry, very low priority, I guess. I've just been noticing how often I get interrupted, and wonder if Almighty Process can make that happen less :)23:46
barryor that :)23:46
* mthaddon stares at thumper23:46
thumpermthaddon: ... to run a script for me :)23:47
jmlthat's it.23:47
* thumper can do it himself :)23:47
barryjml: how does ocr work for you guys?  do you do it, or do you work on demand?23:47
* mthaddon is actually happy (apart from the stinking part)23:47
jmlbarry, we do work on demand23:47
jmlAND23:47
jmlwhen we are ocrs, we do a lot of reviews23:47
thumperbarry: I don't do OCR, but do quite a few on demand23:47
jmloften more from the americas on OCR days.23:48
barryjml: when you ocr do you just pop branches off activereviews or wait for devs to come to you.  and if the latter, do you get many non-asiapac branches?23:48
mwhudsoni don't really do ocr, to be honest23:48
jmlbarry, I pop off to a limit of 3. :)23:48
jmlbarry, or if they are small.23:48
barrymwhudson, thumper gotcha23:48
mwhudsongenerally whenever anyone says "can you do a review" i do it23:49
jmlbarry, I do get people who come to me, but it varies from week to week.23:49
mwhudson(ocr day or not)23:49
barryjml: makes sense.  actually, interestingly enough, your BOD overlaps with our EOD, so you could do some on demand america reviews occasionally23:49
jmlbarry, I sometimes do.23:49
barrythat's great, actually23:49
jml(also, it's different in summer)23:50
barrywell, thumper if you run that script, do let us know.  it would be interesting23:50
barryjml: who's summer? <wink>23:50
thumperkk23:50
barryanything else guys?23:50
jmlthat's it from me.23:51
* thumper is done23:51
mwhudsonall from me23:51
mwhudsonthanks barry23:51
barrythanks guys!23:51
barry#endmeeting23:51
MootBotMeeting finished at 17:51.23:51
* barry -> dinner23:51
thumperthanks barry23:51

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