Closed
Bug 120233
Opened 23 years ago
Closed 22 years ago
Discussion Bug - Bug Overload
Categories
(Bugzilla :: Bugzilla-General, defect, P1)
Bugzilla
Bugzilla-General
Tracking
()
RESOLVED
WORKSFORME
People
(Reporter: CodeMachine, Assigned: justdave)
Details
We have way too many bugs. Not serious life-altering show-stopping bugs, but little niggling bugs that you might not notice were there at first. Release after release goes by and more important things always prevent them from being fixed. This isn't good enough. Ideally we want to get to the stage where each release is "no known bugs". 2.16 was intended to be this, but it ain't gonna happen. This is a brainstorming bug, no idea is too ridiculous - it could lead onto a useful idea.
Reporter | ||
Comment 1•23 years ago
|
||
It seems that in the rush to get in new must-have features, the problem is getting worse, although I doubt our bug density is increasing. Can we just set this as a release blocking goal for a release, and clear off all other goals, or is this impractical? Do we instead need to do this over several releases? Perhaps we could set a firm release blocking goal of a certain decreasing number of bugs each release?
Comment 2•23 years ago
|
||
The trick here is to take one CGI at a time. For example, as I templatise, I'm also taint-moding, and trying to fix other little bugs that have been open for a while. We should start doing that thing where each bug has the relevant filename stuck in the status whiteboard again; then people can query for one filename and make an uber-patch with lots of little niggles sorted. The number of little bugs will go down, and the ease of fixing them go up, as the code gets cleaner. Templatisation helps a lot here. Gerv
Comment 3•23 years ago
|
||
>The trick here is to take one CGI at a time. For example, as I templatise, I'm
>also taint-moding, and trying to fix other little bugs that have been open for a
>while.
I've been doing that too, but I'm starting to think it creates more problems
than it solves. After all, the more problems you fix the bigger your patch and
the harder it is to test and review. We need to be careful about how many
changes we roll up into uber-patches, which basically just means use common
sense. If I could have done it over again, for example, I probably would not
have rewritten the HTML for buglist.cgi in the process of templatization but
rather split that into a separate bug and handled that once the templatization
work was completed.
Comment 4•23 years ago
|
||
Myk - templatisation spanks a file so hard that it ends up being mostly a rewrite anyway. So, IMO, the reviewing burden is not raised by fixing other bugs at the same time. Certainly, review-of-templatisation + review-of-bug-fix-patches > review-of-templatised-fixed-patch. Gerv
Comment 5•23 years ago
|
||
I think the combination of these two aspects would be best: - As Gerv said: When you are working in one area, watch out for other bugs in the same area that you can easily fix on the way. The benefit here is that you avoid the cost of multiple "context switches" in the developer's mind. - But at the same time keep separate issues separate. If all the issues are one-liners, this can be as easy as providing a patch that has a handfull hunks, each being a fix for a different problem, and an explanation that the first hunk is for bug x, the second for problem y, etc. If the issues are more complex, some other mechanism is needed. I have some good experience with fine-grained, incremental development: working in a cvs tree, checking in very often. Of course, this only works because I do not need to get someone to review my changes before checking them in. This way, you can separate huge, mostly mechanical changes, like moving code from one place to another, replacing something with something else in many places, or adding a lot of explanatory comments, from significant semantic changes. At the same time, it gives you a changelog with the history of the changes / the patch. I believe that this will make life easier for reviewers, too: In addition to the big all-inclusive patch and the resulting file(s), they have the sequence of steps that lead to the patch, together with an explanation for each step. If a reviewer trusts the patch author to work carefully, he can just glance over the mechanical changes, or even rubber-stamp them, and concentrate on the significant parts. Now, if this sounds a bit like BugzillaPlus, then you are right. See bug 104681. I think that the recent templatization patches would be easier to handle if they had been created this way. (But of course, this is pure speculation :-)
Comment 6•23 years ago
|
||
> So, IMO, the reviewing burden is not raised by fixing other bugs
> at the same time. Certainly, review-of-templatisation +
> review-of-bug-fix-patches > review-of-templatised-fixed-patch.
To clarify: I disagree with this, if the fixes are not clearly separated from
the rest of the changes.
Comment 7•23 years ago
|
||
For this "fix many bugs in a certain area together" to work one needs proper code modularization (partly already done with the one-file-per-module approach) as well as a correspondence between bugs and code areas / modules. The latter is partly solved by the use of components, but some components are very large so that the use of tracking bugs (or having the filename and/or code area in the summary) or (not-yet-existing) sub-components may help. If the bugs were clearly associated with a finite set of features, it would be possible to formulate goals for each feature for a release (prototype/alpha, usable/beta, bugfree/gamma or some other levels), and easily identify the bugs associated with each level. Imagine a list of already bugfree features growing with each release. BTW, mozilla has the same problem. See FeatureZilla bug 75172.
Comment 8•23 years ago
|
||
I disagree with this. Whilst multiple-_small_-bugs-at-once (emphasis on one file, < 5 lines) may be easier to review in some cases, tehy cause problems when trying to trace down regressions/history later on. checkin comments mentionging 5-10 bugs are a real pain to work with. I think our real problem is that we need more reviewers. The current default is 2 reviewers unless someone thinks otherwise. I'd like to change that to 1 reviewer unless that reviewer/submitter wants more eyes. I know that multiple reviews find issues, but I think that unless we have some way of tripling the number of reviewers, its hurting us more than it helps.
Reporter | ||
Comment 9•23 years ago
|
||
We had the same problem when we had single reviews. We introduced double reviews because we had extremely serious bugs get through review for both 2.12 and 2.14. We need to at least give it a chance and see what happens for 2.16 and 2.18 I think.
Comment 10•23 years ago
|
||
I think uber-patches are not so good an idea, for reasons already explained (just adding a vote. :-) But there is 1 other reason not to do it. Some of us would like to help more, but our time is very limited. If the bugs are all large, it's hard for us to help. And, if people are doing uber-patches (or multi-patches), then any work I do on the small patches are wasted because the multi-patch already contains my work, and it isn't always clear the work is being done when it's rolled up like that. It won't take too many of those conflicts before I stop contributing. I would really like to see b.m.o change the goal for the next release to NOT add any more major items, but just take/add/use all the existing bugs with patches to reduce the count. OK, probably have to do any security needs that come up, but those are the only new ones allowed!
Comment 11•23 years ago
|
||
Since this is a discussion bug, and no idea is too ridiculous, let me describe another idea. This new idea depends on a checkpoint- or milestone- or developer-release-system for bugzilla as discussed in bug 120236, so that nobody will ever have to check out bugzilla code for a production system using a timestamp any more. In this new world, it may even make sense to create branches for each of the "milestones", so that some critical fixes can be checked in on such a branch in case the next checkpoint is still some time ahead when the bug is discovered. Assumptions: - There seems to be consensus that big patches for multiple issues are evil. - Reviewers are a scarce resource. Idea: - Have many small patches/checkins, and accumulate them for review afterwards. Of course, this needs some coordination to work. First, for small and obvious fixes, the current method of creating a patch and having it reviewed before checkin is preferred. But for larger projects which are local to one or two files, it may make sense to officially start a project by creating a bug for it, getting permission from justdave to work on it (e.g. if something is a release blocker, it will have to be done anyway), then checkin incrementally as you work on it (referencing the project bug and rephrasing the changes in the log message), and when you are done with it, post a link to a bonsai query for checkins referencing your project bug for reviewers. Then, with the "show me all the diffs" button, reviewers can follow your work chronologically which should make review a lot easier. At some point, justdave stops giving permissions for new projects, and all existing projects are expected to be finished within a week. Then, those that still need review are examined, and either some reviewers are found who pick some nits and help get the project finished, or if noone is able to review, justdave can decide to tolerate it (either just for the current checkpoint, or completely), or, if there is no hope, it can be backed out (i.e. the file(s) are reverted to the original versions, and the (hopefully small) number of other fixes that went into that file since then is reapplied. In case of a backout, the work that has been done so far is attached to the project bug as a single patch, for future reference. In this model with some "stabilization period" and "freezes", huge, global changes could get in as "carpools" at the beginning of a cycle (e.g. the namespace introduction).
Comment 12•23 years ago
|
||
Actually, doing fine grained development like this in the main cvs tree seems to have disadvantages: The revision history will accumulate a lot of unnecessary entries that make it harder for future developers to scan through it and find the relevant information quickly. So maybe it's better to do this kind of fine-grained checkin + review in a different tree, and then port it into the main tree as a whole. See this article, e.g.: http://www.lib.uaa.alaska.edu/linux-kernel/archive/2002-Week-04/1178.html Bradley, Kevin: do you want to respond to this?
Comment 13•23 years ago
|
||
I prefer the fine grained stuff to the "6 things all in one go" type commit. The problem on lkml is that of people commiting works-in-progress. Thats not an issue for bugzilla - stuff checked in has undergone review, or its on a branch.
Comment 14•23 years ago
|
||
Well, in comment 11 I'm describing the possibility of fine-grained, work-in-progress checkins with accumulated review afterwards. But maybe that could be better done on a branch then? But then the checkin on the trunk would still be 6-issues-in-one, or when moving from the branch to the trunk the patch would have to be split again into some reasonable pieces.
Comment 15•23 years ago
|
||
- Fine grained stuff is _much_ better to review. Why do you think we take ages to review templatization bugs? And undoubtedly review is done better on shorter bugs; my eyes gloss over 300+ line patches. - The problems discussed in this bug involve lack of people to work on bugs, along with , perhaps, some work needed on setting priorities/severities and observing that when fixing bugs. - Apart from fixing priorities and freeing people up with faster reviews, we simply need more developers if we want to set harder targets. Otherwise, I think we are fine as we are, speedwise.
Comment 16•23 years ago
|
||
Follow up to comment 12... Andreas, you have point, but IMO, it's outweighed by the way development is done, i.e. by lots of people each without a lot of time (except for those like Myk who do this full time). To rip a paragraph out of the article you posted: --- Lots of small checkins and branching means a lot of history which is useful to me but to nobody else. ...[snip]... It does not matter if I backtracked and discarded some twigs to get to that final end point, ***the rest of the world only cares about the end point.*** --- Please note that last line that I put *'s around. I'm sure the author didn't mean it quite the way I'm going to say this but... I really doubt that many people are going to try to scan thru the history. I would think most people are going to pick a point in time, grab the code there, and off they go (or at least that's the way I operate. :-) The many details are there for those that want to look, but what really matters is getting the changes in, and I think that's only going to happen if the vast majority of the patches are small (I know that's relative :-) ; and if that creates a lot of history, so be it, at least the code got written. (and we all want the code written, right? :-)
Comment 17•23 years ago
|
||
if that's the case then all development should be on branches and we should just land the branch for each release. i like being able to follow the trunk and understand what's going on. I like being able to find out which person really made which change. And I don't like trying to figure out branches. However my experience is mostly w/ NSPR, JSEng and JSDom branches where some of the changes might not even have been done in cvs.mozilla.org
Comment 18•23 years ago
|
||
> - Fine grained stuff is _much_ better to review. Why do you think we take ages
> to review templatization bugs?
Imagine how much longer it would have taken if we'd done it incrementally. We'd
be here until Christmas.
About branches, I agree with timeless - the trunk should be the main
development, and we should use branches only in rare circumstances.
Gerv
Comment 19•23 years ago
|
||
> > - Fine grained stuff is _much_ better to review. Why do you think we take ages > > to review templatization bugs? > > Imagine how much longer it would have taken if we'd done it incrementally. We'd > be here until Christmas. Oh, sorry, that's not what I intended. Templatization bugs are _inherently hard to review_ because usually all lines are touched, and reading the diffs is hard. I just wanted to show that when the patches are very large, review is slower and harder. If we can avoid making large patches, we should (so not compounding fixes is good); however, some changes simply whack whole files.
Comment 20•23 years ago
|
||
> Oh, sorry, that's not what I intended. Templatization bugs are _inherently hard
> to review_ because usually all lines are touched, and reading the diffs is hard.
No wonder you've been having problems if you've been reading the diffs!
Review the whole new file as a unit, perhaps side by side with a copy of the old
one. It's much easier.
Gerv
Comment 21•23 years ago
|
||
Hm. If I understand you correctly, we have the following axioms: (1) You (or at least some people) want (or prefer) fine-grained development, so that a single checkin fixes a single issue. (2) You (or at least some people) do not want work to happen on branches (with only very few exceptions). (3) There is a significant time interval between a request for review and the completion of the review (at least in most cases). (4) All code must be reviewed before it is checked in on the main trunk. And now take a look at cases where several changes have to be made which are not independent of each other, at least patch-wise. (I claim that this case is quite common. E.g. if you rename some variables, add some comments, refactor some code, rewrite some functions, make an optimization here, a simplification there, change the api a bit...) In this case, you either (a) end up posting an endless series of big attachments to bugzilla (like Myk's 100KB patches in bug 103778), or (b) your development is blocked for extended periods because you are waiting for review for your first step(s), and check them in, and then continue with your next steps. Neither of these outcomes is good: In case (a) it is hard to deal with these large patch sizes over and over again, and you don't have the history (the logical sequence of changes / transformations), you can't say "Ok, I have reviewed the first half of the changes, this shouldn't break anything, so you can check them in, and I'll continue reviewing the second half next week" because this patch is all-or-nothing. And the longer it takes, the more likely it is that it conflicts with other changes that are happening in parallel. In case (b) bugzilla development will simply be stalled, which is even worse since there's a lot of changes to be expected in the near future: modularization, mod_perl support, group system rewrite, move to generic fields, ... Please correct me if this reasoning is flawed. I think (3) is the hardest of the axioms, we need to accept that. So, given (1), the only way out is to give up (2), or to give up (3) and allow review-after-checkin a la comment 11. I don't see Dave making compromises with (3), so my suggestion would be to give up (2), either in the form of a separate cvs repository a la BugzillaPlus, or in mostly unrestricted branches in the main cvs repository. Or do we accept the consequences (a) or (b)? Or aren't they necessarily consequences? Comments?
Comment 22•23 years ago
|
||
In my opinion, big patches are always going to be hard to land. Sure a branch would let them land faster, but it doesn't avoid the merge problems, and I don't think that's worse than blocking work till it lands. I also think that once templates have landed, a lot of blocked work will move on better, and we will feel less blocked. 2.16 was a lot of hard work. Things will improve. Gerv: I do that, but sometimes I don't have a tree to apply the diff to :) And it's still a tough review.
Comment 23•22 years ago
|
||
I'm a consultant who is currently getting a Bugzilla installation up and running at this customer's site. The site is securely tugged away behind a firewall, so CVS access is difficult. When I first fetched Bugzilla, I knew not what I know now. Accessing CVS at home and carrying stuff to the customer's site did not seem worth the trouble. So 2.14.1 is what I've got and have been customizing these days. I try to give back to the free software community. Your page http://www.mozilla.org/projects/bugzilla/how_to_help.html talks to my heart. I diligently file bugs as I find them. However, in the Bugzilla case, that's been somewhat of a frustrating experience. Basically, 2.14.1 works. That said, there indeed are many little nagging bugs. Yet time after time after time, as I file a bug, I find soon receive an email that it has resolved as a duplicate, as it is a special case of some much more general "grand scheme" thing. Typically that grand scheme is something of the category "I'd just love to have that". I am willing and think myself capable to come up with a patch every once in a while, certainly for many of those little nagging creatures. But my general impression, contrary to what you say in that page I've mentioned: Patches against the last tarball revision 2.14.1 are close to useless. I fancy there must be more people out there with tiny, not so terribly mission- critical installations of Bugzilla. These people could ideally help you very well with those tiny, not so terribly mission-critical bugs. If only you'd let them. To let us, give us 2.15.x "bleeding edge" tarballs regularily. You have a shortage of reviewers? Put stuff to be reviewed in there, we'll do the reviewing once we get to see it. I encourage you to run your production site as 2.14.1, while some 2.15.9 or so is out on the "bleeding edge" download page. Don't do it the other way round. (As a side remark: You folks have all read http://www.tuxedo.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ , right?)
Assignee | ||
Comment 24•22 years ago
|
||
Andreas: believe it or not, that's actually the plan as soon as 2.16 is out. We didn't start with the 2.15.x right now because the Templatization rewrite was gutting major portions of Bugzilla and it would just outright confuse people to have big chunks of the hierarchy get renamed and moved around and such between releases not just once, but several times (causing them to have to redo any customization they've done over and over). There will be 2.17.x releases. We'll be aiming for once a month. People reporting bugs in 2.14.1 that were fixed a long time ago in CVS (but not released yet) is another one of the primary reasons for doing it this way :-) It'll just save work for everyone.
Comment 25•22 years ago
|
||
Dave: Seems to be my fate here: One more dupe. One more time, I've suggested something, only to find out it is already in the doing, and, of course, again, I'd just love it if it were here already :-) . Good news, though, thank you! Some more tunnel ahead of us, and, as it happens, nobody quite knows how much tunnel (at least http://www.mozilla.org/projects/bugzilla/status_updates/ doesn't), but there's light promised!
Reporter | ||
Updated•22 years ago
|
Priority: -- → P1
Target Milestone: --- → Bugzilla 2.18
Comment 26•22 years ago
|
||
I think we should close this bug; the mailing list and newsgroups are more appropriate forums for discussion. Gerv
Comment 27•22 years ago
|
||
Resolving. Gerv
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → WORKSFORME
Assignee | ||
Updated•22 years ago
|
Target Milestone: Bugzilla 2.18 → ---
Updated•12 years ago
|
QA Contact: matty_is_a_geek → default-qa
You need to log in
before you can comment on or make changes to this bug.
Description
•