I volunteered to do this on the call today. Here's my thoughts on
tagging:
1. From the client, it would be nice to be able to specify a comma-
delimited list of tags at any phase. Tags would be inherited by
successive phases if not explicitly overridden. E.g., if you specify
a "foo" tag in an MPI get, it'll be used in all phases that use that
MPI get.
Tags can be specified in one of three forms:
+foo: means to *add* this tag to the existing/inherited set
-foo: means to *remove* this tag from the existing/inherited set
foo: if any tag does not have a +/- prefix, then the inherited set
is cleared, effectively making the current set of tags be only the
non-prefixed tags and +tags
For example:
[MPI Get: AAA]
# + and - have little meaning for MPI Get
tags = foo, bar, baz
[Test Get: BBB]
# + and - have little meaning for Test Get
tags = yar, fweezle, bozzle
[Test Build: CCC]
# Test build inherits tags from MPI Get and Test Get
tags = +fa-schizzle, -yar
# Resulting tag set: foo, bar, baz, fweezle, bozzle, fa-schizzle
[Test build: DDD]
# Override everything
tags = yowza, gurple
# Resulting tag set: yowza, gurple
2. For the reporter, I think we only want authenticated users to be
able to create / manipulate tags. Authentication can be via SVN
username / password or the HTTPS submit username / password; I don't
have strong preferences.
Anyone can query on tags, of course.
3. We should have easy "add these results to a tag" and "remove these
results from a tag" operations, similar to GMail/labels. I think the
rule should be that if you can show MPI details (i.e., not the
summary page), you can add/remove tags. Perhaps something as simple
as a text box with two buttons: Add tag, Remove tag.
3a. Example: you drill down to a set of test runs. You type in "jeff
results" in the text box and click the "add tag" button. This adds
the tag "jeff results" to all the result rows that are checked (it is
not an error if the "jeff results" tag already exists on some/all of
the result rows).
3b. Example: you drill down to a set of test runs. You type in "jeff
results" in the text box and click on the "remove tag" button. This
removes the tag "jeff results" from all the result rows that are
checked (it is not an error if the jeff results" tag is not on some/
all of the result rows).
4. Per Gmail index label listing, it would be nice to see a list of
tags that exist on a given result row. It could be as simple as
adding another show/hide column for the tags on a given result row.
But it gets a little more complicated because one row many represent
many different results -- do we show the union of tags for all the
rollup rows? Maybe we can use different colors / attributes to
represent "this tag exists on *some* of the results in this row" vs.
"this tag exists on *all* of the results in this row"...?
4a. If the tags are listed as a column, they should also (of course)
be clickable so that if you click on them, you get the entire set of
results associated with that tag.
4b. For every tag on a rollup row, it would be good to be able to say
"apply this tag to every result in this rollup row" (i.e., this tag
had previously only applied to *some* of the results in this rollup
row). This could be displayed as a little "+" icon next to the tag
name, or somesuch.
4c. Similarly, for every tag, it would be good to have a "remove this
tag from every result in this row". This could be displayed as a
little "-" icon next to the tag name, or somesuch.
4d. Care would need to be taken to ensure that users would not
accidentally click on "+" or "-" icons next to tag names, however.
5. There should also be a simple way to:
- see all available tags (perhaps including some kind of
indication of how many results that tag represents)
- completely delete a tag from the entire database
6. Tags may span multiple phases (install, build, run). If you click
on a tag that contains results on all three phases, what should
happen? I think it should be context-sensitive:
- If you are in a summary environment, you get a summary table
showing all relevant results.
- If you are in a single phase environment, you see only the
results in that phase (perhaps with a clickable icon to see the
entire summary table with all the tag's results).
7. Lots of things can, by default, become tags. E.g., org name and
platform name can become default tags. I.e., results that are
submitted will automatically have the org name and platform name
added to the results as tags.
--
Jeff Squyres
Cisco Systems