]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 604256: Release Notes for Bugzilla 4.0rc1.
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Sat, 23 Oct 2010 00:21:00 +0000 (17:21 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Sat, 23 Oct 2010 00:21:00 +0000 (17:21 -0700)
r=LpSolit, a=mkanat

template/en/default/pages/release-notes.html.tmpl

index 8877c26726873bdf6aff9aa0f0d8f48d82b782a6..eea13e85d9b949904442147512e439c9f9073d5d 100644 (file)
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
+[% SET title = "$terms.Bugzilla 4.0 Release Notes" %]
 [% INCLUDE global/header.html.tmpl 
-  title = "$terms.Bugzilla 3.6 Release Notes" 
+  title = title
   style_urls = ['skins/standard/page.css'] 
 %]
 
-<h2>Table of Contents</h2>
+<h1>[% title FILTER html %]</h1>
+
+<ul class="bz_toc">
+  <li><a href="#v40_introduction">Introduction</a></li>
+  <li><a href="#v40_req">Minimum Requirements</a></li>
+  <li><a href="#v40_feat">New Features and Improvements</a></li>
+  <li><a href="#v40_issues">Outstanding Issues</a></li>
+  <li><a href="#v40_upgrading">Notes On Upgrading From a Previous Version</a></li>
+  <li><a href="#v40_code_changes">Code Changes Which May Affect 
+    Customizations and Extensions</a></li>
+  <li><a href="#v40_previous">Release Notes for Previous Versions</a></li>
+</ul>
+
+<h2 id="v40_introduction">Introduction</h2>
+
+<p>This is [% terms.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 [% terms.Bugzilla %] 3.0, almost every major user
+  interface in [% terms.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.</p>
+
+<p>It's not just major WebService and UI enhancements that are new in
+  [%+ terms.Bugzilla %] 4.0&mdash;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 [% terms.Bugzilla %]
+  we've ever released.</p>
+
+<p>If you're upgrading, make sure to read <a href="#v40_upgrading">Notes
+  On Upgrading From a Previous Version</a>. If you are upgrading from a release
+  before 3.6, make sure to read the release notes for all the 
+  <a href="#v40_previous">previous versions</a> in between your version
+  and this one, <strong>particularly the Upgrading section of each
+  version's release notes</strong>.</p>
+
+<p>We would like to thank
+  <a href="http://www.itasoftware.com/">ITA Software</a>,
+  the <a href="http://www.ibm.com/linux/ltc/">IBM Linux Technology Center</a>,
+  and <a href="http://www.redhat.com/">Red Hat</a> for funding the development
+  of certain features and improvements in this release of
+  [%+ terms.Bugzilla %].</p>
+
+<h2 id="v40_req">Minimum Requirements</h2>
+
+<p>Any requirements that are new since 3.6.3 will look like
+  <span class="req_new">this</span>.</p>
+
+<ul>
+  <li><a href="#v40_req_perl">Perl</a></li>
+  <li><a href="#v40_req_mysql">For MySQL Users</a></li>
+  <li><a href="#v40_req_pg">For PostgreSQL Users</a></li>
+  <li><a href="#v40_req_oracle">For Oracle Users</a></li>
+  <li><a href="#v40_req_modules">Required Perl Modules</a></li>
+  <li><a href="#v40_req_optional_mod">Optional Perl Modules</a></li>
+  <li><a href="#v40_req_apache">Optional Apache Modules</a></li>
+</ul>
+
+
+<h3 id="v40_req_perl">Perl</h3>
+
+<p>Perl v5.8.1</p>
+
+[% INCLUDE db_req db='mysql' %]
+
+[% INCLUDE db_req db='pg' %]
+
+[% INCLUDE db_req db='oracle' %]
+
+<h3 id="v40_req_modules">Required Perl Modules</h3>
+
+[% INCLUDE req_table reqs = REQUIRED_MODULES
+                     new = ['List-MoreUtils']
+                     updated = ['Email-MIME', 'CGI.pm'] %]
+
+<h3 id="v40_req_optional_mod">Optional Perl Modules</h3>
+
+<p>The following perl modules, if installed, enable various
+  features of [% terms.Bugzilla %]:</p>
+
+[% INCLUDE req_table reqs = OPTIONAL_MODULES
+                     new  = ['JSON-XS']
+                     updated = []
+                     include_feature = 1 %]
+
+<h3 id="v40_req_apache">Optional Apache Modules</h3>
+
+<p>If you are using Apache as your webserver, [% terms.Bugzilla %] can
+  now take advantage of some Apache features if you have the below Apache
+  modules installed and enabled. Currently,
+  <a href="#v40_feat_js_css_update">certain [% terms.Bugzilla %] features</a>
+  are enabled only if you have all of the following modules installed
+  and enabled:</p>
+
+<ul>
+  <li>mod_headers</li>
+  <li>mod_expires</li>
+  <li>mod_env</li>
+</ul>
+
+<p>On most systems (but not on Windows), <kbd>checksetup.pl</kbd> is able to
+  tell whether or not you have these modules installed, and it will tell
+  you.</p>
+
+<h2 id="v40_feat">New Features and Improvements</h2>
+
+<ul>
+  <li><a href="#v40_feat_dup">Automatic Duplicate Detection When Filing
+    [%+ terms.Bugs %]</a></li>
+  <li><a href="#v40_feat_search_ui">New Advanced Search UI</a></li>
+  <li><a href="#v40_feat_attach_ui">New Attachment Details UI</a></li>
+  <li><a href="#v40_feat_autocomplete">Autocomplete for Users and
+    Keywords</a></li>
+  <li><a href="#v40_feat_ui">General Usability Improvements</a></li>
+  <li><a href="#v40_feat_workflow">New Default Status Workflow</a></li>
+  <li><a href="#v40_feat_lists">"Last Search" Now Remembers Multiple
+    Searches</a></li>
+  <li><a href="#v40_feat_jsonp">Cross-Domain WebServices with JSONP</a></li>
+  <li><a href="#v40_feat_ws">Major WebService Enhancements</a></li>
+  <li><a href="#v40_feat_mandatory">Mandatory Custom Fields</a></li>
+  <li><a href="#v40_feat_vot_ext">Voting Is Now An Extension</a></li>
+  <li><a href="#v40_feat_js_css_update">Users Get New CSS and Javascript
+    Automatically</a></li>
+  <li><a href="#v40_feat_hooks">Many New Hooks</a></li>
+  <li><a href="#v40_feat_apache_config">New Apache Configuration</a></li>
+  <li><a href="#v40_feat_other">Other Enhancements and Changes</a></li>
+</ul>
+
+<h3 id="v40_feat_dup">Automatic Duplicate Detection When Filing
+  [%+ terms.Bugs %]</h3>
+
+<p>When filing [% terms.abug %], as soon as you start typing in the summary
+  field, [% terms.Bugzilla %] will suggest possible duplicates of the
+  [%+ terms.bug %] you are filing.</p>
+
+<p>In order for this feature to work, all pre-requisites for JSON-RPC
+  support must be installed on your [% terms.Bugzilla %]. It will be
+  much faster on installations that run under mod_perl than it will
+  be on other installations.</p>
+
+<p>This automatic duplicate detection does not currently work for installations
+  running on PostgreSQL.</p>
+
+<h3 id="v40_feat_search_ui">New Advanced Search UI</h3>
+
+<p>Thanks to the UI work of <a href="http://guy-pyrzak.blogspot.com/">Guy
+  Pyrzak</a>, 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.</p>
+
+<h3 id="v40_feat_attach_ui">New Attachment Details UI</h3>
+
+<p>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.</p>
+
+<p>Thanks to <a href="http://guy-pyrzak.blogspot.com/">Guy Pyrzak</a> for
+  his excellent work on this UI redesign.</p>
+
+<h3 id="v40_feat_autocomplete">Autocomplete for Users and Keywords</h3>
+
+<p>Once you type at least three characters in any field that can contain a user
+  (including the [% field_descs.cc FILTER html %],
+  [%+ field_descs.qa_contact FILTER html %], or
+  [%+ field_descs.assigned_to FILTER html %] fields), a list will appear
+  containing all of the users whose real names or usernames match what you are
+  typing. Your [% terms.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 <strong>much</strong>
+  faster on installations that run under mod_perl than it will be on
+  other installations.</p>
+
+<p>There is also a similar autocomplete for the Keywords field. The
+  Keywords autocomplete does not require JSON-RPC.</p>
+
+<h3 id="v40_feat_ui">General Usability Improvements</h3>
+
+<p>In addition to the enhancements listed above, there have been
+  <strong>many</strong> improvements made across the [% terms.Bugzilla %]
+  user interface. For a list of specific enhancements that were significant,
+  see the <a href="#v40_feat_other">Other Enhancements and Changes</a>
+  section.</p>
+
+<h3 id="v40_feat_workflow">New Default Status Workflow</h3>
+
+<p>For new installations of [% terms.Bugzilla %], the default set of
+  statuses will now be:</p>
+
+<ul>
+  <li>UNCONFIRMED</li>
+  <li>CONFIRMED</li>
+  <li>IN_PROGRESS</li>
+  <li>RESOLVED</li>
+  <li>VERIFIED</li>
+</ul>
+
+<p>And the UNCONFIRMED status will be enabled by default in all products.</p>
+
+<p>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, <kbd>contrib/convert-workflow.pl</kbd>, which you
+  can run after you use <kbd>checksetup.pl</kbd> to upgrade. The
+  <kbd>whineatnews.pl</kbd> and <kbd>bugzilla-submit</kbd> scripts
+  will probably not work properly if you continue to use the old workflow
+  (though most other parts of [% terms.Bugzilla %] will still function
+  normally).</p>
+
+<p>For more information about the workflow and our rationale for changing
+  it, see the
+  <a href="http://bugzillaupdate.wordpress.com/2010/07/06/bugzilla-4-0-has-a-new-default-status-workflow/">blog
+  post about it</a> and the
+  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=486292">[% terms.bug %]
+  where the change was made</a>.</p>
+
+<h3 id="v40_feat_lists">"Last Search" Now Remembers Multiple Searches</h3>
+
+<p>At the top of every [% terms.bug %] in [% terms.Bugzilla %], there are
+  links that look like: "First", "Last", "Prev", "Next", and
+  "Show last search results". In earlier versions of [% terms.Bugzilla %],
+  if you did two separate searches in separate windows, these links would
+  only work for the <em>last</em> search you did. Now, [% terms.Bugzilla %]
+  will "remember" which search result you came from and give you the right
+  "last search results" or "next bug" from <em>that</em> list, instead of
+  always using your most recent search.</p>
+
+<p>There are still some situations where [% terms.Bugzilla %] will have to
+  "guess" which search you are trying to navigate through, but it does its
+  best to get it right.</p>
+
+<h3 id="v40_feat_jsonp">Cross-Domain WebServices with JSONP</h3>
+
+<p>[% terms.Bugzilla %] now supports making WebService calls from
+  another domain, inside of a web browser, thanks to support for
+  <a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">JSONP</a>.
+  This will allow for web "mash-ups" to use [% terms.Bugzilla %] data.
+  When using JSONP, you may only call functions that <em>get</em> data, 
+  you may not call functions that <em>change</em> data.</p>
+
+<p>For more details, see the
+  <a href="[% docs_urlbase FILTER html %]api/Bugzilla/WebService/Server/JSONRPC.html#JSONP">JSONP
+  section</a> of the JSON-RPC WebService documentation.</p>
+
+<h3 id="v40_feat_ws">Major WebService Enhancements</h3>
+
+<p>The WebService has been expanded considerably. The WebService should now be
+  able to do everything with [% terms.bugs %] that you can do via the
+  web interface, including updating [% terms.bugs %], adding attachments,
+  and getting attachment data. For specifics, see the
+  <a href="#v40_feat_ws_changes">WebService Changes</a> section of these
+  release notes.</p>
+
+<h3 id="v40_feat_mandatory">Mandatory Custom Fields</h3>
+
+<p>You can now specify that certain custom fields are "mandatory",
+  meaning that they must have a value when [% terms.abug %] is filed,
+  and they can never be empty after that.</p>
+
+<h3 id="v40_feat_vot_ext">Voting Is Now An Extension</h3>
+
+<p>All of the code for voting in [% terms.Bugzilla %] has been moved
+  into an extension, called "Voting", in the <kbd>extensions/Voting/</kbd>
+  directory. To enable it, you must remove the <kbd>disabled</kbd> file
+  from that directory, and run checksetup.pl.</p>
+
+<p>In a future version of [% terms.Bugzilla %], the Voting extension will
+  be moved outside of the [% terms.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 [% terms.Bugzilla %]'s core code.</p>
+
+<h3 id="v40_feat_js_css_update">Users Get New CSS and Javascript
+  Automatically</h3>
+  
+<p>In past versions of [% terms.Bugzilla %], if you changed
+  [%+ terms.Bugzilla %]'s CSS or Javascript files, then every user of
+  [%+ terms.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 <a href="#v40_req_apache">optional Apache modules</a>
+  installed, users will automatically get every new version of
+  [%+ terms.Bugzilla %]'s Javascript and CSS without having to clear
+  their caches.</p>
+
+<p>This feature also gives a slight performance speedup to
+  [%+ terms.Bugzilla %] in some cases, and so we recommend that all
+  administrators install the optional Apache modules if possible.</p>
+
+<h3 id="v40_feat_hooks">Many New Hooks</h3>
+
+<p>Many new code hooks have been added for use by Extensions,
+  in [% terms.Bugzilla %] 4.0. Now Extensions can access and modify
+  nearly every part of [% terms.Bugzilla %].</p>
+
+<h3 id="v40_feat_apache_config">New Apache Configuration</h3>
+
+<p>(Note: If your [% terms.Bugzilla %] runs under mod_perl or runs on some
+  other webserver than Apache, this section does not apply to you.)</p>
+
+<p>The Apache configuration used for [% terms.Bugzilla %] has changed.
+  In particular, a different AllowOverride statement is required.
+  See the
+  <a href="[% docs_urlbase FILTER html %]configuration.html#http-apache">Configuration</a>
+  section of the [% terms.Bugzilla %] Guide for details.</p>
+
+<h3 id="v40_feat_other">Other Enhancements and Changes</h3>
+
+<h4>Enhancements for Users</h4>
+
+<ul>
+  <li>Now, everywhere in [% terms.Bugzilla %] where you can enter a date,
+    there is a Calendar widget where you can select the date on a
+    calendar.</li>
+  <li>The big icons on the front page have been replaced with much nicer
+    icons, thanks to Jon Pink of <a href="http://www.jpink.co.uk/">J.&nbsp;Pink&nbsp;Design</a>!</li>
+  <li><strong>[% terms.Bugs %]:</strong> When filing [% terms.bugs %],
+    you will now be warned if you forgot to fill in any mandatory fields,
+    <em>before</em> the page is submitted.</li>
+  <li><strong>[% terms.Bugs %]:</strong> When filing [% terms.abug %],
+    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.</li>
+  <li><strong>[% terms.Bugs %]:</strong> [% terms.Bug %] comments are no
+    longer word-wrapped at 80 characters. They are simply wrapped by your
+    web browser to be as wide as the comment view in the UI. They will still
+    be wrapped to 80 characters in emails, though.</li>
+  <li><strong>[% terms.Bugs %]:</strong> When adding Hours Worked to [% terms.abug %],
+    you are no longer required to comment.</li>
+  <li><strong>[% terms.Bugs %]:</strong> There is now a user preference
+    for whether the comment box appears above or below the existing
+    comments.</li>
+  <li><strong>[% terms.Bugs %]:</strong> [% terms.Bugzilla %] will now
+    send an email for every comment that you mark or un-mark as being
+    private. (Previous versions of [% terms.Bugzilla %] did not send emails
+    to users about this change.) The state of comments being made private
+    is also now stored in [% terms.abug %]'s history.</li>
+  <li><strong>[% terms.Bugs %]:</strong> The box to "Add [% terms.Bug %] URLs"
+    in the See Also field is now hidden behind an "(add)" link that you
+    have to click to see the box.</li>
+  
+  <li><strong>Searches:</strong> You can now properly search for field values
+    that have commas in their name, when using the Advanced Search form.</li>
+  <li><strong>Searches:</strong> The "URL" field can now be shown as a column
+    in search results.</li>
+  <li><strong>Searches:</strong> When viewing a search result, you can now
+    click on the Summary of the [% terms.bug %] in order to go to the
+    [%+ terms.bug %]-view page, in addition to being able to click on the
+    [%+ terms.bug %] ID.</li>
+  <li><strong>Searches:</strong> 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.</li>
+  <li><strong>Searches:</strong> Multi-select custom fields can now be
+    shown as columns in the search results.</li>
+  <li><strong>Searches:</strong> When using the Boolean Charts (now called
+    "Custom Search"), if you specify both a criterion for an attachment
+    and a criteron for a flag, then only [% terms.bugs %] that have
+    attachments with that flag will be found.</li>
+  <li><strong>Searches:</strong> If you hover your mouse over the field labels
+    on the Advanced Search page, you will get a description of what that
+    field is.</li>
+  <li><strong>Searches:</strong> When searching via a saved search, if you
+    accidentally click on "Forget Search", there is a link to undo it.</li>
+  <li><strong>Searches:</strong> 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.</li>
+  
+  <li><strong>Flags:</strong> If you hover your mouse over the name of
+    a flag setter when viewing [% terms.abug %], you can see that
+    flag setter's full name and complete username.</li>
+  <li><strong>Flags:</strong> When setting a flag on [% terms.abug %],
+    the box for entering a requestee does not appear until you set the flag
+    to "?", now.</li>
+  <li><strong>Flags:</strong> On the "My Requests" page, [% terms.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.</li>
+  
+  <li>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.</li>
+  <li>[% terms.Bugzilla %] now prevents
+    Internet Explorer 8 and later from attempting to render
+    <kbd>text/plain</kbd> attachments as HTML.</li>
+  <li>If you receive a Whine mail that is empty, there will now be a brief
+    message explaining that your search found no results.</li>
+  <li>The <a href="page.cgi?id=fields.html">Field Help Page</a> now
+    contains a description of every single field that can be on
+    [%+ terms.abug %] in [% terms.Bugzilla %].</li>
+</ul>
+
+<h4>Enhancements for Administrators and Developers</h4>
+
+<ul>
+  <li>The system for moving [% terms.bugs %] between installations has been
+    moved into an extension called <kbd>OldBugMove</kbd>. This system was used
+    by very few [% terms.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 <kbd>extensions/OldBugMove/disabled</kbd>
+    and then run checksetup.pl. In a future version of [% terms.Bugzilla %],
+    this extension may be moved outside of the core [% terms.Bugzilla %] code,
+    so if you are interested in maintaining it, please let us know.</li>
+  <li><strong>Custom Fields: </strong> "[% terms.Bug %] ID" custom fields can
+    now represent relationships between [% terms.bugs %], similarly to how the
+    [%+ field_descs.blocked FILTER html %] and
+    [%+ field_descs.dependson FILTER html %] fields work now.</li>
+  <li><strong>Custom Fields:</strong> You can now restrict the visibility
+    of custom fields and their values to a specific Component or
+    Classification.</li>
+  <li>The "keyword cache" has been removed. When you edit keywords, you no
+    longer will have to "rebuild the keyword cache" after you are done.</li>
+  <li>Running <kbd>./collectstats.pl --regenerate</kbd> will now take
+    minutes or hours, instead of days.</li>
+  <li>When using <kbd>email_in.pl</kbd>, there are two new switches,
+    <kbd>--default</kbd> and <kbd>--override</kbd>, which allow you to
+    specify certain default values or override specified values for
+    <kbd>@field</kbd> 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 [% terms.abug %] via email.)</li>
+  <li><strong>Installation:</strong> If you are using a localized version of
+    [%+ terms.Bugzilla %] and your terminal does not understand Unicode,
+    <kbd>checksetup.pl</kbd> will now attempt to output its messages in your
+    terminal's character set.</li>
+  <li><strong>Installation:</strong> [% terms.Bugzilla %] no longer needs empty
+    "placeholder" CSS in the <kbd>skins/custom</kbd> directory and other
+    directories. When you update, <kbd>checksetup.pl</kbd> will remove these.
+    This also significantly reduces the number of HTTP requests required to
+    load a page for the first time in [% terms.Bugzilla %].</li>
+  <li><strong>Installation:</strong> For Windows users, [% terms.Bugzilla %]
+    now supports Strawberry Perl fully.</li>
+  <li><strong>Installation:</strong> Now, whenever <kbd>checksetup.pl</kbd>
+    throws an error, it will be printed in the color red, to make it
+    obvious that something is wrong.</li>
+  <li><strong>Installation:</strong> Some actions of checksetup.pl were
+    silent, in the past. Now, checksetup.pl will print a message for
+    almost anything it does.</li>
+  <li><strong>Installation:</strong> The process of adding foreign keys
+    to a table is now much faster. This will particularly improve the speed
+    of upgrading from [% terms.Bugzilla %] 3.4 or earlier.</li>
+  <li>If you are using <kbd>jobqueue.pl</kbd> and email gets heavily delayed
+    for some reason, those emails will now have a Date header reflecting the
+    time they were <em>supposed</em> to be sent, instead of when they actually
+    <em>were</em> sent.</li>
+  <li><kbd>./jobqueue.pl install</kbd> now works on SuSE Linux.</li>
+  <li>[% terms.Bugzilla %] now runs much better in Apache's suexec mode
+    than it used to. As part of this, <kbd>checksetup.pl</kbd> sets
+    much stricter permissions on all the files in [% terms.Bugzilla %]
+    than it used to. In particular, any files that [% terms.Bugzilla %]
+    does not know about will not be readable by the webserver.</li>
+  <li>The <kbd>sendmailnow</kbd> parameter has been removed, as it was
+    not necessary for any modern version of Sendmail or other Mail Transfer
+    Agent.</li>
+  <li>When editing a user via the Users administration panel, you can now
+    see if they are a Default CC on any component.</li>
+  <li>For new installations of [% terms.Bugzilla %], all users will be
+    able to see and use the Whining system by default.</li>
+  <li>When you are using SSL with [% terms.Bugzilla %], you can now
+    turn on the <kbd>strict_transport_security</kbd> parameter to
+    send the
+    <a href="https://developer.mozilla.org/en/Security/HTTP_Strict_Transport_Security">Strict-Transport-Security</a>
+    header with every HTTPS connection, for additional security.</li>
+  <li>New code hooks (see their documentation in
+    <a href="[% docs_urlbase FILTER html %]api/Bugzilla/Hook.html">Bugzilla::Hook</a>):
+    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 buglist).</li>
+  <li>When [% terms.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.</li>
+  <li>There is now a test, <kbd>xt/search.t</kbd>, that assures that all
+    of the functionality of <kbd>Bugzilla::Search</kbd> is working properly.
+    If you customize the search functionality of [% terms.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
+    <kbd>perldoc xt/search.t</kbd> at the command line.</li>
+</ul>
+
+<h4 id="v40_feat_ws_changes">WebService Changes</h4>
+
+<ul>
+  <li>You can now call some JSON-RPC methods using HTTP GET, in addition to
+    using HTTP POST. See the 
+    <a href="[% docs_urlbase FILTER html %]api/Bugzilla/WebService/Server/JSONRPC.html#Connecting_via_GET">JSON-RPC
+    documentation</a> for details.</li>
+  <li>You can now update existing [% terms.bugs %] using the
+    <a href="[% docs_urlbase FILTER html %]api/Bugzilla/WebService/Bug.html#update">B[% %]ug.update</a>
+    function.</li>
+  <li>You can now add attachments to [% terms.bugs %] using the
+    <a href="[% docs_urlbase FILTER html %]api/Bugzilla/WebService/Bug.html#add_attachment">B[% %]ug.add_attachment</a>
+    function.</li>
+  <li>The <kbd>B[% %]ug.get</kbd> function now returns all of [% terms.abug %]'s
+    information other than comments and attachments.</li>
+  <li><kbd>B[% %]ug.get</kbd> no longer returns the <kbd>internals</kbd> hash.</li>
+  <li>The <kbd>B[% %]ug.attachments</kbd> function now also returns attachment
+    data.</li>
+  <li>The following functions now support the <kbd>include_fields</kbd>
+    and <kbd>exclude_fields</kbd> arguments: <kbd>B[% %]ug.get</kbd>,
+    <kbd>B[% %]ug.search</kbd>, and <kbd>B[% %]ug.attachments</kbd>. Also,
+    server-side performance of the WebService is actually increased when
+    using these arguments, now, as [% terms.Bugzilla %] will no longer
+    get data from the database for fields you haven't asked for.</li>
+  <li>You can now mark the initial description of [% terms.abug %] as
+    private when filing [% terms.abug %] via the <kbd>B[% %]ug.create</kbd>
+    function.</li>
+  <li>You can now specify groups to put [% terms.abug %] in, in the
+    <a href="[% docs_urlbase FILTER html %]api/Bugzilla/WebService/Bug.html#create">B[% %]ug.create</a>
+    function. (This also means that you can specify groups when filing
+    [%+ terms.abug %] via email_in.pl.)</li>
+  <li>The <kbd>User.get</kbd> function now accepts <kbd>groups</kbd>
+    and <kbd>group_ids</kbd> arguments, to limit the returned values to
+    only users in the specified groups.</li>
+  <li>There is a new, undocumented B[% %]ug.possible_duplicates
+    function that helps implement the automatic duplicate detection
+    system. Because this function is not documented, its API may change
+    between releases of [% terms.Bugzilla %].</li>
+  <li>You can no longer search using the <kbd>votes</kbd> argument in
+    <kbd>B[% %]ug.search</kbd>.</li>
+  <li><kbd>B[% %]ug.attachments</kbd> now returns the attachment's description
+    using the name "summary" instead of the name "description", to be
+    consistent with the fact that [% terms.bug %] summaries are called
+    "summary". The value is still <em>also</em> returned as "description",
+    for backwards compatibility, but this backwards compatibility will go
+    away in [% terms.Bugzilla %] 5.0.</li>
+  <li>In the return values of various <kbd>B[% %]ug</kbd> functions, the author
+    of comments, [% terms.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 [% terms.Bugzilla %] 5.0.</li>
+</ul>
+
+<h2 id="v40_issues">Outstanding Issues</h2>
+
+<ul>
+  <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=423439">
+    [%- terms.Bug %] 423439</a>: Tabs in comments will be converted
+    to four spaces, due to a b<!-- -->ug in Perl as of Perl 5.8.8.</li>
+  <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=89822">
+    [%- terms.Bug %] 89822</a>: When changing multiple [% terms.bugs %] at 
+    the same time, there is no "mid-air collision" protection.</li>
+  <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=276230">
+    [%- terms.Bug %] 276230</a>: 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.<br>
+    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.</li>
+</ul>
+
+<h2 id="v40_upgrading">Notes On Upgrading From a Previous Version</h2>
+
+<h3>New .htaccess file</h3>
+
+<p>In previous versions of [% terms.Bugzilla %], there was a file
+  in [% terms.Bugzilla %]'s root directory called ".htaccess" that was
+  generated by <kbd>checksetup.pl</kbd>. This file is now shipped with
+  [%+ terms.Bugzilla %] instead of being generated during installation.</p>
+
+<p>If you update via CVS or bzr, you will get a message that your existing
+  .htaccess file conflicts with the new one. You must
+  <strong>remove your existing .htaccess file</strong> and use the new one
+  instead. Continuing to use your old .htaccess file will cause certain new
+  features of [% terms.Bugzilla %] to not work properly, and may also lead
+  to security issues for your system in the future.</p>
+
+<h2 id="v40_code_changes">Code Changes Which May Affect Customizations and
+  Extensions</h2>
+
+<ul>
+  <li>In Extensions, if you want to serve files to the user via the web,
+    they must now be in a <kbd>web/</kbd> subdirectory of your Extension.
+    (For example, <kbd>extensions/Foo/web/</kbd>). <kbd>checksetup.pl</kbd>
+    sets permissions on extensions much more strictly now, and files in
+    other locations (such as your base <kbd>extensions/Foo/</kbd> directory)
+    will no longer be available to [% terms.Bugzilla %] users via the web
+    under certain configurations.</li>
+  <li>Previous versions of [% terms.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, <kbd>checksetup.pl</kbd>
+    will convert any such skins into a directory with a single
+    <kbd>global.css</kbd> file in them.</li>
+  <li>When updating [% terms.bugs %], you should now use
+    <code>$bug-&gt;set_all</code> instead of using the individual
+    <kbd>set_</kbd> methods. In particular, <kbd>set_all</kbd> is now the
+    <em>only</em> way to set the product of [% terms.abug %]. See
+    <kbd>process_bug.cgi</kbd> for an example of how <kbd>set_all</kbd>
+    should be used.</li>
+  <li>You should not insert &lt;script&gt; tags and &lt;link&gt; CSS tags
+    into HTML anymore, in Extensions or in your customizations. Instead,
+    you should push new values into the <kbd>style_urls</kbd> or
+    <kbd>javascript_urls</kbd> 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.)</li>
+  <li>When calling <kbd>Bugzilla::BugMail::Send</kbd>, the "changer"
+    argument must now be a <kbd>Bugzilla::User</kbd> object, not just
+    a login name. The "owner" and "qacontact" arguments are still
+    just login names.</li>
+  <li>When creating a new subclass of Bugzilla::Object, you should no
+    longer use <kbd>UPDATE_VALIDATORS</kbd>. Also, in most cases you will
+    no longer need to override <kbd>run_create_validators</kbd>. Instead,
+    there is a new constant called
+    <a href="[% docs_urlbase FILTER html %]api/Bugzilla/Object.html#VALIDATOR_DEPENDENCIES">VALIDATOR_DEPENDENCIES</a>,
+    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 <kbd>VALIDATOR_DEPENDENCIES</kbd>, see
+    <kbd>Bugzilla/Field.pm</kbd>.</li>
+  <li>In previous versions of [% terms.Bugzilla %], you had to call
+    <code>Bugzilla-&gt;template_inner("")</code> after any time
+    that you called <kbd>template_inner</kbd> for a specific language.
+    It is no longer necessary to do this second <kbd>template_inner</kbd>
+    call.</li>
+  <li><kbd>post_bug.cgi</kbd> and <kbd>Bugzilla::Bug-&gt;create</kbd> now take
+    the <em>names</em> of groups instead of group ids.</li>
+  <li>Bugzilla::Bugmail now uses Bugzilla::Bug objects internally instead of
+    a lot of direct SQL.</li>
+  <li>For sending changes about [% terms.bugs %], there is now a method
+    called <kbd>send_changes</kbd> that you can call on Bugzilla::Bug
+    objects. For an example of its use, see <kbd>process_bug.cgi</kbd>.</li>
+  <li>The <kbd>Bugzilla::Search</kbd> class has been refactored, and should
+    now be easier to customize.</li>
+  <li>The <kbd>Bugzilla::Util::lsearch</kbd> function is gone. Use
+    <kbd>firstidx</kbd> from <kbd>List::MoreUtils</kbd>, instead.</li>
+  <li>[% terms.Bugzilla %] now includes YUI 2.8.2.</li>
+</ul>
+
+
+<h1 id="v40_previous">[% terms.Bugzilla %] 3.6 Release Notes</h1>
 
 <ul class="bz_toc">
   <li><a href="#v36_introduction">Introduction</a></li>
   <li><a href="#v36_req_optional_mod">Optional Perl Modules</a></li>
 </ul>
 
-
-<h3 id="v36_req_perl">Perl</h3>
-
+<h3 id="v36_req_perl">Perl</h3> 
 <p>Perl v5.8.1</p>
 
-[% INCLUDE db_req db='mysql' %]
-
-[% INCLUDE db_req db='pg' %]
-
-[% INCLUDE db_req db='oracle' %]
-
+<h3 id="v36_req_mysql">For MySQL Users</h3> 
+  <ul> 
+    <li>MySQL
+       v4.1.2
+       </li> 
+    <li><strong>perl module:</strong> 
+      DBD::mysql v4.00</li> 
+  </ul>
+  
+<h3 id="v36_req_pg">For PostgreSQL Users</h3> 
+  <ul> 
+    <li>PostgreSQL
+       v8.00.0000
+       </li> 
+    <li><strong>perl module:</strong> 
+      DBD::Pg v1.45</li> 
+  </ul> 
+<h3 id="v36_req_oracle">For Oracle Users</h3> 
+  <ul> 
+    <li>Oracle
+       v10.02.0
+       </li> 
+    <li><strong>perl module:</strong> 
+      DBD::Oracle v1.19</li> 
+  </ul> 
 <h3 id="v36_req_modules">Required Perl Modules</h3>
 
-[% INCLUDE req_table reqs = REQUIRED_MODULES
-                     new = [] updated = [] %]
-
-<h3 id="v36_req_optional_mod">Optional Perl Modules</h3>
-
+<table class="req_table" border="0" cellspacing="0" cellpadding="0"> 
+    <tr> 
+      <th>Module</th> <th>Version</th> 
+    </tr> 
+      <tr> 
+        <td >CGI</td> 
+        <td >3.21
+        </td> 
+      </tr> 
+      <tr> 
+        <td >Digest::SHA</td> 
+        <td > 
+            (Any)
+        </td> 
+      </tr> 
+      <tr> 
+        <td >Date::Format</td> 
+        <td >2.21
+        </td> 
+      </tr> 
+      <tr> 
+        <td >DateTime</td> 
+        <td >0.28
+        </td> 
+      </tr> 
+      <tr> 
+        <td >DateTime::TimeZone</td> 
+        <td >0.71
+        </td> 
+      </tr> 
+      <tr> 
+        <td >DBI</td> 
+        <td >1.41
+        </td> 
+      </tr> 
+      <tr> 
+        <td >Template</td> 
+        <td >2.22
+        </td> 
+      </tr> 
+      <tr> 
+        <td >Email::Send</td> 
+        <td >2.00
+        </td> 
+      </tr> 
+      <tr> 
+        <td >Email::MIME</td> 
+        <td >1.861
+        </td> 
+      </tr> 
+      <tr> 
+        <td >Email::MIME::Encodings</td> 
+        <td >1.313
+        </td> 
+      </tr> 
+      <tr> 
+        <td >Email::MIME::Modifier</td> 
+        <td >1.442
+        </td> 
+      </tr> 
+      <tr> 
+        <td >URI</td> 
+        <td > 
+            (Any)
+        </td> 
+      </tr> 
+</table> 
+<h3 id="v36_req_optional_mod">Optional Perl Modules</h3> 
 <p>The following perl modules, if installed, enable various
   features of [% terms.Bugzilla %]:</p>
 
-[% INCLUDE req_table reqs = OPTIONAL_MODULES
-                     new  = ['JSON-RPC', 'Test-Taint']
-                     updated = ['Chart']
-                     include_feature = 1 %]
+<table class="req_table" border="0" cellspacing="0" cellpadding="0"> 
+    <tr> 
+      <th>Module</th> <th>Version</th> 
+        <th>Enables Feature</th> 
+    </tr> 
+      <tr> 
+        <td >GD</td> 
+        <td >1.20
+        </td> 
+          <td>Graphical Reports, New Charts, Old Charts</td> 
+      </tr> 
+      <tr> 
+        <td >Chart::Lines</td> 
+        <td  class="req_new">2.1
+        </td> 
+          <td>New Charts, Old Charts</td> 
+      </tr> 
+      <tr> 
+        <td >Template::Plugin::GD::Image</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Graphical Reports</td> 
+      </tr> 
+      <tr> 
+        <td >GD::Text</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Graphical Reports</td> 
+      </tr> 
+      <tr> 
+        <td >GD::Graph</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Graphical Reports</td> 
+      </tr> 
+      <tr> 
+        <td >XML::Twig</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Move [% terms.Bugs %] Between Installations,
+          Automatic Update Notifications</td> 
+      </tr> 
+      <tr> 
+        <td >MIME::Parser</td> 
+        <td >5.406
+        </td> 
+          <td>Move [% terms.Bugs %] Between Installations</td> 
+      </tr> 
+      <tr> 
+        <td >LWP::UserAgent</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Automatic Update Notifications</td> 
+      </tr> 
+      <tr> 
+        <td >PatchReader</td> 
+        <td >0.9.4
+        </td> 
+          <td>Patch Viewer</td> 
+      </tr> 
+      <tr> 
+        <td >Net::LDAP</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>LDAP Authentication</td> 
+      </tr> 
+      <tr> 
+        <td >Authen::SASL</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>SMTP Authentication</td> 
+      </tr> 
+      <tr> 
+        <td >Authen::Radius</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>RADIUS Authentication</td> 
+      </tr> 
+      <tr> 
+        <td >SOAP::Lite</td> 
+        <td >0.710.06
+        </td> 
+          <td>XML-RPC Interface</td> 
+      </tr> 
+      <tr> 
+        <td  class="req_new">JSON::RPC</td> 
+        <td  class="req_new"> 
+            (Any)
+        </td> 
+          <td>JSON-RPC Interface</td> 
+      </tr> 
+      <tr> 
+        <td  class="req_new">Test::Taint</td> 
+        <td  class="req_new"> 
+            (Any)
+        </td> 
+          <td>JSON-RPC Interface, XML-RPC Interface</td> 
+      </tr> 
+      <tr> 
+        <td >HTML::Parser</td> 
+        <td >3.40
+        </td> 
+          <td>More HTML in Product/Group Descriptions</td> 
+      </tr> 
+      <tr> 
+        <td >HTML::Scrubber</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>More HTML in Product/Group Descriptions</td> 
+      </tr> 
+      <tr> 
+        <td >Email::MIME::Attachment::Stripper</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Inbound Email</td> 
+      </tr> 
+      <tr> 
+        <td >Email::Reply</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Inbound Email</td> 
+      </tr> 
+      <tr> 
+        <td >TheSchwartz</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Mail Queueing</td> 
+      </tr> 
+      <tr> 
+        <td >Daemon::Generic</td> 
+        <td > 
+            (Any)
+        </td> 
+          <td>Mail Queueing</td> 
+      </tr> 
+      <tr> 
+        <td >mod_perl2</td> 
+        <td >1.999022
+        </td> 
+          <td>mod_perl</td> 
+      </tr> 
+</table> 
 
 <h2 id="v36_feat">New Features and Improvements</h2>
 
@@ -3196,7 +4069,7 @@ sub y { $var++ }</pre>
 
 [% BLOCK db_req %]
   [% SET m = DB_MODULE.$db %]
-  <h3 id="v36_req_[% db FILTER html %]">For [% m.name FILTER html %] Users</h3>
+  <h3 id="v40_req_[% db FILTER html %]">For [% m.name FILTER html %] Users</h3>
 
   <ul>
     <li>[% m.name FILTER html %]