Bugzilla 4.2 Release Notes

Introduction

Welcome to Bugzilla 4.2! It has been almost a year since we released Bugzilla 4.0 on February 2011, and this new major release comes with several new features and improvements. This release contains major improvements to search, support for SQLite, improved WebServices, and lots of other enhancements.

If you are upgrading from a release before 4.0, make sure to read the release notes for all the previous versions in between your version and this one, particularly the Upgrading section of each version's release notes.

Updates in this 4.2.x Release

4.2.11

This release fixes several security issues. See the Security Advisory for details.

4.2.10

This release fixes one security issue. See the Security Advisory for details.

4.2.9

This release fixes one regression introduced in Bugzilla 4.2.8 by security bug 968576: URLs in bug comments are displayed correctly again. (Bug 998323)

4.2.8

This release fixes one minor security issue. See the Security Advisory for details.

In addition, the following bugs have been fixed in this release:

  • checksetup.pl was incorrectly reporting DBI 1.630 (1.63) as being older than 1.614, preventing the upgrade to complete. If you still use Perl 5.10.0 or older, make sure you have the version module installed before running checksetup.pl. If you use Perl 5.10.1 or newer, this module is already available and no special action is required. (Bug 938300)
  • checksetup.pl no longer fails with "Invalid version format (non-numeric data)" when a Perl module contains an invalid version number. (Bug 781672)
  • The PROJECT environment variable is now correctly taken into account when mod_perl is enabled (this variable allows several installations to share the same codebase). (Bug 843457)
  • Bugzilla no longer crashes when the shutdownhtml parameter is set and using a non-cookie based authentication method. (Bug 748095)
  • The default date and time format used for SQLite has been fixed. (Bug 938161)

4.2.7

This release fixes several security issues. See the Security Advisory for details.

In addition, the following bugs have been fixed in this release:

  • Internet Explorer 11 and KHTML-based browsers such as Konqueror can now display buglists correctly. (Bug 902515 and bug 914262)
  • When the password_complexity parameter was set to 'letters_numbers_specialchars', passwords containing numbers and special characters only were accepted. Now it makes sure that a letter is also present. (Bug 897264)
  • With DB servers doing case-insensitive comparisons, such as MySQL, tokens and login cookies were not correctly validated as the case was ignored. (Bug 906745 and bug 907438)
  • All security headers (such as X-Frame-Options) are now returned when using XML-RPC. (Bug 787328)
  • Oracle crashed when reporting a new bug if a custom free-text field was non-mandatory and left empty. (Bug 919475)
  • It was not possible to import bugs using importxml.pl with Oracle. (Bug 848063)

4.2.6

The following important fixes/changes have been made in this release:

  • MySQL 5.6 is now supported. (Bug 852560)
  • A regression introduced in Bugzilla 4.2.4 made Oracle crash when installing Bugzilla for the first time. (Bug 858911)
  • If a custom field depends on a product, component or classification, the "mandatory" bit was ignored on bug creation. (Bug 782210)
  • Queries involving flags were broken in several ways. These queries have been fixed. (Bug 828344)
  • Tabular reports involving the empty resolution did not link bug counts correctly. (Bug 212471)
  • The Bug.search WebService method was returning all visible bugs when called with no arguments, ignoring the max_search_results and search_allow_no_criteria parameters. (Bug 859118)

4.2.5

This release fixes one security issue. See the Security Advisory for details.

In addition, the following important fixes/changes have been made in this release:

  • Queries involving commenters were slow to return results. These queries have been optimized for better performance. (Bug 818007)
  • It is no longer possible to create a new bug using a disabled component, target milestone or version. These inactive values are also no longer accessible when moving a bug into another product. (Bugs 752946 and 840824)
  • It was possible to create a new bug with no description despite the status workflow required one for new bugs. (Bug 818890)
  • Custom multi-select fields are now available in the "Search By Change History" section of the "Advanced Search" page. (Bug 839950)
  • A custom select field could have its list of values truncated if one or more of its values were disabled and the visibility of the values were controlled by another field. (Bug 806809)
  • Warnings thrown by Return::Value 1.666002 about this deprecated module and which are polluting the web server error log are now disabled. (Bug 826678)

4.2.4

This release fixes several security issues. See the Security Advisory for details.

In addition, the following important fixes/changes have been made in this release:

  • Queries involving group substitution were crashing when the "usevisibilitygroups" parameter was enabled. Also, CVE-2011-2979 was not fully fixed in Bugzilla 4.1.3. (Bug 788098)
  • Flag names were not properly escaped when displayed on the "confirm user match" page. An admin could unintentionally break the display of this page if a flag name contains a < or > character, because these characters were not filtered. (Bug 790215)
  • We now prevent private WebServices methods from being called by external applications. (Bug 793826)
  • PostgreSQL 9.2 requires DBD::Pg 2.19.3. (Bug 799721)
  • Oracle was crashing when listing keywords or flags in buglists. (Bug 780053)
  • Oracle was crashing when typing several bare words in the QuickSearch field. (Bug 804505)
  • Bugs with the resolution MOVED couldn't be edited anymore. (Bug 757935)
  • Editing dependencies from the "Change Several Bugs at Once" page didn't work as expected. Bug IDs were incorrectly parsed. (Bug 790909)
  • The "Actual Hours" axis now works correctly in tabular and graphical reports. (Bug 794389)
  • checksetup.pl was failing to run if the Voting extension was enabled on a fresh installation and some mandatory modules were missing. (Bug 652047)
  • Bugzilla no longer crashes when viewing a bug while a custom field is being added. (Bug 531243)
  • For improved security, we now send the "X-Content-Type-Options: nosniff" and "X-XSS-Protection: block" headers with every response. (Bugs 671612 and 680771)

