[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% SET title = "Bugzilla 4.4 Release Notes" %]
[% INCLUDE global/header.html.tmpl
title = title
bodyclasses = ['narrow_page']
%]
[% title FILTER html %]
Introduction
Welcome to Bugzilla 4.4! It has been over a year since we
released Bugzilla 4.2 on February 2012, and this new major
release comes with several new features and improvements. This release
contains major improvements to WebServices, which were our main target in
this release, a rewritten tagging system, a real MIME type auto-detection for
attachments, improved support for Oracle, performance improvements and lots
of other enhancements.
If you're upgrading, make sure to read Notes On
Upgrading From a Previous Version. If you are upgrading from a release
before 4.2, 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.4.x Release
4.4.4
This release fixes one regression introduced in Bugzilla 4.4.3 by
security [% terms.bug %] 968576:
URLs in [% terms.bug %] comments are displayed correctly again.
([% terms.Bug %] 998323)
4.4.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:
- The User.login WebService method now also returns a
token argument containing a login token which you can use in
subsequent calls to authenticate. For security reasons, this method
no longer generates login cookies.
([% terms.Bug %] 893195)
- The User.get WebService method now correctly takes the
maxusermatches parameter into account when the match
argument is passed. Previously, it was returning all matching accounts.
To further limit the number of accounts returned by User.get,
you can now pass the limit argument.
([% terms.Bug %] 962060)
- The sudo cookie is no longer accessible from JavaScript.
([% terms.Bug %] 966676)
- Large dependency trees with lots of resolved [% terms.bugs %] now load
much faster.
([% terms.Bug %] 961789)
4.4.2
The following [% terms.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.
([% terms.Bug %] 938300)
- An error about longdescs.comment_id was thrown by MySQL 5.0
and 5.1 when upgrading to Bugzilla 4.4 or 4.4.1.
([% terms.Bug %] 870369)
- Saved searches containing Unicode characters in their name could not
be run if Digest::SHA 5.82 or newer is installed.
([% terms.Bug %] 964113)
- A regression in Bugzilla 4.4.1 caused email_in.pl to fail
with an "invalid token" error message.
([% terms.Bug %] 928331 and
[% terms.bug %] 930013)
- 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).
([% terms.Bug %] 843457)
- Mandatory custom fields whose visibility depends on a component are now
correctly required on [% terms.bug %] creation.
([% terms.Bug %] 895813)
- Windows 8.1 is now recognized when reporting new [% terms.bugs %].
([% terms.Bug %] 928092)
- Bugzilla no longer crashes when the shutdownhtml parameter
is set and using a non-cookie based authentication method.
([% terms.Bug %] 748095)
- importxml.pl no longer ignores the maxattachmentsize
and maxlocalattachment parameters when importing [% terms.bugs %].
This means that large attachments are now stored locally in
data/attachments/ if parameters are configured this way.
The script must now be run as the webserver user (e.g. apache) to make these
attachments readable from web browsers.
([% terms.Bug %] 360231)
- The default date and time format used for SQLite has been fixed.
([% terms.Bug %] 938161)
4.4.1
This release fixes several security issues. See the
Security Advisory
for details.
In addition, the following [% terms.bugs %] have been fixed in this release:
- checksetup.pl no longer fails with "Invalid version format (non-numeric data)"
when a Perl module contains an invalid version number.
([% terms.Bug %] 781672)
- Internet Explorer 11 and KHTML-based browsers such as Konqueror can now
display buglists correctly.
([% terms.Bug %] 902515 and
[% terms.bug %] 914262)
- When editing several [% terms.bugs %] at once and moving them into a new
product, [% terms.bugs %] restricted to a group in the old product could
loose these group restrictions in the new product.
([% terms.Bug %] 769134)
- 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.
([% terms.Bug %] 897264)
- Large dependency trees are now displayed much faster.
([% terms.Bug %] 917370)
- When a user has set many votes, the "Votes" page is now displayed much faster.
([% terms.Bug %] 851267)
- The "My Requests" page now correctly uses the AND/OR operator for the
requester and requestee fields only instead of using it for all fields.
([% terms.Bug %] 891311)
- With DB servers doing case-insensitive comparisons, such as MySQL, tokens
and login cookies were not correctly validated as the case was ignored.
([% terms.Bug %] 906745 and
[% terms.bug %] 907438)
- All security headers (such as X-Frame-Options) are now returned when using XML-RPC.
([% terms.Bug %] 787328)
- Oracle crashed when reporting a new [% terms.bug %] if a custom free-text field
was non-mandatory and left empty.
([% terms.Bug %] 919475)
- It was not possible to import [% terms.bugs %] using importxml.pl with Oracle.
([% terms.Bug %] 848063)
Minimum Requirements
Any requirements that are new since 4.2 will look like
this.
Perl
Perl v5.8.1
IMPORTANT: This is the last major release to support
Perl 5.8.x! The next major release, Bugzilla 5.0, will require
Perl 5.10.1 as a minimum.
[% INCLUDE db_req db='mysql' %]
[% INCLUDE db_req db='pg' dbd_new => 1 %]
[% INCLUDE db_req db='oracle' %]
[% INCLUDE db_req db='sqlite' %]
Required Perl Modules
[% INCLUDE req_table reqs = REQUIRED_MODULES
updated = ['TimeDate', 'DBI', 'Email-Send', 'List-MoreUtils'] %]
Optional Perl Modules
The following perl modules, if installed, enable various
features of Bugzilla:
[% INCLUDE req_table reqs = OPTIONAL_MODULES
new = ['Net-SMTP-SSL', 'HTML-FormatText-WithLinks',
'File-MimeInfo', 'IO-stringy']
updated = ['TheSchwartz']
include_feature = 1 %]
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
Allow Multiple Search Criteria to Match one Field
In the "Advanced Search" page, it is now possible to build queries using
multiple custom search criteria against the same field. In Bugzilla
4.2 and older, queries of the form
"Status changed to VERIFIED" AND "Status changed by foo@bar.com"
were returning all [% terms.bugs %] which had their status changed to VERIFIED
by some user and which were edited by foo@bar.com once, but both actions could
be independent. In Bugzilla 4.4, you can now decide if both
criteria must match the exact same action or not, i.e. if you want
[%+ terms.bugs %] whose status has been set to VERIFIED by foo@bar.com himself.
In the same way, queries of the form
"Flags changed to approval+" AND "Flags changed by foo@bar.com"
can now return [% terms.bugs %] for which the approval flag has been set to
"+" by foo@bar.com himself. In previous versions, both actions were treated
independently and [% terms.bugs %] for which foo@bar.com set the approval flag
to "?" and which is then set to "+" by someone else were also returned.
This new feature gives you the ability to build more accurate queries and to
get more relevant results.
Improved Performance for Searches
The search system got a performance boost which in some cases decreases the
time spent to run queries from several minutes to a few seconds only.
The more complex your queries are, the more visible the performance win
should be.
The old tagging system which was in the footer of all pages had severe design
and usability limitations and has been replaced by a shiny new one which lets
you tag [% terms.bugs %] from the [% terms.bug %] report directly. Tags now
mostly work like keywords, but with two major differences. First of all, they
are personal, meaning that tags you set on [% terms.bugs %] are only visible
by you, and nobody else is notified nor can see which tags you set. This
behavior is the same as the old tagging system and so this feature didn't
change. The second major difference is that the list of available tags is
unlimited and is in no way hardcoded by administrators. You can type either
a new tag of your choice, or you can select one from an auto-generated list
of tags which you already used in other [% terms.bugs %]. Again, this feature
was already present in the old tagging system, but its usability has been
greatly improved. In particular, this means that tags are now displayed in
[%+ terms.bug %] reports directly, so that you immediately know which tags
you already set for that [% terms.bug %]. This feature is new in this release.
Another new feature is that your personal tags can now be listed in buglists.
They can also be used as search criteria in your queries. If you decide to
share a saved search which uses tags as criteria, this will work too! Note
that when you add a new tag, no saved search based on this tag is created
anymore, as you can easily create it yourself if you really need it.
The tags set with the old tagging system are automatically migrated to the
new system.
Auto-Detection of the Attachment MIME Type
When a user uploads a new attachment and lets the "Content Type" field set to
"auto-detect", Bugzilla now does its own MIME type detection
if the web browser tells them that the attachment is of type
"application/octet-stream", in an attempt to make a better guess than the web
browser. In all other cases, Bugzilla still trusts what the browser
tells them.
Check the list of optional Perl modules to
know which modules to install in order to enable MIME type sniffing.
Saving Tabular and Graphical Reports
It is now possible to save tabular and graphical reports in the same way as
you save searches. Saved reports will appear in the footer of pages, below
saved searches.
Unlike saved searches, it is not yet possible to share saved reports with
other users.
Custom Columns in Whine Emails
The list of columns to display in buglists contained in emails sent by the
whining system on a regular basis is no longer hardcoded. If the saved
search used for whining emails contains a list of columns, these columns are
used to be displayed in the emails. If no custom list is found, the default
column list is used instead.
This means that depending on the kind of email notifications you want, you
can fully customize data to return, on a per saved search basis!
Improved WebServices
This release got major improvements in its WebServices interface. Many new
methods have been implemented to let third-party applications interact with
Bugzilla even more closely. For instance, it is now possible to
know what parameters are set to using B[%%]ugzilla.parameters.
It is now also possible to update tags, products, groups or user accounts
using our API.
Several existing methods have also been improved to return data which
weren't available till now, such as [% terms.bug %] and attachment flags
using B[%%]ug.get, B[%%]ug.attachments or
Product.get. Users can also get their saved searches and reports
using User.get; and much more, see the
detailed list below.
New Apache Configuration
For improved security, Bugzilla now prevents directory browsing
by default. 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
- [% terms.Bugs %]: It is now possible to add yourself to
the CC list when uploading an attachment and when editing an existing one.
- [% terms.Bugs %]: There is a new user preference to be
automatically added to the CC list of [% terms.bugs %] for which a flag
request is addressed to you (the flag has you as the requestee).
- [% terms.Bugs %]: Changes to the CC list no longer
causes midair collisions.
- [% terms.Bugs %]: There is now a (take) link
besides the QA Contact field to easily set yourself as QA contact.
- [% terms.Bugs %]: [% terms.Bugs %] are no longer
reassigned to the default assignee when moving the [% terms.bug %] into
another product or component if the current assignee is not the default
one. Same goes for the QA contact.
- [% terms.Bugs %]: When reporting a new [% terms.bug %],
flags which are not available for the selected component and those which
the reporter cannot edit are now hidden instead of being disabled. For
existing [% terms.bugs %], unset flags are also hidden by default. Clicking
the (set flags) or (more flags) link will make them
appear.
- [% terms.Bugs %]: When viewing [% terms.abug %], the list
of duplicated [% terms.bugs %] is now listed near the top of the page.
- [% terms.Bugs %]: Private comments now always remain
visible to their author. Previously, the author of a comment couldn't see
it anymore if the comment was marked private and the author isn't in the
insider group.
- [% terms.Bugs %]: The See Also field now supports URLs
pointing to GitHub by default. If the new MoreBugUrl extension included in
this release is enabled, then you can also add URLs pointing to:
b[%%]ugs.php.net, RT, appspot.com (Rietveld), Review Board, and
getsatisfaction.com.
- Searches: The alias of [% terms.bugs %] you cannot see
are no longer resolved to their [% terms.bug %] ID, meaning that it is no
longer possible to connect an alias with its ID unless you can see the
[%+ terms.bug %].
- Searches: Custom multi-select fields are now available
in the "Search By Change History" section of the query page.
- Searches: The changed by operator in boolean
charts now accepts pronouns.
- Searches: The requester and requestee fields in boolean
charts now accept pronouns.
- Searches: It is now possible to hide the description of
queries appearing at the top of buglists.
- Requests: The "My Requests" page now displays an AND/OR
radio button to define the interaction between the requester and requestee
fields.
- Email Notifications: There is a new user preference to
not prepend "New:" to the subject of [% terms.bug %]mails when reporting
a new [% terms.bug %]. Some email clients couldn't thread emails correctly
due to this.
- Email Notifications: There is a new email event to get
notifications when the product or component of [% terms.abug %] changes.
- Email Notifications: All [% terms.bug %]mails now have
a X-Bugzilla-Flags email header, listing currently set flags.
- Email Notifications: All [% terms.bug %]mails now have
a X-Bugzilla-Version email header with the current product
version.
- Whining: The sort order of the saved search is used to
sort [% terms.bugs %] in the emails.
- User Accounts: To confirm an email address change, the
password is now requested instead of the old email address.
- Graphical Reports: The size of graphical reports is now
set dynamically to fit within the window of the web browser.
The Taller/Thinner/Fatter/Shorter links are now gone.
- Incoming Emails: email_in.pl now accepts
HTML-only emails to create and edit [% terms.bugs %] by email.
- Incoming Emails: When creating a new [% terms.bug %],
email_in.pl will look at the Importance and
X-Priority email headers to increase or decrease the initial
priority of the [% terms.bug %], unless the priority is already explicitly
set in the email itself.
- Skins: Bugzilla no longer fetches all skins
available when viewing a page. It only loads the skin selected by the user
in their preferences, which results in less requests to the server.
Enhancements for Administrators and Developers
- License: The Bugzilla code is now released
under the MPL 2.0 license (previously was MPL 1.1).
- Installation: On mod_perl, templates now remain in
memory for one hour, which can cause an increase in memory requirements.
This also means that it can take up to one hour before changes in templates
become active (unless you restart Apache).
- Installation: Running
checksetup.pl --make-admin=foo@bar.com now automatically
re-enables the user account if it was disabled.
- Configuration: A new parameter smtp_ssl can be
turned on to enable SSL connections to the SMTP server to send email
notifications.
- Administration: Custom fields now have a new Long
description attribute to better describe what the custom field is
about. This description then appears as a tooltip when hovering the custom
field in [% terms.bug %] reports.
- Administration: When creating a new product, the form
lets you add a component at the same time.
- Administration: When viewing a user account in
editusers.cgi, the date of the last login is displayed. Users
who did not log in since you upgraded to 4.4 will have this field empty.
- Administration: It is now possible to exclude disabled
user accounts when running a query in editusers.cgi.
- Administration: The default CC list is now also displayed
when listing components in editcomponents.cgi.
- Administration: Target milestones can now be 64 characters
long, for consistency with versions (previously was limited to 20 characters
only).
- Administration: The result code returned by
contrib/bugzilla-queue.rhel when it's not running is now 2
instead of 0.
- Database: Support for MySQL 5.6 has been added.
- Database: Support for Oracle has been greatly improved.
- Security: For improved security, the
"X-Content-Type-Options: nosniff" and "X-XSS-Protection: block"
headers are now sent with every response.
- Security: Tokens are now generated using HMAC SHA-256
instead of MD5.
- Documentation: The documentation is now generated with
xmlto and dblatex instead of jade.
WebService Changes
- Several new methods have been added: B[%%]ug.update_tags,
B[%%]ugzilla.parameters, B[%%]ugzilla.last_audit_time,
Classification.get, Group.update,
Product.update, User.update.
- B[%%]ug.add_attachment now only returns the ID of the newly
created attachments instead of all the attachment data.
- B[%%]ug.attachments now also returns the size field
containing the size of the attachment.
- B[%%]ug.attachments and B[%%]ug.get now return
data about flags.
- B[%%]ug.comments now also returns creation_time
which is exactly the same as time, but is provided for
consistency with B[%%]ug.get and B[%%]ug.attachments.
The time field may be deprecated and removed in a future release,
so you should use creation_time instead.
- B[%%]ug.comments now also returns the count field
containing the comment ID relative to the [% terms.bug %] it belongs to.
This is the same comment ID as the one you can see in [% terms.bug %]
reports.
- It is now possible to create new [% terms.bugs %] with a closed status with
B[%%]ug.create.
- The bug_status field returned by B[%%]ug.fields now
also includes [% terms.bug %] statuses available on [% terms.bug %] creation.
- B[%%]ug.fields now also returns keyword descriptions, not only
their names.
- B[%%]ug.fields now also returns the is_active field
for product-specific fields.
- For users in the timetracking group, B[%%]ug.get now also
returns the actual_time field with the total number of hours
spent in the [% terms.bug %].
- Field names returned in the field_name field of the
B[%%]ug.history method have changed to be consistent with other
methods.
- The B[%%]ug.search method was returning all visible [% terms.bugs %]
when called with no arguments, ignoring the max_search_results
and search_allow_no_criteria parameters. This has been fixed.
- Product.get now also returns the flag_types field
containing all the relevant data for attachment and [% terms.bug %] flag types.
- Product.get now throws an error if neither ids nor
names is passed to the method.
- When requesting data for your own account using User.get,
this method now returns two additional fields: saved_searches
and saved_reports containing all your saved searches and
graphical and tabular reports.
- User.get now also returns the groups field
containing the list of groups the user belongs to. The list is filtered
based on your privileges.
Outstanding Issues
-
[%- terms.Bug %] 89822: When changing multiple [% terms.bugs %] at
the same time, there is no "mid-air collision" protection.
-
[%- terms.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.
-
[%- terms.Bug %] 584742: When viewing [% terms.abug %], WebKit-based
browsers can automatically reset a field's selected value when the field
has disabled values.
Notes On Upgrading From a Previous Version
IMPORTANT: Apache Configuration Change
For improved security, Bugzilla now prevents directory browsing
by default. In order to do that, the root bugzilla/.htaccess file
now contains the Options -Indexes directive. By default, this
directive is not allowed in .htaccess and so you must configure
Apache to allow it. To do that, add Options to the
AllowOverride directive in httpd.conf. This means you
should now have something like this:
AllowOverride Limit FileInfo Indexes Options
Check the
documentation
for more information about how to configure Apache.
Code Changes Which May Affect Customizations and Extensions
- The usebugaliases parameter has been removed. Aliases are now
always available.
- There is a new code hook admin_editusers_action to alter the
way editusers.cgi works.
- There is a new code hook buglist_column_joins to alter the way
tables and columns are joined in queries. In combination with the
buglist_columns hook, this permits to customize the list of
columns to display in buglists.
- There is a new code hook bug_start_of_update which is called
after object_end_of_update but before bug_end_of_update
for a better control on how to update [% terms.bugs %].
- There is a new code hook bug_url_sub_classes to support
additional URLs in the See Also field.
- There is a new code hook error_catch to catch errors thrown
by Bugzilla and to take the appropriate actions.
- There is a new code hook path_info_whitelist to whitelist
scripts which should still get the Path-Info information from URLs. By
default, Path-Info is now removed before being passed to CGI scripts.
- It is now illegal to have a product with no components and no versions.
Trying to delete the last component or version of a product is now
rejected.
- Trying to set the component, target milestone or version of [% terms.abug %]
to a disabled value is no longer accepted. The change will be rejected.
- The comment box now checks the returned value of check_can_change_field()
to determine if it should be displayed or not. This means its visibility
can now be controlled by the bug_check_can_change_field hook.
- Flags now checks the returned value of check_can_change_field() to
determine if they should appear as editable or not. This means their
visibility can now be controlled by the bug_check_can_change_field
hook.
- Quips can no longer exceed 512 characters. Existing quips longer than
that are automatically truncated when upgrading.
- The static bugzilla.dtd file has been replaced by a dynamic
one to take custom fields into account. The old
<urlbase>/bugzilla.dtd URL is now
<urlbase>/page.cgi?id=bugzilla.dtd.
- There is a new extension located at extensions/MoreBugUrl/
which permits to add new classes of URLs in the See Also field. It uses
the bug_url_sub_classes hook mentioned above.
- There is a new B[%%]ugzilla->process_cache method to store
data which should remain available for the lifetime of the worker process,
on mod_perl. On mod_cgi, it behaves the same way as
B[%%]ugzilla->request_cache.
- In the RDF output of config.cgi, URIs used to identify
versions and target milestones have been changed to be unique across
products.
- The RDF output of config.cgi now also returns data about
classifications.
- It is now legal to call B[%%]ugzilla::Version->check({ id => $id })
and B[%%]ugzilla::Milestone->check({ id => $id }) to validate
and get an object using its ID.
- Rows in the dependencies, flaginclusions and
flagexclusions DB tables are now enforced to be unique.
- The b[%%]ugs_activity and profiles_activity DB
tables now have an auto-incremented primary key named id.
- A custom B[%%]ugzilla.pm module has been added into
contrib/ to help packagers to package B[%%]ugzilla in their
Linux distros.
[% INCLUDE global/footer.html.tmpl %]
[% BLOCK db_req %]
[% SET m = DB_MODULE.$db %]
For [% m.name FILTER html %] Users
- [% m.name FILTER html %]
[%+ '' IF db_new %]v[% m.db_version FILTER html %]
[% '' IF db_new %]
- perl module:
[%+ m.dbd.module FILTER html %]
[% '' IF dbd_new %]v[% m.dbd.version FILTER html %]
[% '' IF dbd_new %]
[% END %]
[% BLOCK req_table %]
Module | Version |
[% IF include_feature %]
Enables Feature |
[% END %]
[% FOREACH req = reqs %]
[%- req.module FILTER html %] |
[%- IF req.version == 0 %]
(Any)
[% ELSE %]
[%- req.version FILTER html %]
[% END %]
|
[% IF include_feature %]
[% req.feature.join(', ') FILTER html %] |
[% END %]
[% END %]
[% END %]