Status
Contents
-
Status
- Attachment creation time
- Flags / patch statuses
- UTC
- Group settings
- Private comments
- X-Bugzilla-*
- Patch viewer
- Watching
- Custom fields
- Unknown Alias & bug-buddy-import
- Classifications / isgnome
- Porting existing customization
- Porting reports
- Simple-dup-finder
- Booglerific simple query form
- Browse (Overview page)
- Bug-buddy and XML-RPC
- TODO
- Features
- Step-by-step upgrade guide
Attachment creation time
Lots and lots of: Warning - could not determine correct creation time for attachment 47207 on bug 121111
- This is a bug in MySQL 4.1.7. LIKE 'Blablabla (id=1234)%' doesn't match 'Blablabla (id=1234)\nfoo"
- MySQL 4.1.11 has something in its changelog that fixes a LIKE bug for cp1251_bin binary collation.. perhaps that fixes this too?
- Workaround would be to use LIKE '%Blablabla (id=1234)%' (strangely works)
- Works in MySQL 4.1.12
- button now runs 4.1.11, still broken. Unsure why.
Note:
- Some attachments where created when the bug was created (very old bug-buddy-import.pl). These will obviously still cause an error message.
Flags / patch statuses
[Old: add a
- update flaginclusions SET product_id = NULL where product_id = 0;
Elijah: This should not be necessary anymore, as show_bug.cgi & attachment.cgi have been modified to ignore flaginclusions altogether.]
flags are now totally ignored, as are flaginclusions and flagexclusions; the tables exist but they aren't updated or used anywhere that we have remembered to get rid of them. The flagtypes table is still used, but mostly only for id, name pairing.
This stuff has been replaced with a simple status_id field in the attachment table that is much nicer.
UTC
Bugzilla has been hacked to set the database timezone to UTC.
- Also changed timezone parameter to UTC
Group settings
ismailinglist group needs to have 'Use for bugs' unchecked.
Private comments
There is a insidersgroup param. It allows one or more comments of a bug to be hidden. I've currently set this to gnomehackers.
X-Bugzilla-*
Bugzilla CVS can support X-Bugzilla-Product and -Component, made sure rest is also possible.
Patch viewer
Configured the patch viewer cvsroot and cvsroot_get. Allows to do more advanced stuff / layouts of a patch, see as example: http://bugzilla-test.gnome.org/attachment.cgi?id=48528&action=diff
Also set the bonsai_url, click on the 'Lines xxx-xxx' in the attachment above to see what it does.
Note: now uses the read-only NFS mount! Should be faster.
Watching
The X-Bugzilla-Reason header has been modified like 2.16.x bugzilla.gnome.org. When watching the AssignedTo X-Bugzilla-Reason will have WatchAssignedTo. Same when watching any other reason.
The X-Bugzilla-Watching is a comma separated list of the email addresses you are watching on this bugreport. The header only exists when watching an account for this bugreport.
Custom fields
Bugzilla.gnome.org before 2.16 had GNOME version and GNOME milestone as extra fields in the bugs table. In 2.16 customfields are used. In 2.20 I don't want to rely on a custom fields patch (mostly because it doesn't exist and I'm not sure when it will be). I want to add the fields again to the bugs table. Bugzilla 2.20 has a webinterface to change OS / Hardware / Priority / Severity. I want to support that for these fields. Unfortunate that we need 2 fields, otherwise I could've hijacked Hardware (we hide that anyway).
- Added gnome_target and gnome_version fields to bug table (see checksetup.pl).
- Created gnome_target and gnome_version tables (see Bugzilla/DB/Schema.pm). These hold the possible values
- Changed editvalues.cgi to also allow changing gnome_target and gnome_version. Finally a web interface for this stuff.
- Added above fields to global/field-descs.none.tmpl
- Added to templates (looks ugly, doesn't have existing values)
- Existing values are converted by checksetup.pl
- Customfields tables will be dropped by checksetup.pl (after converting the data)
- Add to code (post_bug.cgi, bug-buddy-import)
Unknown Alias & bug-buddy-import
This is pretty much a hack in Bugzilla 2.20. In 2.20 everything uses userids. As an externalcc doesn't have an bugzilla userid, I remember the Reporters userid. Just before calling the sendMail routine I change the $user->{'login'} with externalcc (if defined). Ugly but works.
Note: This is slightly different from 2.16.x. Before when having an externalcc, unknown@b.g.o as reporter + in the cc-list; unknown@b.g.o would still receive a copy (because of usage of email addresses + unknown@b.g.o appearing in the CC-list). In 2.20 unknown@b.g.o will not receive a copy anymore. Watching unknown@b.g.o will still work. The change doesn't cause any problems, but there is a very small change someone might get confused.
Note: Bug-buddy-import.pl will now create accounts instead of using the externalcc hack. Reports could still be assigned to the exporter (unknown@gnome.bugs), but only if the email address is invalid. Next Bugzilla upgrade externalcc stuff shouldn't be needed. Message is at:
Classifications / isgnome
gnomebug:167119 contained the mockup example (from William Jon McCann), and gnomebug:310568 had other comments
Current classifications:
- Bindings
- Deprecated
- Desktop
- Infrastructure
- Other
- Platform
- Productivity
Status:
- Classifications are automatically created by checksetup.pl
- Existing products will be moved over (again checksetup.pl)
TODO:
- Remove isgnome column when upgrading
- Classify the unclassified products
- Determine what to do with Deprecated but still shipped software. Currently they still are in Bindings etc.
- Create an Unmaintained classification?
Porting existing customization
- process_bug.cgi:
unknown@gnome.bugs isn't cc'ed on duplicates
bugbuddy-import@ximian.com isn't cc'ed on duplicates
- post_bug.cgi:
- Initial state is UNCONFIRMED for all users (must also be changed in template)
- Bugzilla/Bug.pm:
Only confirm bugs when votestoconfirm > 0
- checksetup.pl: Add resolutions, states used by b.g.o (this will be populated into a different table)
- globals.pl:
Add SortVersions hack (sort 2.10.0 after 2.2.0)
- Hide resolutions GNOME1.x, NOTXIMIAN
- Buglinks for NEEDINFO are in italic (like UNCONFIRMED)
- Prepend show_bug.cgi with Param('urlbase')
- Put realname in comments if available (part 1/2)
Add NEEDINFO as OpenState
- Bugzilla/BugMail.pm:
- Put realname in comments if available (part 2/2)
- Do not email persons in @gnome.bugs
Allow persons to receive a copy of every bugmail by watching all-bugs@bugzilla.gnome.org
- Support the unknown alias (AKA do email persons without an bugzilla account)
sanitycheck.cgi: Only whine when votestoconfirm > 0
- showdependencygraph.cgi:
- Request png instead of .gif
- template/en/default/attachment/content-types.html.tmpl:
- Add application/x-compressed-tar
- template/en/default/list/table.html.tmpl:
- Version field 7 width instead of 5
- template/en/default/global/field-descs.none.tmpl: (needed for 2.20)
- Added custom statuses and resolutions
Porting reports
check-assignedto.cgi has the cleanest code.. use that as an example for the rest...
%s/::FORM{\([^}]\+\)}/cgi->param(\1)/g
Most reports should still be cleaned up further (templates).
Conversion means at least:
- Get rid of non dbh stuff
- Get rid of %FORM
- Change init part that calls globals.pl etc to conform to top of check-assignedto.cgi
- Change something like /usr/bonsaitools/bin/perl to /usr/bin/perl
- Database fields bugs.product and bugs.component are gone. Bugs table now contain product_id and component_id. Link those with products.id and components.id and use products.name and components.name.
File |
Porting status |
boogle.cgi |
done |
check-assignedto.cgi |
done |
clean-20-report.cgi |
obsolete |
core-bugs-today.cgi |
done - should be cleaned up at some stage though (classifications etc) |
d2-qreport.cgi |
wont port |
d2-test-report.cgi |
wont port |
d2-ximian-report.cgi |
wont port |
email_gnome_summary_report.pl |
See Note 2 |
g2-progress-utils.pl |
wont port |
gnome-20-report.cgi |
wont port, doesn't work in 2.16 |
gnome-20-report-test.cgi |
wont port, doesn't work in 2.16 |
gnome-love.cgi |
Just a redirect... - ElijahNewren |
gnome-report.cgi |
Ported -- Still need to add patch status |
keyword-search.cgi |
done |
keyword-search-rss.cgi |
done |
keyword-search-utils.pl |
done |
mostfrequent.cgi |
See Note 3 |
needinfo-updated.cgi |
done |
old-bugs-needing-love.cgi |
questionable... |
old-gnome2-needing-love.cgi |
wont port, doesn't work in 2.16 |
patch-diligence-report.cgi |
ported by Elijah + uses templates |
patch-report.cgi |
Ported + uses templates - See Note 4 |
patch-report-utils.pl |
Ported - See Note 4 |
patch-status.cgi |
Ported - See Note 4 |
product-keyword-report.cgi |
wont port, doesn't work in 2.16 |
product-mostfrequent.cgi |
See Note 3 |
product-mustfix-report.cgi |
wont port, doesn't work in 2.16 |
product-target-report.cgi |
wont port, doesn't work in 2.16 |
recent-mostfrequent.cgi |
See Note 3 |
recent-mostfrequent-utils.pl |
Done and removed stuff not needed by create-mostfreq-xml.pl cronjob. See also Note 3 |
reports.cgi |
contents moved to templates/en/custom/pages/reports.html.tmpl. /report.cgi requires login |
simple-dup-finder.cgi |
It's just a redirect... |
sql-scratch.cgi |
wont port |
temporary.cgi |
wont port |
unconfirmed-bugs.cgi |
ported -- still needs to use templates |
weekly-bug-summary.cgi |
ported + uses templates |
weekly-summary-utils.pl |
ported + uses templates + very big cleanup |
- Note 2: Gnome Weekly Summaries were discontinued (unfortunately) so this may not be useful anymore
Note 3: I believe these can all be replaced by duplicates.cgi, new to bugzilla >= 2.18 IIRC
duplicates.cgi is still ugly to get XML out of, so ported also the recent-mostfrequent-utils.pl for now. duplicates.cgi relies on a cronjob making a dbm file each day. If you want the duplicates of 30 days ago, that cronjob had to be running for 30 daysNote 4: https://bugzilla.gnome.org/show_bug.cgi?id=315146#c1
TODO:
<vuntz> hopes we'll be able to have weekly bug summaries for each class
Simple-dup-finder
Has been ported, accelerated + uses templates.
- find-traces.pl
- index.cgi
- README (mostly obsolete; we may not want it anymore)
- simple-dup-finder.cgi
Booglerific simple query form
Changes
http://bugzilla-test.gnome.org/query.cgi?format=short now uses boogle instead
The quicksearchhack at http://bugzilla-test.gnome.org/ has been replaced by a boogle box
- buglist.cgi can take boogle queries (if there's an error, it redirects to query.cgi?format=short and shows the error)
Enhancements that could be made
treat status:<stuff> as legit if <stuff> is a valid meta-status?
somehow handle emails (reporter/cc/commenter/assignee), bugs_activity, bug-age & patch-age
Browse (Overview page)
This page has been stuffed full with all kinds of junk all over the place. There's some more stuff we want to throw into it too. Then we need to get someone who can make it pretty. We really need someone to make it pretty.
Possible further changes still not incorporated:
- Put really important stuff (unreviewed patches, urgent/immediate bugs, blockers?) in a different color (e.g. red) as Luis suggested as a possibility?
- Maybe list percentages in addition to just bug counts
- Stuff that might take lots of time to generate/determine unless we cache somewhere/somehow
- patch-diligence-rating (maybe next to unreviewed count; maybe with reviewed% instead of unreviewed%?)
- ranking on the weekly-bug-summary
- number of bugs on the most duplicated list (recent-mostfrequent stuff)
- special notes section with reminders (e.g. tarballs due, freeze notices, etc.)
- some kind of UI for adding searches of closed/duplicate bugs in the browse page via mouse click?
steal ideas from: http://jira.codehaus.org/browse/MAVEN
- See also gnomebug:315146
Bug-buddy and XML-RPC
Bug-buddy using email allowed you to:
- Create a bug-buddy report without using password
- Any email address you want
Bug-buddy and XML-RPC should be made smart.
When a program crashes, bug-buddy should:
- Pass crashed program to XML-RPC request to determine b.g.o product
- What to do with the components? Should request specify the used component or let the user choose?
- User WILL NOT be able to choose the product! (nobody knows what to select anyway)
- XML-RPC request should be able to return a 'unknown program' result. Bug-buddy should handle that by going into 'save bugreport as file'-mode
- Do NOT query for severity / priority!
TODO:
- Add more thoughts
Short IRC discussion
<bkor> fer: do you have time to write xml-rpc stuff for bug-buddy 2.14? there is nothing on the server yet though, hope to do that within a few weeks <fer> bkor, I think I'll haqve time!!! <fer> for that and for the backtalk project <bkor> great! I want bug-buddy to not need the bugzilla.gnome.org/ files (the 3 xml files describing products, etc) <bkor> with xml-rpc we should be able to make a function that'll just gets the products (less data) <bkor> and for crashers bug-buddy should give the program name, then b.g.o should decide where it goes (product) <fer> yup, I think that's the right approach <bkor> my only doubt is the requirement Bugzilla account.. xml-rpc runs one function every time, I think... so how to handle creating a Bugzilla account? with the webinterface it mails the password <fer> humm <bkor> I'd like to use that still for xml-rpc, but that might be irritating for new users, but on the other hand.. allowing xml-rpc to specify the new password = bad! (no validation on the email address) <fer> an xml-rpc function to get a new account would be great I guess <fer> humm <fer> good point <fer> but waiting for mail = boring poor users and don't get them sending the report <bkor> ideally I want something that allows you to make a bug-buddy report + account in one go without a password <bkor> next time they should use the password <bkor> then use gconf / keyring manager to store the email address + password <fer> humm <fer> this is your second report, so go through your mail and search your f*cking password? <bkor> yeah.. not too great :-( <bkor> ok.. another one then... remember in b.g.o if user was created using bug-buddy (well.. xml-rpc).. if so, password = optional, otherwise not <fer> humm
TODO
Stuff to be fixed before switching bugzilla.gnome.org to bugzilla-newer:
- Fix sanitycheck errors on bugzilla.gnome.org
- Further enhance show_bug.cgi:
- When lacking permissions, add bugsquad promotion message
- When logged off, add login box that should reload the page and stay on the same bug
- When status whiteboard begins with a capital and ends with a '.', show that message at the top of the bugreport.
- Fix little issues found
- need to make report queries limit to the appropriate groups
- remove editkeywords from everybody but admins
Nagging issues that would be nice to be fixed before switching over but could wait if necessary
- ?remove empty sections on describeuser.cgi?
- some kind of sorting for the classifications
To be done after bugzilla.gnome.org runs 2.20 (or before, given sufficient time before the 18th):
- XML-RPC
- Should require Bugzilla account?
- Should allow creating an account (password should be emailed)
- Should be limited to stuff bug-buddy requires (submitting bugs, getting product/version info)
- Fix externalcc accounts that are not valid email addresses (about 350 of them). Some of these are valid and invalid email addresses combined with a ",".
- Fix mail.pl to work
- Close bugs using CVS commit message
Provide some content for the Help page
- Add link to create a bug in bugzilla.gnome.org
Add bugmaster@gnome.org email address
- FAQ?
- source code @ cvs
- Heavier patch stuff possibilities
- much better patch querying with query.cgi?format=advanced
- Automatic whines of some sort (cron job using patch-report-utils?)
- Automatically (though allow it to be done manually too) find and mark undermaintained products as such (using patch diligence stats)
- notify users in show_bug.cgi (and elsewhere?) when products are undermaintained
extra items already listed under the browse & boogle sections
- allow old version numbers to remain in the database but not have them show up in certain parts of the UI (e.g. don't show them in show_bug.cgi or enter_bug.cgi but maybe still show them on query.cgi?format=advanced)
- special handling of cvs head -- when adding a new version (maybe even if one need not be added because e.g. 2.9.x already exists when adding 2.9.3), reassign all CVS HEAD version bugs to that 'new' version
- + whatever I forgot
Features
Why bugzilla-newer is better:
- Attachments work (can provide decent name for them; content-type)
- _Much_ Nicer UI
- Integrated stock responses
- Pref to automatically CC yourself to bugs you change (default=on)
- UTC
(troll through 2.18 & 2.20 release notes for stuff, e.g. classifications, patch viewer, ...)
- an everything-you-want-to-know-about-user-X (including yourself) page (describeuser)
- Very fast simple-dup-finder
- Booglerific simple search forms
- An-everything-you-need-in-one-place product overview page (browse)
https://bugzilla.mozilla.org/page.cgi?id=upgrade-2005-10-22.html
https://bugzilla.mozilla.org/page.cgi?id=new-features-2004-12-12.html
- etc
Step-by-step upgrade guide
Time to complete |
Task |
|
Disable web interface b.g.o |
|
Disable web interface b-t.g.o |
|
Disable bug-buddy-import |
|
Disable cronjobs |
6min |
Make backup of bugs database |
|
Make backup of ~/bugzilla |
|
Put copy of bugzilla-test sources in ~/bugzilla |
|
Modify ~/bugzilla/localconfig to point to bugs database |
3h30min |
Convert database structure to 2.20 format using ./checksetup.pl |
|
Enable limited access to b.g.o (restricted on IP address) |
2min |
Goto https://bugzilla.gnome.org/editsettings.cgi and disable quip option |
|
Check bugzilla status |
|
Check b.g.o status |
|
Enable access to b.g.o |
|
Enable bug-buddy-import |
|
Enable cronjobs |
Detailed step-by-step guide
Disabling web interfaces:
Via .htaccess as the Bugzilla software will be upgraded. The Bugzilla way of disabling will not be reliable enough
vim ~/bugzilla/.htaccess, add: deny from all vim ~/test/.htaccess, add: deny from all
Disabling bug-buddy import:
$ vim ~/.procmailrc change ':0c' after '# I want a copy' to ':0'
Disabling cronjobs:
$ crontab -e put ### in front of commands
Make backup of bugs database:
- Preferably from a normal user account. Has more space available.
$ mysqldump --opt -h button-back -u bugzilla -p bugs | gzip > bugs-216.sql.gz
Make backup of ~/bugzilla:
- We will be needing some of the files!
$ cd ~/ $ cp -a bugzilla backup216
Put copy of bugzilla-test sources in ~/bugzilla:
- rm -rf * will not delete the .htaccess file
$ cd ~/bugzilla $ rm -rf * $ cp -a ~/test/* . $ cp -f ~/backup216/localconfig . ADD MORE STUFF
Convert database structure to 2.20 format using ./checksetup.pl
$ ./checksetup.pl
Enable limited access to b.g.o (restricted on IP address)
$ vim ~/bugzilla/.htaccess add as appriopriate: allow from 1.2.3.4
Make changes to setup
Visit https://bugzilla.gnome.org/editparams.cgi - change urlbase to: https://bugzilla.gnome.org/ - change mail_delivery_method to: sendmail Goto https://bugzilla.gnome.org/editsettings.cgi - disable quip option Goto https://bugzilla.gnome.org/editgroups.cgi - Edit ismailinglist group - Disable 'Use For Bugs' - Remove inherit for 'admin' group - Edit admin group - Add inherit/grant for 'maintainers' group
Issue to investigate/fix before 18th
Note: conversion hangs in 'Updating column qa_contact in table bugs'
Stuff after that:
Updating column qa_contact in table bugs ... Old: mediumint NOT NULL New: mediumint Deleting unused column emailflags from table profiles ... Updating column initialowner in table components ... Old: mediumint New: mediumint NOT NULL Updating column value in table versions ... Old: tinytext New: varchar(64) NOT NULL Adding new index 'versions_product_id_idx' to the versions table ... Updating column creation_ts in table bugs ... Old: datetime NOT NULL New: datetime Adding group editclassifications ... Adding group admin ...