4.2.3

This release fixes two security issues. See the Security Advisory for details.

In addition, the following important fixes/changes have been made in this release:

  • Attaching a file to a bug was broken due to a change in Perl 5.16. (Bug 771100)
  • A regression in Bugzilla 4.2.2 made Oracle crash when displaying a buglist. (Bug 780028)
  • It was possible to search on history for comments and attachments you cannot see (though these private comments and attachments are never disclosed). (Bug 779709)
  • PostgreSQL databases could be created with the wrong encoding despite the utf8 parameter being enabled. (Bug 783786)
  • Scheduled whines could be sent at the wrong time on Oracle. (Bug 559539)
  • Tokens are no longer included in saved queries. (Bug 772953)
  • An admin could unintentionally break the display of buglists if a custom field description contains a < or > character, because these characters were not filtered. (Bug 785917)
  • Adding or removing a DB column in Oracle didn't handle SERIAL columns correctly. (Bug 731156)
  • A minor CSRF vulnerability in token.cgi allowed possible unauthorized password reset e-mail requests. (Bug 706271)

4.2.2

This release fixes two security issues. See the Security Advisory for details.

In addition, the following important fixes/changes have been made in this release:

  • A regression introduced in Bugzilla 4.0 caused some login names to be ignored when entered in the CC list of bugs. (Bug 756314)
  • Some queries could trigger an invalid SQL query if strings entered by the user contained leading or trailing whitespaces. (Bug 760075)
  • The auto-completion form for keywords no longer automatically selects the first keyword in the list when the field is empty. (Bug 764517)
  • A regression in Bugzilla 4.2 prevented classifications from being used in graphical and tabular reports in the "Multiple Tables" field. (Bug 753688)
  • Attachments created by the email_in.pl script were associated to the wrong comment. (Bug 762785)
  • Very long dependency lists can now be viewed correctly. (Bug 762783)
  • Keywords are now correctly escaped in the auto-completion form to prevent any XSS abuse. (Bug 754561)
  • A regression introduced in Bugzilla 4.0rc2 when fixing CVE-2011-0046 caused the "Un-forget the search" link to not work correctly anymore when restoring a deleted saved search, because this link was lacking a valid token. (Bug 768870)
  • Two minor CSRF vulnerabilities have been fixed which could let an attacker alter your default search criteria in the Advanced Search page. (Bugs 754672 and 754673)

4.2.1

This release fixes two security issues. See the Security Advisory for details.

In addition, the following important fixes/changes have been made in this release:

  • Due to a regression introduced when fixing CVE-2012-0453, if an XML-RPC client sets the charset as part of its Content-Type header, we were incorrectly rejecting the request. The header is now correctly parsed. (Bug 731219)
  • Email notifications about status changes in blockers were incorrectly formatted. Several pieces of text were missing in the emails. (Bug 731586)
  • Many bugs related to the searching system have been fixed. (Bugs 58179, 715270, 730984, 731163, 737436 and 745320)
  • When using the QuickSearch box, complex queries are now parsed correctly. It also behaves correctly with non-ASCII characters (such as é, ä, ü, etc.). (Bugs 554819, 663377 and 730207)
  • The 'take' link besides the assignee field now works correctly when the usemenuforusers parameter is turned on. (Bug 734997)
  • URLs in the 'Total' row at the bottom of tabular reports were broken when JavaScript was enabled and a user field was used for the vertical axis. (Bug 731323)
  • Some performance problems have been fixed for installations with many products, components or versions. (Bugs 695514 and 731055)
  • A new hook named buglist_column_joins has been added to let extensions alter the Bugzilla::Search::COLUMN_JOINS hash. Now more fields can be displayed as columns in buglists, in combination with the already existing buglist_columns hook. (Bug 743991)
  • A new hook named error_catch has been added to let extensions alter the way errors are thrown. (Bug 745197)
  • A new hook named admin_editusers_action has been added to let extensions alter the behavior of editusers.cgi. This lets you add new features to this script very easily. (Bug 730794)

Minimum Requirements

Any requirements that are new since 4.0.2 will look like this.

Perl

Perl v5.8.1

For MySQL Users

  • MySQL v5.6.12
  • perl module: DBD::mysqlv4.001

For PostgreSQL Users

  • PostgreSQL v8.03.0000
  • perl module: DBD::Pgv1.45

For Oracle Users

  • Oracle v10.02.0
  • perl module: DBD::Oraclev1.19

For SQLite Users

  • SQLite v3.6.22
  • perl module: DBD::SQLitev1.29

Optional Apache Modules

If you are using Apache as your webserver, Bugzilla can take advantage of some Apache features if you have the below Apache modules installed and enabled. Currently, certain Bugzilla features are enabled only if you have all of the following modules installed and enabled:

  • mod_headers
  • mod_expires
  • mod_env

On most systems (but not on Windows), checksetup.pl is able to tell whether or not you have these modules installed, and it will tell you.

New Features and Improvements

Experimental SQLite Support

SQLite is now supported by Bugzilla and becomes the 4th supported database besides MySQL, PostgreSQL and Oracle. SQLite support must be considered as experimental, at least till the next major release.

