[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

bugs.d.o: usertags and user categories



Hello world,

There's been a bunch of changes to the BTS over the past couple of
months, pretty much leading up to, during, and following debconf [0].
These are the next two. :)



The first feature is "usertags". Tags have been pretty handy (even if I do
say so myself), but there are always new tags people what and often they
don't end up getting them because they're too special purpose. The obvious
fix (if you count something that takes five years to come up with obvious)
is to let users define their own tags that are only visible to themselves.



The mechanics are simple. You send a mail to request@bugs.debian.org
(which contains the subset of commands from control@bugs.debian.org that
don't affect anyone else) with something like the following:

    user aj@azure.humbug.org.au
    usertag 18733 + good-reasons-to-run-for-dpl
    usertag 18733 + still-cant-believe-it-finally-got-fixed
    usertag 62529 + your-days-are-numbered

The "user" command says which user the usertags are for; it'll default
to the address in the From: or Reply-To: header of your mail. The
"usertag" command works just like the regular "tag" command, except you
get to make up whatever tags you like.



The UI for actually using the tags isn't fully developed yet, but
there are three main ways in which you might want to think about using
the tags. The first way, is just viewing them, which you do by adding
";users=<address>" to your url. eg:

    http://bugs.debian.org/cgi-bin/pkgreport.cgi?
        pkg=lsb-core;users=debian-lsb@lists.debian.org

will show you an "lsb" tag on bug#302009. Useful for annotating bugs, so
if you always wanted a "ask-submitter-where-i-can-get-some-of-those-drugs"
tag, this is your chance. As you might've guessed, you can put multiples
addresses in by separating with a comma (,).

The second way is to use a tag to select interesting bugs -- there's not
really much use knowing that an lsb-core bug is lsb related, but being
able to list all the lsb-compliance bugs no matter which package, well
that sounds more interesting. You can do that pretty much the same way:

    http://bugs.debian.org/cgi-bin/pkgreport.cgi?
        tag=lsb;users=debian-lsb@lists.debian.org

That'll tell debbugs to look at all the tags debian-lsb has set, and
prepare a report of all the bugs tagged "lsb".



The third way is where we get to the second new feature.

Imagine you have 30 open bugs; maybe 7 of them are packaging bugs, 9
are documentation bugs, 8 are bugs in the user interface and 6 as bugs
in the actual internal implementation. One nice thing to do might be to
tag the bugs according to this, and then have debbugs display the bugs
according to those tags so you can more easily look at bugs that are
related to each other, and generally feel a bit more organised as you
try to fix them. Depending on what sort of categories you might want
(and how many bugs you have!) you might end up with something like this:

    http://bugs.debian.org/cgi-bin/pkgreport.cgi?
        pkg=ifupdown;users=ifupdown@packages.debian.org;
        pri0=tag:easy-or-standalone,vars-for-scripts,syntax,
             interface-dependencies,hotplug-issues,script-enhancements,
             ifconfig-stuff,ifstate-with-options,update-options-from-up-results,
             allow-logical-to-physical-mapping,selection-of-config-tool,
             unwind-on-failure,hurd,crazy,examples-needed

    (aka: http://tinyurl.com/ac2yy)

We'll see how that works in a second.

In summary, though, usertags are just like regular tags, except that
they're only visible once you've added an appropriate "users=...." field.

The rules are pretty simple: whoever owns the email address gets to decide
what tags should exist, what they mean and when they apply. One person's
"crazy" tag might denote clinical insanity of the submitter, another's
might be to denote the bug is "crazy... like a fox!" and actually a
great idea.

We don't make privacy guarantees; but usertags do have a limited amount
of privacy in that we're expecting not to advertise the addresses of
which users have set usertag, and usertags are not not shown unless you
*explicitly* request them, so as long as you don't use the maintainer's
email address, your personal usertags won't get in their way. For the
moment, nobody is notified when usertags are changed, but it's likely
that in the fairly near future that'll change to let the "user" be Cc'ed
if anyone else tries changing their usertags.

Hopefully there won't be any fights over usertags -- there's plenty of
room for everyone to set their own; but if there are, disputes'll be
resolved in accordance with the wishes of the email address's owner. As
usual there aren't any restrictions up front on who can do what.

Some sample uses you might want to think about:

    * keeping track of particular bugs that affect users
      (breaks-webserver-in-datacentre-5) or a derivative distribution
      ("patched-by-us" might indicate that when the bug is fixed, the
      derivative can use the pristine Debian package, or at least remove
      a patch)

    * keeping track of bugs that affect policy goals, such as the LSB
      example above; the debconf to cdebconf stuff might also be an
      example, as might the /usr/doc stuff. this is a similar use case
      to that of blockers -- the difference being more visibility in the
      "pkgreport.cgi" display, and that a dummy bug (eg, "Debian is not
      LSB compliant") isn't needed

    * keeping track of automatically filed bugs, such as lintian errors

    * organising work on your packages

    * keeping track of lists of bugs in ways that help random people fix
      them ("missing translation into __", "fix needs some C skills",
      "just needs some documentation written", ...)



So, the other new aspect is the category changes. The basic idea is that
instead of being hardcoded, the way the BTS splits bugs into sectios is
now dynamic, and can be configured via CGI variables like "nam0", and
"pri0". The defaults look like this:

    nam0=Status
    pri0=pending:pending,forwarded,pending-fixed,fixed,done,absent
    ttl0=Outstanding,Forwarded,Pending Upload,Fixed in NMU,Resolved,From
         other Branch,Unknown Pending Status
    ord0=0,1,2,3,4,5,6

    nam1=Severity
    pri1=severity:critical,grave,serious,important,normal,minor,wishlist
    ttl1=Critical,Grave,Serious,Important,Normal,Minor,Wishlist,Unknown Severity
    ord1=0,1,2,3,4,5,6,7
  
    nam2=Classification
    pri2=pending=pending+tag=wontfix,pending=pending+tag=moreinfo,
         pending=pending+tag=patch,pending=pending+tag=confirmed,pending=pending
    ttl2=Will Not Fix,More information needed,Patch Available,Confirmed,
         Unclassified
    ord2=2,3,4,1,0,5

The priority line is the important one, and tells debbugs what it should
look for to put bugs in a section. Sections are checked in order, so a
bug that's tagged "wontfix" and is "outstanding" will be put in the Will
Not Fix classification, even if it's also tagged "patch". Normally,
sections are sorted in the order they're given, but if that's not what
you want, you can set the "ord" field to give the order you do want.

As well as doing all this on the command line, there's a pretty kludgy
javascript based form at the bottom of pkgreport.cgi now that will let
you set some cookies to store the settings and reuse them later. There's
also a link to my development notes, fwiw. Here're some instructions
that have worked for some:

    1. load http://bugs.debian.org/cgi-bin/pkgreport-helix.cgi?pkg=ifupdown
    2. look for "(beta)"

    3. usertags from: ifupdown@packages.debian.org

    4. name 1: ifupdown TODO
    5. sections 1: tag:easy-or-standalone,vars-for-scripts,syntax,interface-dependencies,hotplug-issues,script-enhancements,ifconfig-stuff,ifstate-with-options,update-options-from-up-results,allow-logical-to-physical-mapping,selection-of-config-tool,unwind-on-failure,hurd,crazy,examples-needed

    6. name 2: status
    7. press "Commit"
    8. reload the page
    9. look for "Options"
    10. check for the new entry in "Categorise bugs by"



Anyway, like I said, it's a bit "beta" (okay, a lot), but it's somewhat
usable, and I'm worried if I keep working on it rather than getting it out
there I'll have so much to try to explain in one hit my head'll explode.
Heck, maybe yours has already.

I'm hopeful this'll be useful to people and maybe even a bit
inspirational. If you do start using it, you might like to add a note to
the Debian wiki page [1], so we can get some idea what sort of things
people /actually/ find useful and interesting and make the UI work for
that, rather than just implementing whatever sounds like a good idea,
or happens to be easiest.

Thanks particularly to Margarita Manterola and Erinn Clark for acting
as sounding boards and offering inspiration and advice, and to other
folks on #debian-women (Moray Allan, James Troup, David Nusinow, Pascal
Hakim, Hanna Wallach, Helen Faulkner, Rob Weir, and perhaps others I've
forgotten), for being either helpful or guinea pigs or both :)

Cheers,
aj

[0] Blocking bugs, min/maxdays, bug subscriptions, version tracking,
    prettier bug report pages, prettier package report pages, ability
    to change options from the package report pages rather than just by
    editing urls or going back to the main page, internal changes to how
    mail works that fixes some long standing bugs, some internal support
    to make cookies plausible, a couple of new members to the BTS team,
    maybe some other stuff I've forgotten...

[1] http://wiki.debian.org/bugs.debian.org/usertags

    Yes, that is wiki.debian._org_ .

Attachment: signature.asc
Description: Digital signature


Reply to: