On Tue, Mar 04, 2008 at 12:28:51AM -0800, Don Armstrong wrote:
> On Tue, 04 Mar 2008, Anthony Towns wrote:
> > Well, ultimately, the problem's that "done" doesn't really mean all that
> > much anymore -- we've got:
> -done basically means "I'm the maintainer of this package, and I've
> done what I needed to do to this bug."

Except it doesn't mean that anymore as soon as debbugs receives a
command like:

        found $BUG $UNSTABLE_VER

or

        notfixed $BUG $UNSTABLE_VER

It's good to have a *command* for "I'm the maintainer of this package
(or the submitter of this bug), and this bug is DONE.", but using the
done field for that just doesn't work right anymore.

> A much simpler method would be to disallow unversioned -done
> if there are found versions, 

How about disallowing (or ignoring) versions entirely in pseudopackages?

> and mark bugs that have found versions
> but no fixed versions as open even if they have been -done'd.

The logic's still pretty complicated then.

We've got a few states:

        - do we have a version from the query, or not?
        - is the done-field set?
        - is found-in set?
        - is fixed-in set?

With the matrix of done values being:

                               !found, fix | found, !fix | both    | neither
  no query-ver, no done-field  DONE        | OPEN        |  ?      | OPEN
  no query-ver, done-field     DONE        | OPEN ?      | DONE    | DONE
  query-ver, no done-field     cmp_ver     | cmp_ver     | cmp_ver | OPEN
  query-ver, done-field        cmp_ver     | cmp_ver     | cmp_ver | DONE

AFAICS, it's the special cases that bite; whether on implementation or usage.
For example, by the above, if you had:

        stable: 1.0-1 -> 1.0-1etch1
        unstable: 1.0-1 -> 1.0-2

and had a bug with found-in: 1.0-1; then adding "fixed-in: 1.0-1etch1"
would close the bug in the no-query-ver view, even though it's still
open in unstable. That's probably confusing, and probably undesirable.

Having everything be version-tracked including dist-less queries and
pseudopackages changes that to just always using cmp_ver, and removes
the done-field from the logic entirely.

> This way notfixed would "do the right thing" in making the bug appear 
> to be open, but would remain commutative.  

Commutativity's pretty easy -- it just means that if you make "notfixed"
or "found" make a previously-closed bug open again; then "fixed" or
"notfound" have to make a previously-open bug closed.

That doesn't have to involve changing the done field at all -- ie,
the commands can still just manipulate the fixed/found fields in the
.summary; but if so, the CGIs (and archiving) have to take a different
tack working out what "closed" means, at least in some cases.

> We could then additionally deprecate reopen in favor of 
> found+submitter and finish retiring close as well.  

That sounds good.

The constraints seem to be:

   - submitter must get a mail when a bug is deemed "closed", even if that's
     only by manipulation of fixed-in etc; it mustn't be possible to go from
     the bug being open to being archived without mailing the submitter

   - it must be easy to close bugs on pseudopackages (ie, mail to
     -done; no futzing around with control@)

   - there should be an easy way to deal with "notabugs" so they can
     be closed without ending up treated as open against any version of
     the package

   - the simpler the better

I would love to see the non-version-tracking view disappear at this point;
but afaics that needs us to come up with a pseudoversioning scheme for
pseudopackages.

Cheers,
aj

Attachment: signature.asc
Description: Digital signature

Reply via email to