Note that use of SQLite is only recommended for small installations. Larger installations should use MySQL, PostgreSQL, or Oracle.

Creating an Attachment by Pasting Text Into a Text Field

You can now create a new attachment simply by pasting some text into a text field, in addition to the normal upload process for attachments.

HTML Bugmail

By default, bugmails (email notifications about changes to bugs) are now sent in an HTML format that is more readable than the old text format. Those who prefer the old text format can still choose it in their Preferences, however.

The Custom Search section in the Advanced Search page has been redesigned to work in a more sensible way. Complex queries are easier to build and have more sensible results, as they are built using a more intuitive logic. Some very complicated queries are still impossible to generate, though. Things should improve in future releases.

Disabling Old Components, Versions and Milestones

Older components, versions and milestones can now be disabled. Bugs already using them are not affected, but these values will no longer be available for new bugs.

Displaying a Custom Field Value Based on Multiple Values of Another Field

A custom field can now be displayed based on multiple values of another field. (For example, one custom field could now appear in multiple products.) Previously, you could only display a custom field based on a single value of another field.

Auditing of All Changes Within Bugzilla

Most changes made through the admin interface are now logged to the database, in the audit_log table. There is no UI to access this table yet, but developers are free to create their own tools to track changes made into their installation. This is only a first step, and improvements are expected in future releases.

Accessibility Improvements

A project has started thanks to Francisco Donalisio from IBM to make Bugzilla compliant with the W3C Web Accessibility Initiative standards. A lot more work still needs to be done, but we expect a much better compatibility for the next major release.

Other Enhancements and Changes

Enhancements for Users

  • Bugs: Users without editbugs privileges can no longer remove other users from the CC list of bugs.
  • Bugs: Local bug IDs are now valid in the See Also field. Adding such an ID will also add a reciprocal link in the other bug.
  • Bugs: After editing a bug or an attachment, the URL is automatically changed to show_bug.cgi instead of post_bug.cgi, process_bug.cgi or attachment.cgi so that reloading the page (for instance when restarting the web browser) displays the right page. This feature is supported by Firefox, Chrome and Safari, but not by Internet Explorer 9.
  • Bugs: Inactive accounts are no longer displayed in user fields when user-autocompletion is enabled.
  • Bugs: User-autocompletion is now much faster on installations with many user accounts.
  • Bugs: The See Also field now accepts URLs pointing to MantisBT, Trac, JIRA and the sourceforge.net bug trackers.
  • Bugs: Displaying a bug with many dependencies is now much faster.
  • Attachments: The encoding of text files can be automatically detected when uploading them as attachments.
  • Attachments: Clickjacking could possibly occur in an attachment Details page if a user attached a specially formatted HTML file. To fix this potential problem, the Details page always displays the HTML source instead and users can see rendered page by clicking on View.
  • Flags: Changing the requestee of a flag no longer changes the requester.
  • Reports: If JavaScript is enabled in your web browser, tabular reports are now sortable based on any displayed column.
  • Dependency graphs: The Show every bug in the system with dependencies option has been removed.
  • Searches: The columns displayed by default in buglists have changed. These columns are now displayed by default unless otherwise specified:
    product | component | assignee | bug status | resolution | bug summary | last change date
    This means that the priority, severity and operating system columns are no longer displayed by default.
  • Searches: Buglists will now only display the first 500 bugs by default. It is still possible to display the whole list, though.
  • Searches: When using relative dates and times, -1w is now a synonym for -7d and means exactly 7 days. Previously, -1w meant the beginning of the week, which was confusing some users. The same confusion existed for -1d which was different from -24h, and for -1m which was different from -30d. Now if you really want the beginning of the day, week or month, you must use -1ds, -1ws, and -1ms respectively, where "s" means "start of". This change will affect existing saved searches using relative dates.
  • Searches: A new Include fulltext when performing quick searches user preference has been added which permits users to include or exclude comments when using quicksearches.
  • Searches: It is now possible to query for bugs based on personal tags in the Custom Search section in the Advanced Search page.
  • Email notifications: The date and time of comments are no longer displayed in the comment header in bugmails. This information is already available in the email header itself.

Enhancements for Administrators and Developers

  • Installation: checksetup.pl is now much quieter when creating a new database.
  • Security: Bugzilla 4.0 is using Math::Random::Secure to generate cryptographically secure pseudorandom numbers, but it appeared that installing this Perl module from CPAN caused a lot of trouble for some people due to its numerous dependencies. So the RNG code has been rewritten to only depend on Math::Random::ISAAC, which was already in use in previous versions of Bugzilla.
  • Security: X-Frame-Options = SAMEORIGIN is now passed to all page headers (except when viewing attachments, as they can be on a different host) to protect users from framing and subsequent possible clickjacking problems.
  • Configuration: A new parameter password_complexity has been added (default: no_constraints) which allows admins to force users to use passwords with a higher complexity, such as a combination of uppercase and lowercase letters, numbers and special characters, or a subset of them.
  • Configuration: A new parameter search_allow_no_criteria has been added (default: on) which allows admins to forbid queries with no criteria. This is particularly useful for large installations with several tens of thousands bugs where returning all bugs doesn't make sense and would have a performance impact on the database.
  • Configuration: A new parameter default_search_limit has been added (default: 500) which limits the number of bugs displayed by default in a buglist. The user can ask to see a larger list, though.
  • Configuration: A new parameter max_search_results has been added (default: 10000) which limits the number of bugs a user can request at once in a buglist. This is a hard limit and a user cannot bypass this value.
  • Configuration: A new parameter ajax_user_autocompletion has been added (default: on) to allow administrators to disable auto-completion when typing characters in user fields. This parameter should only be disabled if your installation is unable to support the load generated by this feature.
  • Configuration: The config_modify_panels hook now lets you add additional parameters to existing parameters panels.
  • Flags: Users with local editcomponents privileges can now edit flag types for products they can administer.
  • Quips: A new system group bz_quip_moderators has been created to moderate quips. Till now, you had to be in the admin group to do that.
  • importxml.pl now inserts each comment separately into the imported bug instead of concatenating them all into a single comment.
  • email_in.pl now ignores auto-submitted incoming emails (for instance, all these "out of office" emails).
  • New code hooks: email_in_before_parse, email_in_after_parse, install_filesystem, install_update_db_fielddefs, job_map, object_end_of_create, quicksearch_map, user_preferences.

