1 |
On Sat, Oct 18, 2008 at 11:01 PM, Robin H. Johnson <robbat2@g.o> wrote: |
2 |
> Now into it's Nth great year, I bring you the fourth edition of the |
3 |
> automatic assignment proposal. </truman-show> |
4 |
> |
5 |
> Previously: |
6 |
> http://thread.gmane.org/gmane.linux.gentoo.devel/48485 [v1] |
7 |
> http://thread.gmane.org/gmane.linux.gentoo.devel/49601 [v2] |
8 |
> http://thread.gmane.org/gmane.linux.gentoo.devel/57159 [v3] |
9 |
> |
10 |
> Bleeding edge prototype: |
11 |
> http://dev.gentoo.org/~rbu/assign.py |
12 |
> MANY thanks to rbu. |
13 |
> |
14 |
> If there are no further changes or objections at this time, it would be |
15 |
> nice to implement this by the end of November. |
16 |
> |
17 |
> How is it integrated into workflow? |
18 |
> =================================== |
19 |
> (This was raised by halcy0n at the v3 review, and replaces the previous section |
20 |
> on triggering). |
21 |
> 1. Bugs are still filed as normal, with the same default assignees |
22 |
> (bug-wranglers most commonly). |
23 |
> 2. In the wrangling process, we add a new button to the page, labelled: |
24 |
> "Suggest assignment". |
25 |
> 3. Optionally, the wrangler edits the summary line right now, but does not hit |
26 |
> 'Submit' yet. |
27 |
> 4. The button causes a (javascript) query back to the server (also |
28 |
> available as a web service for other usage). The only data sent is the |
29 |
> 'Summary' string. |
30 |
> 5. Javascript then appends the server results into the "Additional |
31 |
> Comments" box: a suggested assignee and suggested CC values, with logic |
32 |
> as to why. |
33 |
> 6. The wrangler can copy and paste the data into the fields, editing |
34 |
> further as desired. |
35 |
> |
36 |
> (Putting the data into the comments allows the assignment tool to |
37 |
> explain WHY it decided certain actions). |
38 |
> |
39 |
> Assignment/CC computing: |
40 |
> ======================== |
41 |
> Step 1 - Summary line processing |
42 |
> -------------------------------- |
43 |
> 1. If the summary line contains a package atom for a package that |
44 |
> exists, use the metadata.xml for that package. |
45 |
> 2. If the summary line contains a package atom for a package that does |
46 |
> not exist, but a category that does exist, use the metadata.xml for |
47 |
> that category. |
48 |
> 3. Process ALL atoms in the summary line, using any after the first for CC |
49 |
> only. (new in v4) |
50 |
> |
51 |
> Step 2 - Metadata.xml contains only a herd |
52 |
> ------------------------------------------ |
53 |
> 1. Take the herd element, and look up the herd in herds.xml to convert |
54 |
> to an email address. This email address must be a valid bugzilla |
55 |
> account. |
56 |
|
57 |
What if my herd email address is different from my bugzie address? |
58 |
Can I have both in herds.xml? What if my herd address *isn't* a |
59 |
bugzie account, will the world end? How can we automatically detect |
60 |
when developers make mistakes in editing herds.xml? |
61 |
|
62 |
> 2. This email is treated as an implicit maintainer element after this |
63 |
> point. "<maintainer><email>${HERD_EMAIL}</email></maintainer>" |
64 |
> [See notes] |
65 |
> |
66 |
> Step 3 - <maintainer> element |
67 |
> ----------------------------- |
68 |
> 1. Add the maintainer element to an ordered list, in the order they are |
69 |
> present in the file. |
70 |
> 2. If an element appears more than once, the later element overrides the |
71 |
> earlier element. (This provides a route when the herd is assigned, |
72 |
> but does not wish to receive email for a specific package). |
73 |
> 3. If a maintainer element contains the non-default 'ignoreauto=1' |
74 |
> attribute AND a non-empty role element (describing why this maintainer |
75 |
> should not be contacted), delete it from the list. |
76 |
> |
77 |
> Step 4 - Assignment |
78 |
> ------------------- |
79 |
> 1. Use the first email in the ordered list as the assignee. |
80 |
> 2. Place all remaining emails in the CC list. |
81 |
> 3. Include a short comment about the processing results. |
82 |
> |
83 |
> Notes: |
84 |
> ------ |
85 |
> 1. For handling <herd>no-herd</herd>, we should add an entry into herds.xml to |
86 |
> catch it (maintainer-needed <at> g.o). Every herd listed in an ebuild MUST be in |
87 |
> herds.xml. |
88 |
|
89 |
You and I both know this is not going to be true. Complicated |
90 |
solution; make Repoman do it. Certainly it is the 'correct' thing to |
91 |
do; however I don't expect it to get implemented or deployed quickly. |
92 |
Hacky solution: run script on osprey that tries to validate tree |
93 |
metadata against herds.xml and annoy herds who forgot to add |
94 |
themselves. |
95 |
|
96 |
> 2. Herds that do not wish to be contacted for specific bugs should add an |
97 |
> maintainer element stating that (and use 'ignoreauto' on the element). |
98 |
> This case however should be very rare, as the package probably doesn't |
99 |
> belong in the herd if the herd doesn't care about it. |
100 |
> 3. If you want the default assignment to go to a maintainer, and NOT the herd, |
101 |
> move the <herd> element further down in the metadata.xml! |
102 |
> |
103 |
> Effects on metadata.xml syntax |
104 |
> ============================== |
105 |
> - Category metadata is now permitted to have herd and maintainer elements. |
106 |
> - New attribute under maintainer, 'ignoreauto'. |
107 |
> |
108 |
> --- metadata.dtd 2007-11-20 10:07:33.000000000 -0800 |
109 |
> +++ metadata.dtd.new 2008-10-18 23:22:55.000000000 -0700 |
110 |
> @@ -1,7 +1,7 @@ |
111 |
> <!ELEMENT packages ( pkgmetadata* )> |
112 |
> |
113 |
> <!-- Metadata for a category --> |
114 |
> -<!ELEMENT catmetadata ( (longdescription)* )> |
115 |
> +<!ELEMENT catmetadata ( (herd|maintainer|longdescription)* )> |
116 |
> <!ATTLIST catmetadata pkgname CDATA ""> |
117 |
> |
118 |
> <!-- Metadata for a package --> |
119 |
> @@ -13,6 +13,10 @@ |
120 |
> |
121 |
> <!-- One tag for each maintainer of a package, multiple allowed--> |
122 |
> <!ELEMENT maintainer ( email, (description| name)* )> |
123 |
> + <!-- ignoreauto attribute specifies that a maintainer should not be used |
124 |
> + for automatic assignment computing. It must be combined with a |
125 |
> + non-empty description element. --> |
126 |
> + <!ATTLIST maintainer ignoreauto CDATA "0"> |
127 |
> |
128 |
> <!-- A long description of the package in freetext--> |
129 |
> <!ELEMENT longdescription (#PCDATA|pkg)* > |
130 |
> |
131 |
> -- |
132 |
> Robin Hugh Johnson |
133 |
> Gentoo Linux Developer & Infra Guy |
134 |
> E-Mail : robbat2@g.o |
135 |
> GnuPG FP : 11AC BA4F 4778 E3F6 E4ED F38E B27B 944E 3488 4E85 |
136 |
> |