Dev Week -- Operation Cleansweep - reviewing patches -- nigelbabu & DavidFutcher -- Wed, Jul 14th, 2010

(12:00:46 PM) nigelb: ok! Now, we're kicking
(12:00:54 PM) nigelb: Hello everyone, I'm Nigel and with me is David.  We're going to talk about patch review.
(12:01:03 PM) ***bobbo waves
(12:01:08 PM) nigelb: I'd like you all to take a look at
(12:01:32 PM) nigelb: This cycle, this is a very critical operation that we'd like to see carried out.  As you can read
(12:01:40 PM) nigelb: This cycle, this is a very critical operation that we'd like to see carried out.  As you can read
(12:01:43 PM) nigelb: grr
(12:01:51 PM) nigelb: in the wiki page, operation cleansweep is about reviewing all the bugs in Launchpad against the Ubuntu project which have a patch attached.
(12:01:59 PM) nigelb: (sorry folks, paste fail ;)
(12:02:17 PM) nigelb: We have a lot of awesome contributors who write code to fix bugs, but we lose out on this awesomeness because we're slow to review the patches.
(12:02:26 PM) nigelb: Its not something thats new to an open source project, but its something that we in Ubuntu would like to pay attention to and we NEED your help!
(12:02:54 PM) bobbo: So how can you help out with patch reviews?
(12:03:05 PM) bobbo: We have a script which automatically finds bugs with patches that need reviewing
(12:03:20 PM) bobbo:  Of course, it can't decide whether the patch is good or not, we need a human for this. This is where you guys come in
(12:03:37 PM) bobbo: The script subscribes us to all Ubuntu bugs with a patch attached minus the packages that we exclude (
(12:04:02 PM) bobbo: The first step to reviewing patches is to look at the current work queue.
(12:04:40 PM) bobbo: We've got a big Launchpad query which filters out all the reviewed patches and just shows the ones we need to look at
(12:05:01 PM) bobbo: You can find the bug list at
(12:05:33 PM) bobbo: AS you can see was have currently around 1500 bugs in the unreviewed queue
(12:05:46 PM) bobbo: Those are bugs that have patches that need to be reviewed and we haven't gotten around to do
(12:06:08 PM) bobbo: Just for perspective, we started out with just under 2000 bugs in that list
(12:06:28 PM) bobbo: Yeah, we're getting there, but unfortunately new patches are added every day!  We get almost 100 new patches a month, maybe more.
(12:06:40 PM) bobbo: also nigelb's laptop just broke, so that's slowing us down too :D
(12:06:50 PM) nigelb: heh, its getting fixed :)
(12:06:55 PM) nigelb: We'll quickly summarize the process and we will show you some specific examples to get a better grasp of the idea.
(12:07:11 PM) nigelb: Can all of us open the review guide?  Its at
(12:07:37 PM) nigelb: So now you have the list of bugs.  Pick a bug to work on.
(12:07:47 PM) nigelb: Once you pick a bug, you have to reproduce the bug again.  Sometimes the bug is fixed and someone forgot to close it from changelog or it was fixed upstream.
(12:08:09 PM) nigelb: No point of the patch if the bug is already solved.  Close the bug as "Fix Released"
(12:08:22 PM) nigelb: If the bug is reproducible, the next step is to check if the patch applies.
(12:08:44 PM) nigelb: If the patch is old, the source may have changed so much that the patch does not apply any longer.
(12:09:12 PM) nigelb: If the patch fails to apply or fix the bug, you should add the patch-needswork tag and ideally leave a comment explaining what is wrong with the patch
(12:09:22 PM) nigelb: and ask the original author if he can re-write the patch.
(12:10:30 PM) bobbo: f you can make sense of the code enough to correct, that would be even more great
(12:10:37 PM) bobbo: fail, If*
(12:10:52 PM) bobbo: This bug though will be off our list since we can't work with the patch unless its reworked.
(12:11:10 PM) bobbo: If the patch applies and the bug still exists, we need to check if it fixes the bug.
(12:11:27 PM) bobbo: Again, no point in a patch if the bug is present after applying the patch and run the program again.
(12:12:06 PM) bobbo: If the patch works, we have a few options
(12:12:36 PM) bobbo: Ideally we should forward it upstream for their take on it because we don't want to conflict with them if they have a better way of fixing it or if we introduce some dangerous regressions
(12:12:51 PM) bobbo: Also, since upstream is the original author of the code, they have a good idea of what makes sense.
(12:13:28 PM) nigelb: Encourage the patch author to forward the bug upstream or forward the bug upstream yourself, once the patch is forwarded upstream, add the patch-fowarded-upstream tag.
(12:13:42 PM) nigelb: This helps us keep track of the good that came out of it (and jcastro gets the credit :p)
(12:14:07 PM) nigelb: Depending on what upstream feels about it, you may need to modify the tag to patch-accepted-upstream or patch-rejected-upstream.
(12:14:21 PM) nigelb: Sometimes though, the bug maybe a bit more critical than to wait for upstream to fix it and we're sure the patch is going to help us.
(12:14:38 PM) nigelb: In that case, we forward the bug to Debian and add a 'patch-forwarded-debian' tag.
(12:15:24 PM) bobbo: Again, depending on feedback from Debian, we mark the patch as and patch-accepted-upstream and patch-rejected-upstream.
(12:15:44 PM) bobbo:  In very rare cases though, the patch is just wrong and we have to reject it.
(12:16:02 PM) bobbo: In that case, we tag the bug with 'patch-rejected'
(12:16:38 PM) bobbo: In other cases the bug is so severe that the need to deal with it as quickly as possible
(12:17:11 PM) bobbo: or the patch is so perfect, well tested and unlikely to cause regressions that we won't lose sleep if we apply it without upstream looking at it
(12:17:37 PM) bobbo: In these cases, the patch is applied in the Ubuntu package, and then forwarded to upstream or debian
(12:17:59 PM) bobbo: One extra complication is that sometimes patches onfly affect the packaging of an application
(12:18:23 PM) nigelb: ok, so you've all asked some questions, we'll be answering those now
(12:18:31 PM) ClassBot: devildante67 asked: Does Operation Cleansweep include bzr branches or only patches?
(12:18:59 PM) nigelb: It includes only patches.  the bzr branches would follow udd and are sponsored in directly.
(12:19:08 PM) nigelb: udd = ubuntu distributed development
(12:19:29 PM) ClassBot: joaopinto asked: when we have the technical ability to do so, is it ok to rework the patch ourselves or should we wait for the path feedback instead ?
(12:19:52 PM) nigelb: like bobbo said earlier, if you can rework it, by all means, go ahead :)
(12:20:10 PM) ClassBot: AudioFranky asked: How do I know/find the exact Ubuntu source package version against which the original patch submitted created his patch?
(12:20:45 PM) nigelb: If a bug was reported via apport, should be there in the bug report.  Otherwise, its going to be a bit of guesswork based on version of ubuntu, date of filing, etc
(12:21:00 PM) ClassBot: joaopinto asked: are those tags/workflow written somewhere ?
(12:21:09 PM) bobbo: You can often check using the date the bug was reported and matching it up with the changelog :)
(12:21:22 PM) nigelb: thanks bobbo :)
(12:21:41 PM) nigelb: Yes, Review process is documented
(12:21:44 PM) bobbo:
(12:21:47 PM) nigelb: is your friend :)
(12:21:59 PM) ClassBot: mythos asked: the ability of the reviewer is never checked, so everybody can review patches?
(12:22:38 PM) nigelb: Yes, everyone can review patches.  Noone blocks you on anything.  There is a team, but not being a member does not block you from contributing.
(12:23:02 PM) ClassBot: dupondje asked: when a patch is created for a important bug in for example lucid, and its fixed in maverick, do we still need to review it to get it into lucid then ?
(12:23:25 PM) nigelb: It is a case-by-case situation, but this calls for an sru and the sru process
(12:23:50 PM) nigelb: often, I've taken up sru for hardy or earlier releases when the patch was there, but it was fixed in a later ubuntu release and everyone forgot about sru
(12:23:56 PM) bobbo: sru = Stable Release Update
(12:24:43 PM) nigelb: ok, so ClassBot tells me the good news that question queue is empty
(12:24:52 PM) nigelb: lets move onto some specfic examples
(12:25:07 PM) nigelb: Bug #544242
(12:25:08 PM) ubot2: Launchpad bug 544242 in empathy (Ubuntu) (and 1 other project) "[PATCH] Empathy should allow users to toggle auto-away mode on/off (affects: 1) (heat: 38)" [Wishlist,Fix released]
(12:25:22 PM) nigelb:  This bug was opened with a patch provided by the  reporter.  It was subscribed by the subscription script with the patch  tag.
(12:25:51 PM) nigelb: The patch was forwarded upstream, and recieved the patch-forwarded-upstream  tag
(12:26:07 PM) nigelb: After upstream accepted this patch, it recieved the patch-accepted-upstream  tag and is ready to be fixed in Ubuntu.
(12:26:34 PM) bobbo: Bug #544242
(12:26:35 PM) ubot2: Launchpad bug 544242 in empathy (Ubuntu) (and 1 other project) "[PATCH] Empathy should allow users to toggle auto-away mode on/off (affects: 1) (heat: 38)" [Wishlist,Fix released]
(12:26:59 PM) bobbo: fail
(12:27:07 PM) bobbo: Bug #462193
(12:27:08 PM) ubot2: Launchpad bug 462193 in djvulibre (Debian) (and 2 other projects) "djvulibre-bin produces garbage in the root (/man1/*) (affects: 16) (dups: 2) (heat: 56)" [Unknown,Unknown]
(12:27:32 PM) bobbo: This patch only had to go to Debian as the changes only affected the application's packaging
(12:27:57 PM) bobbo: it makes non sense in most cases to send patches against the packaging to the upstream as they normally don't touch it at all
(12:28:12 PM) bobbo: so it was forwarded to Debian and received patch-forwarded-debian
(12:28:20 PM) bobbo: it was then accepted and receive patch-accepted-debian
(12:28:45 PM) bobbo: and now we're waiting for the fix to be merged or synced into the Ubuntu archives
(12:29:14 PM) bobbo: One last example
(12:29:19 PM) ClassBot: joaopinto asked: Once a bug gets patch-accepted-upstream, how do we ensure that the patch is applied to the current development package ?
(12:29:36 PM) nigelb: bobbo: finish the example and we'll answer this :)
(12:29:41 PM) bobbo: okay :)
(12:29:56 PM) bobbo: Bug #33288
(12:30:01 PM) ubot2: Launchpad bug 33288 in poppler (Ubuntu Lucid) (and 2 other projects) "Evince doesn't handle columns properly (affects: 28) (dups: 9) (heat: 191)" [Medium,Fix released]
(12:30:33 PM) nigelb: ah, that was a famous one :)
(12:30:40 PM) bobbo: The patch was forwarded upstream, where it was rejected
(12:31:12 PM) bobbo: it's now been fixed, however with a different patch
(12:31:31 PM) bobbo: </examples>
(12:31:40 PM) nigelb: heh, thanks bobbo :)
(12:31:48 PM) nigelb: ok, so about the question
(12:32:11 PM) nigelb: in our hurry to write this session up, we missed a step, which actually answers the question
(12:32:47 PM) nigelb: when you decide to change the tga or comment on the bug, subscribe yourself to the bug.  That way you can keep track of the bug.
(12:33:21 PM) nigelb: When the patch is accepted upstream, you can either get it into ubuntu directly if its very severe or wait for it to flow downstream
(12:33:53 PM) nigelb: But essentially, our mission would be complete, i.e. patches don't rot in launchpad and die
(12:34:17 PM) nigelb: Also, contributors who write awesome patches don't get discouraged from writing more code
(12:35:01 PM) ClassBot: devildante67 asked: In the last example, the patch has been accepted, but the upstream bug is still set to Confirmed, even with the tag patch-accepted-upstram. How's that possible?
(12:35:09 PM) bobbo: I've just checked this up
(12:35:19 PM) bobbo: either the upstream bug report simply hasn't been updated
(12:36:11 PM) nigelb: the upstream bug hasn't been updated - there is a comment "pushed to git master"
(12:36:16 PM) bobbo: or it may be because we have cherry picked our patch from their git repository and they don'[t move from COnfirmed until it's actually been pushed out in a final release
(12:36:57 PM) nigelb: joaopinto: To answer your question, you have to take the initiative.
(12:37:26 PM) nigelb: If its a main application, talk to desktop team or other subteams if its in their packageset
(12:37:34 PM) nigelb: they'll glady welcome the help
(12:37:55 PM) nigelb: If its universe, try mailing the DM who's responsible for the package.
(12:37:56 PM) bobbo: as long as there is an active package maintainer in Debian, all upstream accepted patches should filter down at some point
(12:38:28 PM) nigelb: Now, if there is no active maintainer and the patch is good, you have to do some effort on the debian side
(12:39:44 PM) nigelb: If a package is orphaned in debian, you can do a QA upload.
(12:39:59 PM) nigelb: You'll need a DD who can sponsor you though.
(12:40:24 PM) nigelb: A quick mail to  debian-mentors mailing list should help you in that case
(12:40:34 PM) bobbo: If you're not a packager, you can tell a MOTU and they'll hopefully keep track of the package for you
(12:40:58 PM) nigelb: I'd like to point your attention to a package called galrey
(12:41:01 PM) nigelb:
(12:41:01 PM) bobbo: dropping a mail to the MOTU mailing list or shouting in #ubuntu-motu will at least put it onto a packager's radar
(12:41:38 PM) nigelb: this package had a patch in ubuntu, its an orphaned package in debian
(12:42:08 PM) nigelb: I spoke to a MOTU friend and she recommended uploading to debian directly, since we don't want to carry a diff.
(12:42:41 PM) nigelb: A quick hop into oftc, #debian-mentors and in some time it was awaiting sponsorship and the DD who guided me uploaded into the debian archive
(12:42:52 PM) nigelb: I put in a sync request and we got into lucid in a few days
(12:44:00 PM) nigelb: joaopinto: I'll answer in here for that one
(12:44:20 PM) nigelb: joaopinto asked "that's a bit odd, because a bug reporter expects a bug to be fixed for the current release, isn't that the goal of testing development releases :) ?"
(12:44:58 PM) nigelb: Expectations are high, but that leads to trouble like diverging from upstream and diverging from debian.
(12:45:23 PM) nigelb: If you've every done a 3-way merge, you'll know that we *really* don't want that
(12:46:03 PM) nigelb: When packages are synced that's a better use of our time.  Even if we don't work on Ubuntu directly at times.
(12:46:38 PM) nigelb: Its a bit of a pain, but the reward is much better.  More distro's carry the patch and more people have a happy time.
(12:46:55 PM) nigelb: joaopinto: does that answer your question to some extent?
(12:47:47 PM) nigelb: Anymore questions folks?
(12:48:18 PM) nigelb: You see, bobbo and I both lost notes for this session and wrote it in 20 minutes before session started, so its a bit short :)
(12:48:19 PM) bobbo: dupondje asked: if a bugreport has status 'incomplete' it has been rejected and doesn't need check anymore? Also 'Fix Commited' means is has been accepted? So no check needed neither ?
(12:48:48 PM) nigelb: incomplete = we need more information abaout the bug from the reporter
(12:48:49 PM) bobbo: Incomplete means that not enough information has been given in the report and we have asked for more
(12:49:01 PM) bobbo: Fix Committed is a bit of an odd one in Ubuntu
(12:49:13 PM) bobbo: it can mean many different things and it's often not used correctly
(12:49:33 PM) nigelb: and desktop team uses it for a specific purpose which confuses us often.
(12:50:19 PM) nigelb: Generally, fixed commited means the fix in repositry, but not yet rolled into a release.
(12:50:31 PM) bobbo: basically for patch revirew purposes, it's best to ignore Fix Committed and focus on the patch-* tags on the bug instead
(12:50:58 PM) ClassBot: dupondje asked: if a bugreport has status 'incomplete' it has been rejected and doesn't need check anymore? Also 'Fix Commited' means is has been accepted? So no check needed neither ?
(12:51:09 PM) nigelb: we did that one :)
(12:51:11 PM) bobbo: fail, I can't work classbot
(12:51:23 PM) nigelb: heh
(12:51:37 PM) bobbo: empty queue, does anyone have any questions for the final 9 minutes?
(12:52:22 PM) bobbo: none? Okay then
(12:52:37 PM) bobbo: We'd lvoe for you guys to help out reviewing patches and reach the goals of Operation Cleansweep
(12:52:49 PM) nigelb: Join us in #ubuntu-reviews
(12:52:58 PM) nigelb: talk about it at your loco events
(12:53:03 PM) bobbo: if you want more information or would liek some help getting started please feel free to drop into #ubuntu-reviews
(12:53:16 PM) nigelb: Help us by reviewing 1 patch a day
(12:53:31 PM) nigelb: Also, we have this beautiful progressbar that daker made for us
(12:53:46 PM) nigelb: if you can showcase it on your website or blog that would be great
(12:54:03 PM) ClassBot: devildante67 asked: Is Operation Cleansweep a Maverick only operation, or do you plan on extending it for future releases?
(12:54:30 PM) bobbo: The original plan was to get all 2000 patches reviewed by this cycle's releaase date
(12:54:30 PM) nigelb: The focus is on getting unreviewed patches to 0 by maverick release
(12:54:55 PM) nigelb: we'll have more patches and then our focus would be keeping it low all the time, reviewing them instantly
(12:55:23 PM) bobbo: This i project was started to get rid of the huge pile of patches sitting in LP
(12:55:43 PM) bobbo: so that in future, patches will be reviewed much quicker
(12:55:56 PM) nigelb: jono just spontaneously came up with the idea
(12:56:08 PM) nigelb: (and spontaneously assigned it to me :p)
(12:56:33 PM) dholbach: nigelb: you asked for it :)
(12:56:43 PM) nigelb: dholbach: heh
(12:56:50 PM) ClassBot: ean5533 asked: So who's fault is it that it got this bad? nigelb or bobbo?
(12:56:54 PM) nigelb: Well, the situation got bad because we never had a system to deal with it
(12:57:16 PM) nigelb: About 6 months back, I was innocently hanging out in #ubuntu-motu and said "I'm bored"
(12:57:28 PM) bobbo: (big mistake)
(12:57:54 PM) nigelb: yes, in retrospect :p
(12:57:54 PM) ClassBot: penguin42 asked: What about patches in debian bug tracking system that fix bugs shared with us?
(12:58:14 PM) nigelb: Emmet a.k.a. persia said, "go review patches" and I started writing the workflow which we all perfected.
(12:58:14 PM) bobbo: They are essentially patch-forwarded-debian
(12:58:34 PM) bobbo: Okay we'd better clear off before the next session
(12:58:50 PM) bobbo: thanks for listening and please get involved with Operation Cleansweep!
(12:59:23 PM) nigelb: Yes, Thank you folks.  I'm not going anywhere though.  I'll talk about the "how to forward patches" with pedro :)
(12:59:28 PM) pedro_: We're having a bug day for Operation Cleansweep next week so stay tune ;-)

MeetingLogs/devweek1007/CleansweepReview (last edited 2010-07-14 17:57:15 by pool-71-123-28-183)