WebService Changes

  • Two new methods have been added: Product.create and Group.create.
  • Bug.update no longer throws an error when passing an empty string to see_also. It now simply ignores this empty value.
  • Product.get now also returns data about the classification it belongs to as well as its components, milestones and versions. It also returns the default_milestone and has_unconfirmed attributes.
  • In Bug.fields, the sortkey attribute used in values has been renamed to sort_key.
  • In Bug.attachments and Bug.add_attachment, the is_url attribute no longer exists.

Outstanding Issues

  • Bug 89822: When changing multiple bugs at the same time, there is no "mid-air collision" protection.
  • Bug 276230: The support for restricting access to particular Categories of New Charts is not complete. You should treat the chartgroup parameter as the only access mechanism available.
  • Bug 584742: When viewing a bug, WebKit-based browsers can automatically reset a field's selected value when the field has disabled values.
  • Bug 780053: Oracle crashes when listing keywords, tags or flags in buglists.

Code Changes Which May Affect Customizations and Extensions

  • The email/newchangedmail.txt.tmpl template is now fully templatized, meaning that the diff table displaying changes in bug fields is now generated in the template itself. This means bugmails are now fully localizable.
  • The bugmail_recipients hook has been modified to pass diffs with changes made to the bug as well as users including recipients of the email notification.
  • YUI has been upgraded to 2.9.0.
  • Due to the major code refactor of Bugzilla/Search.pm, any customization made against this file will probably need to be rewritten.
  • The Bugzilla-specific url_quote filter used in templates has been removed and replaced by the uri filter from Template::Toolkit as they are now similar.
  • long_list.cgi, showattachment.cgi and xml.cgi have been removed from the codebase. As announced in the release notes of Bugzilla 4.0, these scripts were deprecated since Bugzilla 2.19.
  • sidebar.cgi has been removed, because Gecko-based browsers no longer support remote XUL, and its popularity is very low.
  • contrib/yp_nomail.sh has been removed. This script is no longer useful since Bugzilla 3.0.
  • contrib/bugzilla_ldapsync.rb has been removed. This script didn't work for a long time.

Bugzilla 4.0 Release Notes

Introduction

This is Bugzilla 4.0! Since 3.6 (our previous major release) we've come a long way, and we've come even further compared to 3.0 in 2007! Since Bugzilla 3.0, almost every major user interface in Bugzilla has been redesigned, the WebServices have evolved enormously, there's a great new Extensions system, and there are hundreds of other new features. With the major redesigns that come particularly in this release compared to 3.6, we felt that it was time to call this release 4.0.

It's not just major WebService and UI enhancements that are new in Bugzilla 4.0—there are many other exciting new features, including automatic duplicate detection, enhanced custom field functionality, autocomplete for users, search improvements, and much more. Overall, 4.0 is far and away the best version of Bugzilla we've ever released.

If you're upgrading, make sure to read Notes On Upgrading From a Previous Version. If you are upgrading from a release before 3.6, make sure to read the release notes for all the previous versions in between your version and this one, particularly the Upgrading section of each version's release notes.

We would like to thank ITA Software, the IBM Linux Technology Center, and Red Hat for funding the development of certain features and improvements in this release of Bugzilla.

Updates in this 4.0.x Release

4.0.2

This release fixes several security issues. See the Security Advisory for details.

In addition, the following important fixes/changes have been made in this release:

  • The Bug.create WebService method now throws an error if you pass a group name which doesn't exist. In Bugzilla 4.0 and 4.0.1, this group name was silently ignored, leaving your bug insecure if no other group applied. (Bug 653341)
  • Moving several bugs at once into another product displayed the same confirmation page again and again, and changes were never committed (regressed in 4.0). (Bug 663208)
  • Marking a bug as a duplicate now works in Internet Explorer 9. (Bug 656769)
  • importxml.pl no longer crashes when importing keywords (regressed in 4.0). (Bug 657707)
  • Data entered while reporting a new bug could be lost if you had to click the "Back" button of your web browser. (Bug 652427)
  • WebServices methods will return undefined bug fields as undefined instead of as an empty string. This change is consistent with how Bugzilla 4.2 behaves. (Bug 657561)
  • The XML-RPC interface now works with SOAP::Lite 0.711 and 0.712 under mod_perl. (Bug 600810)
  • LWP 6.00 and newer require Perl 5.8.8 and above. When installing this module using install-module.pl on a Perl installation older than 5.8.8, LWP 5.837 will be installed instead. (Bug 655912)
  • Viewing a bug report should be significantly faster when your installation has many custom fields. (Bug 634812)

4.0.1

  • During installation, the CPAN module Math::Random::Secure would sometimes fail to install properly and give an error about Math::Random::Secure::irand. Now, when using install-module.pl to install Math::Random::Secure, this will no longer happen. If you are currently experiencing this bug and it prevented you from installing 4.0, remove Math::Random::Secure from your lib/ directory, like:

    rm -rf lib/Math/Random/Secure*

    (Bug 646578)

  • The "Remember values as bookmarkable template" button on the bug entry page will now work even when some required fields are empty. (Bug 640719)
  • Email notifications about dependencies and flags had the wrong timestamp. (Bugs 643910 and 652165)
  • You can now select "UTC" as a valid timezone in General Preferences. (Bug 646209)
  • Automatic duplicate detection now works on PostgreSQL (although it is not as high-quality as on other DB platforms). (Bug 634144)
  • Autcomplete for users now works even if you are using the "emailsuffix" option. (Bug 641519)
  • JavaScript errors during series creation in New Charts have been fixed. (Bug 644285)
  • The "Show Votes" page now works, for installations using the Voting extension. (Bug 652381)

Minimum Requirements

Any requirements that are new since 3.6.3 will look like this.

Perl

Perl v5.8.1

For MySQL Users

  • MySQL v4.1.2
  • perl module: DBD::mysql v4.00

For PostgreSQL Users

  • PostgreSQL v8.00.0000
  • perl module: DBD::Pg v1.45

For Oracle Users

  • Oracle v10.02.0
  • perl module: DBD::Oracle v1.19

Required Perl Modules

ModuleVersion
CGI 3.51
Digest::SHA (Any)
Date::Format 2.21
DateTime 0.28
DateTime::TimeZone 0.71
DBI 1.41
Template 2.22
Email::Send 2.00
Email::MIME 1.904
URI (Any)
List::MoreUtils 0.22

Optional Perl Modules

The following Perl modules, if installed, enable various features of Bugzilla:

ModuleVersionEnables Feature
GD 1.20 Graphical Reports, New Charts, Old Charts
Chart::Lines 2.1 New Charts, Old Charts
Template::Plugin::GD::Image (Any) Graphical Reports
GD::Text (Any) Graphical Reports
GD::Graph (Any) Graphical Reports
MIME::Parser 5.406 Move Bugs Between Installations
LWP::UserAgent (Any) Automatic Update Notifications
XML::Twig (Any) Move Bugs Between Installations, Automatic Update Notifications
PatchReader 0.9.4 Patch Viewer
Net::LDAP (Any) LDAP Authentication
Authen::SASL (Any) SMTP Authentication
Authen::Radius (Any) RADIUS Authentication
SOAP::Lite 0.712 XML-RPC Interface
JSON::RPC (Any) JSON-RPC Interface
JSON::XS 2.0 Make JSON-RPC Faster
Test::Taint (Any) JSON-RPC Interface, XML-RPC Interface
HTML::Parser 3.40 More HTML in Product/Group Descriptions
HTML::Scrubber (Any) More HTML in Product/Group Descriptions
Email::MIME::Attachment::Stripper (Any) Inbound Email
Email::Reply (Any) Inbound Email
TheSchwartz (Any) Mail Queueing
Daemon::Generic (Any) Mail Queueing
mod_perl2 1.999022 mod_perl
Apache2::SizeLimit 0.93 mod_perl
Math::Random::Secure 0.05 Improve cookie and token security

Optional Apache Modules

If you are using Apache as your webserver, Bugzilla can now take advantage of some Apache features if you have the below Apache modules installed and enabled. Currently, certain Bugzilla features are enabled only if you have all of the following modules installed and enabled:

  • mod_headers
  • mod_expires
  • mod_env

On most systems (but not on Windows), checksetup.pl is able to tell whether or not you have these modules installed, and it will tell you.

New Features and Improvements

Automatic Duplicate Detection When Filing Bugs

When filing a bug, as soon as you start typing in the summary field, Bugzilla will suggest possible duplicates of the bug you are filing.

In order for this feature to work, all pre-requisites for JSON-RPC support must be installed on your Bugzilla. It will be much faster on installations that run under mod_perl than it will be on other installations.

New Advanced Search UI

Thanks to the UI work of Guy Pyrzak, the Advanced Search UI has been completely redesigned. It is now much simpler, and far more approachable for new users, while still retaining all of the features that power users are used to.

New Attachment Details UI

The UI used for editing attachment details has been completely redesigned, allowing for a normally-size comment box to be used when commenting on attachments, and allowing nearly the entire screen width to be used when doing code reviews or editing an attachment as a comment.

Thanks to Guy Pyrzak for his excellent work on this UI redesign.

Autocomplete for Users and Keywords

Once you type at least three characters in any field that can contain a user (including the CC, QA Contact, or Assignee fields), a list will appear containing all of the users whose real names or usernames match what you are typing. Your Bugzilla must have all of the optional Perl modules required for JSON-RPC support installed, though, in order for this feature to work. Also, this feature will be much faster on installations that run under mod_perl than it will be on other installations.

There is also a similar autocomplete for the Keywords field. The Keywords autocomplete does not require JSON-RPC.

General Usability Improvements

In addition to the enhancements listed above, there have been many improvements made across the Bugzilla user interface. For a list of specific enhancements that were significant, see the Other Enhancements and Changes section.

New Default Status Workflow

For new installations of Bugzilla, the default set of statuses will now be:

  • UNCONFIRMED
  • CONFIRMED
  • IN_PROGRESS
  • RESOLVED
  • VERIFIED

And the UNCONFIRMED status will be enabled by default in all products.

On upgrade, existing installations will not be affected--you will retain your existing status workflow. However, we strongly recommend that you update your existing workflow to the new one, using a special tool we've included, contrib/convert-workflow.pl, which you can run after you use checksetup.pl to upgrade. The whineatnews.pl and bugzilla-submit scripts will probably not work properly if you continue to use the old workflow (though most other parts of Bugzilla will still function normally).

For more information about the workflow and our rationale for changing it, see the blog post about it and the bug where the change was made.

"Last Search" Now Remembers Multiple Searches

At the top of every bug in Bugzilla, there are links that look like: "First", "Last", "Prev", "Next", and "Show last search results". In earlier versions of Bugzilla, if you did two separate searches in separate windows, these links would only work for the last search you did. Now, Bugzilla will "remember" which search result you came from and give you the right "last search results" or "next bug" from that list, instead of always using your most recent search.

There are still some situations where Bugzilla will have to "guess" which search you are trying to navigate through, but it does its best to get it right.

Cross-Domain WebServices with JSONP

Bugzilla now supports making WebService calls from another domain, inside of a web browser, thanks to support for JSONP. This will allow for web "mash-ups" to use Bugzilla data. When using JSONP, you may only call functions that get data, you may not call functions that change data.

For more details, see the JSONP section of the JSON-RPC WebService documentation.

Major WebService Enhancements

The WebService has been expanded considerably. The WebService should now be able to do everything with bugs that you can do via the web interface, including updating bugs, adding attachments, and getting attachment data. For specifics, see the WebService Changes section of these release notes.

Mandatory Custom Fields

You can now specify that certain custom fields are "mandatory", meaning that they must have a value when a bug is filed, and they can never be empty after that.

Voting Is Now An Extension

All of the code for voting in Bugzilla has been moved into an extension, called "Voting", in the extensions/Voting/ directory. To enable it, you must remove the disabled file from that directory, and run checksetup.pl.

In a future version of Bugzilla, the Voting extension will be moved outside of the Bugzilla core code, so we are looking for somebody who has an interest in the Voting system and would like to maintain it as a separate extension. There are many enhancement requests that have been made against the Voting system, and the best way for those to get addressed is for somebody to step up and offer to maintain the system outside of Bugzilla's core code.

Users Get New CSS and JavaScript Automatically

In past versions of Bugzilla, if you changed Bugzilla's CSS or JavaScript files, then every user of Bugzilla would have to clear their cache in order to get the updated files. Now, if you are using Apache as your webserver and you have the optional Apache modules installed and enabled, users will automatically get every new version of Bugzilla's JavaScript and CSS without having to clear their caches.

This feature also gives a slight performance speedup to Bugzilla in some cases, and so we recommend that all administrators install and enable the optional Apache modules if possible.

Many New Hooks

Many new code hooks have been added for use by Extensions, in Bugzilla 4.0. Now Extensions can access and modify nearly every part of Bugzilla.

New Apache Configuration

If you run Bugzilla under Apache (as most people do), you most likely require a new Apache configuration for this version of Bugzilla. See the Notes On Upgrading From a Previous Version section for details.

Other Enhancements and Changes

Enhancements for Users

  • Now, everywhere in Bugzilla where you can enter a date, there is a Calendar widget where you can select the date on a calendar.
  • The big icons on the front page have been replaced with much nicer icons, thanks to Jon Pink of J. Pink Design!
  • Bugs: When filing bugs, you will now be warned if you forgot to fill in any mandatory fields, before the page is submitted.
  • Bugs: When filing a bug, you can hover your mouse over any of the field labels on the page to get a brief description of what that field is and what its purpose is.
  • Bugs: When adding Hours Worked to a bug, you are no longer required to comment.
  • Bugs: There is now a user preference for whether the comment box appears above or below the existing comments.
  • Bugs: Bugzilla will now send an email for every comment that you mark or un-mark as being private. (Previous versions of Bugzilla did not send emails to users about this change.) The state of comments being made private is also now stored in a bug's history.
  • Bugs: The box to "Add Bug URLs" in the See Also field is now hidden behind an "(add)" link that you have to click to see the box.
  • Searches: You can now properly search for field values that have commas in their name, when using the Advanced Search form.
  • Searches: The "URL" field can now be shown as a column in search results.
  • Searches: When viewing a search result, you can now click on the Summary of the bug in order to go to the bug-view page, in addition to being able to click on the bug ID.
  • Searches: When doing a search using the "quicksearch" box in the header or footer, the box will still contain what you searched for when viewing the search results page.
  • Searches: Multi-select custom fields can now be shown as columns in the search results.
  • Searches: When using the Boolean Charts (now called "Custom Search"), if you specify both a criterion for an attachment and a criterion for a flag, then only bugs that have attachments with that flag will be found.
  • Searches: If you hover your mouse over the field labels on the Advanced Search page, you will get a description of what that field is.
  • Searches: When searching via a saved search, if you accidentally click on "Forget Search", there is a link to undo it.
  • Searches: When using the Boolean Charts (now called "Custom Search"), you can search for values "greater than or equal to" or "less than or equal to" some value.
  • Flags: If you hover your mouse over the name of a flag setter when viewing a bug, you can see that flag setter's full name and complete username.
  • Flags: When setting a flag on a bug, the box for entering a requestee does not appear until you set the flag to "?", now.
  • Flags: On the "My Requests" page, bugs that are restricted to certain groups now properly have the "padlock" icon shown next to them to indicate that they may contain confidential information.
  • When using the Reports interface, you can now choose many more fields as the X, Y, or Z axis of a report, including custom fields.
  • Bugzilla now prevents Internet Explorer 8 and later from attempting to render text/plain attachments as HTML.
  • If you receive a Whine mail that is empty, there will now be a brief message explaining that your search found no results.
  • The Field Help Page now contains a description of every single field that can be on a bug in Bugzilla.

Enhancements for Administrators and Developers

  • The system for moving bugs between installations has been moved into an extension called OldBugMove. This system was used by very few Bugzilla installations--if you aren't certain whether or not you are using it, you're not using it. To enable the system, you have to remove the file extensions/OldBugMove/disabled and then run checksetup.pl. In a future version of Bugzilla, this extension may be moved outside of the core Bugzilla code, so if you are interested in maintaining it, please let us know.
  • Custom Fields: "Bug ID" custom fields can now represent relationships between bugs, similarly to how the Blocks and Depends on fields work now.
  • Custom Fields: You can now restrict the visibility of custom fields and their values to a specific Component or Classification.
  • The "keyword cache" has been removed. When you edit keywords, you no longer will have to "rebuild the keyword cache" after you are done.
  • Running ./collectstats.pl --regenerate will now take minutes or hours, instead of days.
  • When using email_in.pl, there are two new switches, --default and --override, which allow you to specify certain default values or override specified values for @field values sent in emails. (This also allows you to specify defaults for everything so that people do not have to specify any field values when filing a bug via email.)
  • Installation: If you are using a localized version of Bugzilla and your terminal does not understand Unicode, checksetup.pl will now attempt to output its messages in your terminal's character set.
  • Installation: Bugzilla no longer needs empty "placeholder" CSS in the skins/custom directory and other directories. When you update, checksetup.pl will remove these. This also significantly reduces the number of HTTP requests required to load a page for the first time in Bugzilla.
  • Installation: For Windows users, Bugzilla now supports Strawberry Perl fully.
  • Installation: Now, whenever checksetup.pl throws an error, it will be printed in the color red, to make it obvious that something is wrong.
  • Installation: Some actions of checksetup.pl were silent, in the past. Now, checksetup.pl will print a message for almost anything it does.
  • Installation: The process of adding foreign keys to a table is now much faster. This will particularly improve the speed of upgrading from Bugzilla 3.4 or earlier.
  • If you are using jobqueue.pl and email gets heavily delayed for some reason, those emails will now have a Date header reflecting the time they were supposed to be sent, instead of when they actually were sent.
  • ./jobqueue.pl install now works on SuSE Linux.
  • Bugzilla now runs much better in Apache's suexec mode than it used to. As part of this, checksetup.pl sets much stricter permissions on all the files in Bugzilla than it used to. In particular, any files that Bugzilla does not know about will not be readable by the webserver.
  • The sendmailnow parameter has been removed, as it was not necessary for any modern version of Sendmail or other Mail Transfer Agent.
  • When editing a user via the Users administration panel, you can now see if they are a Default CC on any component.
  • For new installations of Bugzilla, all users will be able to see and use the Whining system by default.
  • When you are using SSL with Bugzilla, you can now turn on the strict_transport_security parameter to send the Strict-Transport-Security header with every HTTPS connection, for additional security.
  • New code hooks (see their documentation in Bugzilla::Hook): bug_check_can_change_field, search_operator_field_override, bugmail_relationships, object_columns, object_update_columns, and object_validators. The colchange_columns hook has been removed, as it is no longer necessary (buglist_columns will be used for data about which columns can be on the bug list).
  • When Bugzilla throws certain types of errors, it will now include a "traceback" of where exactly the error occurred in the code, to help administrators and developers debug problems.
  • There is now a test, xt/search.t, that assures that all of the functionality of Bugzilla::Search is working properly. If you customize the search functionality of Bugzilla, you may wish to run this test to assure that your changes are correct. You can see more information about running this test by doing perldoc xt/search.t at the command line.
  • Bugzilla now sends the X-Frame-Options: SAMEORIGIN header with every page request in order to prevent "clickjacking" attacks. Note that this prevents other domains from displaying Bugzilla in an HTML frame.

WebService Changes

  • You can now call some JSON-RPC methods using HTTP GET, in addition to using HTTP POST. See the JSON-RPC documentation for details.
  • You can now update existing bugs using the Bug.update function.
  • You can now add attachments to bugs using the Bug.add_attachment function.
  • The Bug.get function now returns all of a bug's information other than comments and attachments.
  • Bug.get no longer returns the internals hash.
  • The Bug.attachments function now also returns attachment data.
  • The following functions now support the include_fields and exclude_fields arguments: Bug.get, Bug.search, and Bug.attachments. Also, server-side performance of the WebService is actually increased when using these arguments, now, as Bugzilla will no longer get data from the database for fields you haven't asked for.
  • You can now mark the initial description of a bug as private when filing a bug via the Bug.create function.
  • You can now specify groups to put a bug in, in the Bug.create function. (This also means that you can specify groups when filing a bug via email_in.pl.)
  • The User.get function now accepts groups and group_ids arguments, to limit the returned values to only users in the specified groups.
  • There is a new, undocumented Bug.possible_duplicates function that helps implement the automatic duplicate detection system. Because this function is not documented, its API may change between releases of Bugzilla.
  • You can no longer search using the votes argument in Bug.search.
  • Bug.attachments now returns the attachment's description using the name "summary" instead of the name "description", to be consistent with the fact that bug summaries are called "summary". The value is still also returned as "description", for backwards compatibility, but this backwards compatibility will go away in Bugzilla 5.0.
  • In the return values of various Bug functions, the author of comments, bugs, and attachments is now called "creator", instead of sometimes being called "reporter", "author", or "attacher". The old names are retained for backwards-compatibility, and will stay around until Bugzilla 5.0.

Outstanding Issues

  • Bug 423439: Tabs in comments will be converted to four spaces, due to a bug in Perl as of Perl 5.8.8.
  • Bug 89822: When changing multiple bugs at the same time, there is no "mid-air collision" protection.
  • Bug 276230: The support for restricting access to particular Categories of New Charts is not complete. You should treat the 'chartgroup' Param as the only access mechanism available.
    However, charts migrated from Old Charts will be restricted to the groups that are marked MANDATORY for the corresponding Product. There is currently no way to change this restriction, and the groupings will not be updated if the group configuration for the Product changes.

Notes On Upgrading From a Previous Version

IMPORTANT: Apache Configuration Change

mod_cgi

If you run Bugzilla under mod_cgi (this is the most common configuration, involving a <Directory> block in your Apache config file), you will need to update the configuration of Apache for Bugzilla. In particular, this line in the Bugzilla <Directory> block:

AllowOverride Limit

needs to become:

AllowOverride Limit FileInfo Indexes

For full details on how to configure Apache for Bugzilla, see the Configuration section of the Bugzilla Guide.

mod_perl

If your Bugzilla runs under mod_perl, the required Apache configuration is now simpler. The line that used to look like:

PerlSwitches -w -T -I/var/www/html/bugzilla -I/var/www/html/bugzilla/lib

Now should be only:

PerlSwitches -w -T

The PerlConfigRequire line should stay the same, however.

New .htaccess file

In previous versions of Bugzilla, there was a file in Bugzilla's root directory called ".htaccess" that was generated by checksetup.pl. This file is now shipped with Bugzilla instead of being generated during installation.

If you update via CVS or bzr, you will get a message that your existing .htaccess file conflicts with the new one. You must remove your existing .htaccess file and use the new one instead. Continuing to use your old .htaccess file will cause certain new features of Bugzilla to not work properly, and may also lead to security issues for your system in the future.

Code Changes Which May Affect Customizations and Extensions

  • In Extensions, if you want to serve files to the user via the web, they must now be in a web/ subdirectory of your Extension. (For example, extensions/Foo/web/). checksetup.pl sets permissions on extensions much more strictly now, and files in other locations (such as your base extensions/Foo/ directory) will no longer be available to Bugzilla users via the web under certain configurations.
  • Previous versions of Bugzilla used to allow putting a single file into the "skins" directory and having that be an entire skin. That is no longer allowed, and on upgrade, checksetup.pl will convert any such skins into a directory with a single global.css file in them.
  • When updating bugs, you should now use $bug->set_all instead of using the individual set_ methods. In particular, set_all is now the only way to set the product of a bug. See process_bug.cgi for an example of how set_all should be used.
  • You should not insert <script> tags and <link> CSS tags into HTML anymore, in Extensions or in your customizations. Instead, you should push new values into the style_urls or javascript_urls parameters. If you have to insert manual tags for some reason, be sure to call "FILTER mtime" on the URL. (Search for other uses of "FILTER mtime" in the templates to see how it is used.)
  • When calling Bugzilla::BugMail::Send, the "changer" argument must now be a Bugzilla::User object, not just a login name. The "owner" and "qacontact" arguments are still just login names.
  • When creating a new subclass of Bugzilla::Object, you should no longer use UPDATE_VALIDATORS. Also, in most cases you will no longer need to override run_create_validators. Instead, there is a new constant called VALIDATOR_DEPENDENCIES, that specifies that certain fields have to be validated before other fields. Then, all validators receive each already-validated value in a hash as their fourth argument, so each validator can know the other values that were passed in, while an object is being created. For an example of how to use VALIDATOR_DEPENDENCIES, see Bugzilla/Field.pm.
  • In previous versions of Bugzilla, you had to call Bugzilla->template_inner("") after any time that you called template_inner for a specific language. It is no longer necessary to do this second template_inner call.
  • post_bug.cgi and Bugzilla::Bug->create now take the names of groups instead of group ids.
  • Bugzilla::Bugmail now uses Bugzilla::Bug objects internally instead of a lot of direct SQL.
  • For sending changes about bugs, there is now a method called send_changes that you can call on Bugzilla::Bug objects. For an example of its use, see process_bug.cgi.
  • The Bugzilla::Search class has been refactored, and should now be easier to customize.
  • The Bugzilla::Util::lsearch function is gone. Use firstidx from List::MoreUtils, instead.
  • Bugzilla now includes YUI 2.8.2.
  • long_list.cgi, showattachment.cgi and xml.cgi are deprecated scripts which are no longer actively used since Bugzilla 2.19. These scripts will be removed in Bugzilla 4.2.

Release Notes For Previous Versions

Release Notes for Bugzilla 3.x and Earlier