[Bps-public-commit] RT-BugTracker branch, 4.2-4.4-compatibility, created. 5.2-10-g4728c1c

Brian Duggan brian at bestpractical.com
Wed Mar 8 13:34:06 EST 2017


The branch, 4.2-4.4-compatibility has been created
        at  4728c1c90aa643db61ef4f1da6eb67280bc7ffc8 (commit)

- Log -----------------------------------------------------------------
commit 714e8c4d2fa999cd37a3e1b05cade4e0bca7ab46
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Wed Feb 22 19:52:37 2017 -0500

    Update BPS copyright

diff --git a/html/Callbacks/BugTracker/Elements/Tabs/Privileged b/html/Callbacks/BugTracker/Elements/Tabs/Privileged
index 95c27be..8f309a0 100644
--- a/html/Callbacks/BugTracker/Elements/Tabs/Privileged
+++ b/html/Callbacks/BugTracker/Elements/Tabs/Privileged
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Elements/Tabs/SelfService b/html/Callbacks/BugTracker/Elements/Tabs/SelfService
index c3bc90c..f4d5f95 100644
--- a/html/Callbacks/BugTracker/Elements/Tabs/SelfService
+++ b/html/Callbacks/BugTracker/Elements/Tabs/SelfService
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery b/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery
index ca5e07a..4aa5ef1 100644
--- a/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery
+++ b/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Search/Simple.html/PreForm b/html/Callbacks/BugTracker/Search/Simple.html/PreForm
index d9e4afd..5c0b9ea 100644
--- a/html/Callbacks/BugTracker/Search/Simple.html/PreForm
+++ b/html/Callbacks/BugTracker/Search/Simple.html/PreForm
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Ticket/Create.html/Default b/html/Callbacks/BugTracker/Ticket/Create.html/Default
index d3451e2..b4d9ab8 100644
--- a/html/Callbacks/BugTracker/Ticket/Create.html/Default
+++ b/html/Callbacks/BugTracker/Ticket/Create.html/Default
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Ticket/Create.html/FormStart b/html/Callbacks/BugTracker/Ticket/Create.html/FormStart
index 706fa30..4dd2dc2 100644
--- a/html/Callbacks/BugTracker/Ticket/Create.html/FormStart
+++ b/html/Callbacks/BugTracker/Ticket/Create.html/FormStart
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Ticket/Display.html/BeforeActionList b/html/Callbacks/BugTracker/Ticket/Display.html/BeforeActionList
index 99baeef..f64019d 100644
--- a/html/Callbacks/BugTracker/Ticket/Display.html/BeforeActionList
+++ b/html/Callbacks/BugTracker/Ticket/Display.html/BeforeActionList
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Ticket/Elements/EditCustomFields/MassageCustomFields b/html/Callbacks/BugTracker/Ticket/Elements/EditCustomFields/MassageCustomFields
index be6ad36..4dd66a9 100644
--- a/html/Callbacks/BugTracker/Ticket/Elements/EditCustomFields/MassageCustomFields
+++ b/html/Callbacks/BugTracker/Ticket/Elements/EditCustomFields/MassageCustomFields
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Ticket/Modify.html/BeforeActionList b/html/Callbacks/BugTracker/Ticket/Modify.html/BeforeActionList
index 99baeef..f64019d 100644
--- a/html/Callbacks/BugTracker/Ticket/Modify.html/BeforeActionList
+++ b/html/Callbacks/BugTracker/Ticket/Modify.html/BeforeActionList
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Ticket/Update.html/AfterWorked b/html/Callbacks/BugTracker/Ticket/Update.html/AfterWorked
index 0f57ba8..9346914 100644
--- a/html/Callbacks/BugTracker/Ticket/Update.html/AfterWorked
+++ b/html/Callbacks/BugTracker/Ticket/Update.html/AfterWorked
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/Ticket/Update.html/BeforeActionList b/html/Callbacks/BugTracker/Ticket/Update.html/BeforeActionList
index d38d11f..4654510 100644
--- a/html/Callbacks/BugTracker/Ticket/Update.html/BeforeActionList
+++ b/html/Callbacks/BugTracker/Ticket/Update.html/BeforeActionList
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Callbacks/BugTracker/autohandler/Default b/html/Callbacks/BugTracker/autohandler/Default
index f1fe9a3..4e7a978 100644
--- a/html/Callbacks/BugTracker/autohandler/Default
+++ b/html/Callbacks/BugTracker/autohandler/Default
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/BeginsWith.html b/html/Dist/BeginsWith.html
index 5d8f843..1993156 100755
--- a/html/Dist/BeginsWith.html
+++ b/html/Dist/BeginsWith.html
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Browse.html b/html/Dist/Browse.html
index 2e7bbb7..cb45d72 100755
--- a/html/Dist/Browse.html
+++ b/html/Dist/Browse.html
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/ByMaintainer.html b/html/Dist/ByMaintainer.html
index 91b9f56..41b1e85 100755
--- a/html/Dist/ByMaintainer.html
+++ b/html/Dist/ByMaintainer.html
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Display.html b/html/Dist/Display.html
index 8feb467..20a18ac 100755
--- a/html/Dist/Display.html
+++ b/html/Dist/Display.html
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/BeginsWith b/html/Dist/Elements/BeginsWith
index c9d63c2..7ef9d5a 100644
--- a/html/Dist/Elements/BeginsWith
+++ b/html/Dist/Elements/BeginsWith
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/DistributionList b/html/Dist/Elements/DistributionList
index 6570f15..0f73087 100644
--- a/html/Dist/Elements/DistributionList
+++ b/html/Dist/Elements/DistributionList
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/EditNotes b/html/Dist/Elements/EditNotes
index e8b9bf7..6ddfcc5 100644
--- a/html/Dist/Elements/EditNotes
+++ b/html/Dist/Elements/EditNotes
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/EditNotifyAddresses b/html/Dist/Elements/EditNotifyAddresses
index e9f77ba..ed150cd 100644
--- a/html/Dist/Elements/EditNotifyAddresses
+++ b/html/Dist/Elements/EditNotifyAddresses
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/EditSubjectTag b/html/Dist/Elements/EditSubjectTag
index 68b8a70..107eba4 100644
--- a/html/Dist/Elements/EditSubjectTag
+++ b/html/Dist/Elements/EditSubjectTag
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/ErrorDisabled b/html/Dist/Elements/ErrorDisabled
index 715a92a..ccd57af 100644
--- a/html/Dist/Elements/ErrorDisabled
+++ b/html/Dist/Elements/ErrorDisabled
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/ShowBugs b/html/Dist/Elements/ShowBugs
index cd3abe2..cfd9f5d 100644
--- a/html/Dist/Elements/ShowBugs
+++ b/html/Dist/Elements/ShowBugs
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/ShowBugtracker b/html/Dist/Elements/ShowBugtracker
index e824ec1..6d222c3 100644
--- a/html/Dist/Elements/ShowBugtracker
+++ b/html/Dist/Elements/ShowBugtracker
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/ShowMaintainers b/html/Dist/Elements/ShowMaintainers
index f697f6d..f89b650 100644
--- a/html/Dist/Elements/ShowMaintainers
+++ b/html/Dist/Elements/ShowMaintainers
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Elements/ShowNotes b/html/Dist/Elements/ShowNotes
index 464876f..6a2a3bc 100644
--- a/html/Dist/Elements/ShowNotes
+++ b/html/Dist/Elements/ShowNotes
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Manage.html b/html/Dist/Manage.html
index a17bdf0..cb02934 100644
--- a/html/Dist/Manage.html
+++ b/html/Dist/Manage.html
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Dist/Search.html b/html/Dist/Search.html
index 0424b3b..2adfe5a 100755
--- a/html/Dist/Search.html
+++ b/html/Dist/Search.html
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Elements/ErrorNoDist b/html/Elements/ErrorNoDist
index b479551..333f84b 100644
--- a/html/Elements/ErrorNoDist
+++ b/html/Elements/ErrorNoDist
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Elements/ErrorNoUser b/html/Elements/ErrorNoUser
index 89320df..66837cc 100644
--- a/html/Elements/ErrorNoUser
+++ b/html/Elements/ErrorNoUser
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/NoAuth/css/bugtracker.css b/html/NoAuth/css/bugtracker.css
index ed75bbd..e0ed8ef 100644
--- a/html/NoAuth/css/bugtracker.css
+++ b/html/NoAuth/css/bugtracker.css
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/html/Ticket/Elements/ShowQueue b/html/Ticket/Elements/ShowQueue
index 955f229..a4d91a3 100644
--- a/html/Ticket/Elements/ShowQueue
+++ b/html/Ticket/Elements/ShowQueue
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 %#                                          <sales at bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
diff --git a/lib/RT/Action/NotifyAdditionalAddresses.pm b/lib/RT/Action/NotifyAdditionalAddresses.pm
index 659a957..2e4b4c5 100644
--- a/lib/RT/Action/NotifyAdditionalAddresses.pm
+++ b/lib/RT/Action/NotifyAdditionalAddresses.pm
@@ -2,7 +2,7 @@
 #
 # COPYRIGHT:
 #
-# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 #                                          <sales at bestpractical.com>
 #
 # (Except where explicitly superseded by other copyright notices)
diff --git a/lib/RT/BugTracker.pm b/lib/RT/BugTracker.pm
index ea555c5..448c67f 100644
--- a/lib/RT/BugTracker.pm
+++ b/lib/RT/BugTracker.pm
@@ -1,8 +1,9 @@
+
 # BEGIN BPS TAGGED BLOCK {{{
 #
 # COPYRIGHT:
 #
-# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
 #                                          <sales at bestpractical.com>
 #
 # (Except where explicitly superseded by other copyright notices)
@@ -287,7 +288,7 @@ or via the web at
 
 =head1 LICENSE AND COPYRIGHT
 
-This software is Copyright (c) 2014 by Best Practical Solutions
+This software is Copyright (c) 2017 by Best Practical Solutions
 
 This is free software, licensed under:
 

commit bb7c538bab158353e2cc14406c7560c7f76ed200
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu Feb 23 12:20:02 2017 -0500

    Update Makefile and POD for 4.2 and 4.4
    
    The subsequent changes in this branch break compatibility with RT
    <=4.0. The required version in Makefile.PL reflects this. POD
    includes configuration instructions for >=4.2, only.
    
    This change sets RT too new to 4.6.

diff --git a/Makefile.PL b/Makefile.PL
index 18c1d1e..3404c7e 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -4,8 +4,8 @@ RTx('RT-BugTracker');
 
 repository('https://github.com/bestpractical/rt-bugtracker');
 
-requires_rt('4.0.9');
-rt_too_new('4.2.0');
+requires_rt('4.2.0');
+rt_too_new('4.6.0');
 
 no_index( package => 'RT::Queue' );
 
diff --git a/lib/RT/BugTracker.pm b/lib/RT/BugTracker.pm
index 448c67f..9bd3cba 100644
--- a/lib/RT/BugTracker.pm
+++ b/lib/RT/BugTracker.pm
@@ -256,9 +256,7 @@ in case changes need to be made to your database.
 
 Add this line:
 
-    Set(@Plugins, qw(RT::BugTracker));
-
-or add C<RT::BugTracker> to your existing C<@Plugins> line.
+    Plugin('RT::BugTracker');
 
 =item Clear your mason cache
 

commit 11d8416cfd1e4a86d8e9dbb2bd404591a8664d2e
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu Feb 23 12:27:00 2017 -0500

    Rename html/NoAuth to static

diff --git a/html/NoAuth/css/bugtracker.css b/html/NoAuth/css/bugtracker.css
deleted file mode 100644
index e0ed8ef..0000000
--- a/html/NoAuth/css/bugtracker.css
+++ /dev/null
@@ -1,63 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
-%#                                          <sales at bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-#external_bugtracker {
-    width: 50%;
-    border: 1px solid #666;
-    background: #ffffaa 8px 15px no-repeat;
-    padding: 0px 10px 10px 60px;
-    margin: 20px auto;
-    min-height: 30px;
-    -webkit-box-shadow: inset 2px 2px 2px 2px #999;
-    box-shadow: inset 2px 2px 2px 2px #999;
-    -webkit-border-radius: 10px;
-    border-radius: 10px;
-}
-
-.dist-notes textarea, .dist-addresses textarea, .dist-subjecttag input {
-    display: block;
-}
diff --git a/static/css/bugtracker.css b/static/css/bugtracker.css
new file mode 100644
index 0000000..4329273
--- /dev/null
+++ b/static/css/bugtracker.css
@@ -0,0 +1,16 @@
+#external_bugtracker {
+    width: 50%;
+    border: 1px solid #666;
+    background: #ffffaa 8px 15px no-repeat;
+    padding: 0px 10px 10px 60px;
+    margin: 20px auto;
+    min-height: 30px;
+    -webkit-box-shadow: inset 2px 2px 2px 2px #999;
+    box-shadow: inset 2px 2px 2px 2px #999;
+    -webkit-border-radius: 10px;
+    border-radius: 10px;
+}
+
+.dist-notes textarea, .dist-addresses textarea, .dist-subjecttag input {
+    display: block;
+}

commit 51f31684917fbf744ba48b7eb02053d5c8169578
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu Feb 23 14:02:04 2017 -0500

    Migrate deprecated template uses to current
    
    Use /Elements/CollectionList instead of /Elementes/TicketList.

diff --git a/html/Dist/Elements/ShowBugs b/html/Dist/Elements/ShowBugs
index cfd9f5d..3bab239 100644
--- a/html/Dist/Elements/ShowBugs
+++ b/html/Dist/Elements/ShowBugs
@@ -51,7 +51,8 @@
 <h3><% loc('Bugs') %></h3>
 % }
 
-<& /Elements/TicketList,
+<& /Elements/CollectionList,
+    Class   => 'RT::Tickets',
     Query   => $Query,
     Format  => $Format,
     OrderBy => $OrderBy,

commit 169b609532bb267bcf299a2961b3cfa4eac0f152
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu Feb 23 23:38:55 2017 -0500

    Add distro name regex config, replace explicit CPAN regex
    
    Add the DistributionToQueueRegex config variable, not set by
    default. The value used for rt.cpan.org, s/::/-/g, is included in
    BugTracker_Config.pm as part of the comment for this variable.
    
    When set, match strings submitted through RT::BugTracker pages and
    SimpleSearch.
    
    There is a corresponding commit in RT::BugTracker::Public to migrate
    to this config variable from the hardcoded CPAN regex.

diff --git a/etc/BugTracker_Config.pm b/etc/BugTracker_Config.pm
index c9fae3d..a0e62c6 100644
--- a/etc/BugTracker_Config.pm
+++ b/etc/BugTracker_Config.pm
@@ -8,4 +8,11 @@ Set( $EmailSubjectTagRegex, qr/$EmailSubjectTagRegex(?:\s+$DistributionSubjectTa
 # regex above.
 Set( $ExtractSubjectTagNoMatch, qr/\[$EmailSubjectTagRegex #\d+\]/ );
 
+# Translate distribution search strings from their canonical names,
+# like Data::Dumper, to their queue name, like Data-Dumper.
+#Set(%DistributionToQueueRegex,
+#    'Pattern' => '::',
+#    'Substitution' => '-'
+#);
+
 1;
diff --git a/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery b/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery
index 4aa5ef1..0411844 100644
--- a/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery
+++ b/html/Callbacks/BugTracker/Search/Simple.html/ModifyQuery
@@ -59,7 +59,8 @@ return if not $query or $query =~ /(^\d+$|\@|\s)/;
 
 my $queue = RT::Queue->new( $session{'CurrentUser'} );
 $queue->Load( $query );
-$queue->Load( $query ) if $query =~ s/::/-/g;
+my %NameRegex = RT->Config->Get("DistributionToQueueRegex");
+$queue->Load( $query ) if $query =~ s/$NameRegex{Pattern}/$NameRegex{Substitution}/g;
 if ( $queue->id ) {
     RT::Interface::Web::Redirect(
         $RT::WebURL .'/Dist/Display.html?Queue='. $m->interp->apply_escapes( $queue->Name, 'u' )
diff --git a/html/Dist/Display.html b/html/Dist/Display.html
index 20a18ac..da85255 100755
--- a/html/Dist/Display.html
+++ b/html/Dist/Display.html
@@ -67,7 +67,8 @@
 
 <%INIT>
 $Name = $Queue unless $Name;
-$Name =~ s/::/-/g;
+my %NameRegex = RT->Config->Get("DistributionToQueueRegex");
+$Name =~ s/$NameRegex{Pattern}/$NameRegex{Substitution}/g;
 my $QueueObj = RT::Queue->new( $session{CurrentUser} );
 $QueueObj->Load( $Name );
 unless ( $QueueObj->id ) {
diff --git a/html/Dist/Manage.html b/html/Dist/Manage.html
index cb02934..19d3a60 100644
--- a/html/Dist/Manage.html
+++ b/html/Dist/Manage.html
@@ -67,7 +67,8 @@
 </form>
 <%INIT>
 $Name = $Queue unless $Name;
-$Name =~ s/::/-/g;
+my %NameRegex = RT->Config->Get("DistributionToQueueRegex");
+$Name =~ s/$NameRegex{Pattern}/$NameRegex{Substitution}/g;
 my $QueueObj = RT::Queue->new( $session{CurrentUser} );
 $QueueObj->Load( $Name );
 unless ( $QueueObj->id ) {
diff --git a/lib/RT/BugTracker.pm b/lib/RT/BugTracker.pm
index 9bd3cba..dfa1bde 100644
--- a/lib/RT/BugTracker.pm
+++ b/lib/RT/BugTracker.pm
@@ -266,6 +266,44 @@ Add this line:
 
 =back
 
+=head1 CONFIGURATION
+
+=head2 DistributionToQueueRegex
+
+Some programming languages use characters in package names that may
+not work well in email addresses. Perl modules use double colons,
+'::', to separate package parents from children. BugTracker
+administrators could name a distribution queue using these characters,
+like 'Data::Dumper', for example. But the resulting public email
+address for bug reports would be bugs-Data::Dumper at example.com.
+
+While some characters may not be unallowed in email addresses,
+BugTracker administrators may want to name their distribution queues
+so that resulting public bug report addresses are more likely to get
+through spam and other filters.
+
+However, users want to search software distributions by the canonical
+name of the package, like under Distributions > Search and
+Distributions > Browse. Users expect to type "Data::Dumper" and find
+the distribution queue named "Data-Dumper".
+
+Use this config variable to define the character translation between
+distribution search strings and distribution queue names. BugTracker
+will use 'Pattern' and 'Substitution' in a subsitution regex
+match. BugTracker will use this value:
+
+Set(%DistributionToQueueRegex,
+    'Pattern' => '::',
+    'Substitution' => '-'
+);
+
+like this:
+
+s/::/-/g
+
+The values above translate Perl module names into their email-friendly
+counterpart queue names.
+
 =head1 SEE ALSO
 
 L<RT::BugTracker::Public>, L<RT::Extension::rt_cpan_org>

commit abbfd4873cd0f098fcc45ed99c77284896a73410
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu Feb 23 19:38:43 2017 -0500

    Use RT::BugTracker Elements, not RT::BugTracker::Public Elements
    
    The files touched in this change load elements from
    RT::BugTracker::Public. The functionality provided by these files
    fails when RT::BugTracker::Public isn't installed. They were probably
    overlooked since RT::BugTracker and RT::BugTracker::Public are
    typically installed together.

diff --git a/html/Dist/Browse.html b/html/Dist/Browse.html
index cb45d72..51f7ea2 100755
--- a/html/Dist/Browse.html
+++ b/html/Dist/Browse.html
@@ -51,7 +51,7 @@
 <& /Dist/Elements/BeginsWith, Name => $Name &>
 
 % if ( $queues ) {
-<& /Public/Elements/DistributionList, queues => $queues &>
+<& /Dist/Elements/DistributionList, queues => $queues &>
 % }
 
 <%init>
diff --git a/html/Dist/ByMaintainer.html b/html/Dist/ByMaintainer.html
index 41b1e85..35becd2 100755
--- a/html/Dist/ByMaintainer.html
+++ b/html/Dist/ByMaintainer.html
@@ -59,7 +59,7 @@ for my $method (qw(Load LoadByEmail)) {
 }
 
 if (not $user->Id) {
-    $m->comp('/Public/Elements/ErrorNoUser', Name => $Name, %ARGS);
+    $m->comp('/Elements/ErrorNoUser', Name => $Name, %ARGS);
     $m->abort();
 }
 
diff --git a/html/Dist/Display.html b/html/Dist/Display.html
index da85255..6c806d6 100755
--- a/html/Dist/Display.html
+++ b/html/Dist/Display.html
@@ -72,7 +72,7 @@ $Name =~ s/$NameRegex{Pattern}/$NameRegex{Substitution}/g;
 my $QueueObj = RT::Queue->new( $session{CurrentUser} );
 $QueueObj->Load( $Name );
 unless ( $QueueObj->id ) {
-    $m->comp('/Public/Elements/ErrorNoDist', Queue => $Name, %ARGS);
+    $m->comp('/Elements/ErrorNoDist', Queue => $Name, %ARGS);
     $m->abort();
 }
 $ARGS{'Name'} = $Name = $QueueObj->Name;
diff --git a/html/Dist/Manage.html b/html/Dist/Manage.html
index 19d3a60..40755d3 100644
--- a/html/Dist/Manage.html
+++ b/html/Dist/Manage.html
@@ -72,7 +72,7 @@ $Name =~ s/$NameRegex{Pattern}/$NameRegex{Substitution}/g;
 my $QueueObj = RT::Queue->new( $session{CurrentUser} );
 $QueueObj->Load( $Name );
 unless ( $QueueObj->id ) {
-    $m->comp('/Public/Elements/ErrorNoDist', Queue => $Name, %ARGS);
+    $m->comp('/Elements/ErrorNoDist', Queue => $Name, %ARGS);
     $m->abort();
 }
 $ARGS{'Name'} = $Name = $QueueObj->Name;
diff --git a/html/Elements/ErrorNoDist b/html/Elements/ErrorNoDist
index 333f84b..4c0ee14 100644
--- a/html/Elements/ErrorNoDist
+++ b/html/Elements/ErrorNoDist
@@ -46,7 +46,7 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Error") &>
-<& /Public/Elements/Tabs, Title => loc("Unable to find distribution") &>
+<& /Elements/Tabs, Title => loc("Unable to find distribution") &>
 
 <p>
 % if ($Queue) {
diff --git a/html/Elements/ErrorNoUser b/html/Elements/ErrorNoUser
index 66837cc..20dc1d0 100644
--- a/html/Elements/ErrorNoUser
+++ b/html/Elements/ErrorNoUser
@@ -46,7 +46,7 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <& /Elements/Header, Title => loc("Error") &>
-<& /Public/Elements/Tabs, Title => loc("Unable to find user") &>
+<& /Elements/Tabs, Title => loc("Unable to find user") &>
 
 <p>
   The user you specified, <strong><% $Name %></strong>, could not be found.

commit c4f0a1e47e53f75659f419b86f8e1de514a0ede1
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu Feb 23 23:35:05 2017 -0500

    Use WebDomain instead of hardcoded rt.cpan.org
    
    RT::BugTracker and RT::BugTracker::Public both hardcode 'rt.cpan.org'
    in several places. This change replaces it with the value of the RT
    config variable, WebDomain.

diff --git a/html/Dist/Elements/EditSubjectTag b/html/Dist/Elements/EditSubjectTag
index 107eba4..677b02e 100644
--- a/html/Dist/Elements/EditSubjectTag
+++ b/html/Dist/Elements/EditSubjectTag
@@ -46,7 +46,7 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <label class="dist-subjecttag"><% loc('Subject tag in addition to default') %>
-(<% loc('be reasonable') %>, <code><% RT->Config->Get("DistributionSubjectTagAllowed") %></code> is allowed, <code>rt.cpan.org</code> will be prepended):
+(<% loc('be reasonable') %>, <code><% RT->Config->Get("DistributionSubjectTagAllowed") %></code> is allowed, <code><% RT->Config->Get("WebDomain") %></code> will be prepended):
 <input size="120" name="Queue-<% $Queue->id %>-SubjectTag" value="<% $value || '' %>" /></label><br />
 <%ARGS>
 $Queue => undef

commit 297c3d7ad6527694a2ae5eca1161777080d3921b
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Thu Feb 23 16:50:39 2017 -0500

    Add Severity, Broken in, Fixed in CFs to initialdata
    
    The initialdata creates the CF types. It does not apply them to
    distribution queues or populate them with values.
    
    Add grouping "BugTracker" for these CFs.
    
    Add documentation for these CFs.

diff --git a/etc/BugTracker_Config.pm b/etc/BugTracker_Config.pm
index a0e62c6..afe2cfd 100644
--- a/etc/BugTracker_Config.pm
+++ b/etc/BugTracker_Config.pm
@@ -15,4 +15,11 @@ Set( $ExtractSubjectTagNoMatch, qr/\[$EmailSubjectTagRegex #\d+\]/ );
 #    'Substitution' => '-'
 #);
 
+# Group BugTracker-specific custom fields
+Set(%CustomFieldGroupings,
+    'RT::Ticket' => [
+        'BugTracker' => ['Severity', 'Broken in', 'Fixed in'],
+    ],
+);
+
 1;
diff --git a/etc/initialdata b/etc/initialdata
index cab80d8..b3e913e 100644
--- a/etc/initialdata
+++ b/etc/initialdata
@@ -1,3 +1,30 @@
+ at CustomFields = (
+    {
+        Name => 'Severity',
+        Description => 'Bug severity',
+        Type => 'Select',
+        MaxValues => '1',
+        LookupType => 'RT::Queue-RT::Ticket',
+        RenderType => 'Dropdown'
+    },
+    {
+        Name => 'Broken in',
+        Description => 'Distribution version where bug first appeared',
+        Type => 'Select',
+        MaxValues => '1',
+        LookupType => 'RT::Queue-RT::Ticket',
+        RenderType => 'Dropdown'
+    },
+    {
+        Name => 'Fixed in',
+        Description => 'Distribution version where bug was fixed',
+        Type => 'Select',
+        MaxValues => '1',
+        LookupType => 'RT::Queue-RT::Ticket',
+        RenderType => 'Dropdown'
+    },
+);
+
 @ScripActions = (
     {
         Name        => 'Notify Additional Addresses', # loc
diff --git a/lib/RT/BugTracker.pm b/lib/RT/BugTracker.pm
index dfa1bde..0b4abc8 100644
--- a/lib/RT/BugTracker.pm
+++ b/lib/RT/BugTracker.pm
@@ -304,6 +304,29 @@ s/::/-/g
 The values above translate Perl module names into their email-friendly
 counterpart queue names.
 
+=head2 Custom Fields: Severity, Broken in, Fixed in
+
+RT::BugTracker creates three custom fields on queues, globally, with
+empty values. The BugTracker administrator must populate the values of
+each of these custom fields.
+
+=head3 Severity
+
+Bug severity levels, like 'Low', 'Medium', and 'High'.
+
+=head3 Broken in
+
+The distribution version where the bug in the ticket first
+appeared. Since each distribution will have different release
+versions, the BugTracker admin will need top populate these values for
+each distribution.
+
+=head3 Fixed in
+
+The distribution version where the bug in the ticket was fixed. Since
+each distribution will have different release versions, the BugTracker
+admin will need top populate these values for each distribution.
+
 =head1 SEE ALSO
 
 L<RT::BugTracker::Public>, L<RT::Extension::rt_cpan_org>

commit 10465fbf856c808e5070f5a3c47282679b66364f
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Wed Mar 8 12:19:15 2017 -0500

    Add general BugTracker functionality and setup documentation.
    
    Detail how RT::BugTracker accomplishes the stated goal with
    queues/distributions and AdminCc/maintainers.
    
    Document Distribution menu search functionality.
    
    Document bug list search results.
    
    Document /Dist/Manage.html options.

diff --git a/lib/RT/BugTracker.pm b/lib/RT/BugTracker.pm
index 0b4abc8..cafde62 100644
--- a/lib/RT/BugTracker.pm
+++ b/lib/RT/BugTracker.pm
@@ -61,18 +61,49 @@ RT::BugTracker - Adds a UI designed for bug-tracking for developers to RT
 
 =head1 DESCRIPTION
 
-This extension changes RT's interface to be more useful when you want to track
-bug reports in many distributions. This extension is a start for setups like
-L<http://rt.cpan.org>. It's been developed to help authors of Perl modules.
+This extension changes RT's interface to be more useful when you want
+to track bug reports in many distributions. This extension is a start
+for setups like L<http://rt.cpan.org>. It's been developed to help
+authors of Perl modules.
 
-It follows two basic rules to achieve the goal:
+In RT::BugTracker, every queue is a software "distribution".
+RT::BugTracker adds a new F<Distribution> menu with options to search
+and browse distributions. User and group rights apply normally to
+queues through the Distribution menu search options.
 
-=over 4
+Users can search distributions by maintainer through F<Distribution >
+Search>. Maintainers are the AdminCc users and groups for
+the distribution.
 
-=item Each queue associated with one package (distribution).
+The search functions under the F<Distribution> menu return lists of
+matching distributions. List items include a link to the bug list for
+the distribution.
 
-=item Queue's AdminCc list is used for maintainers of the
-coresponding distribution.
+Bug list search results include columns for C<Severity>, C<Broken in>,
+and C<Fixed in> custom fields. The C<Configuration> section, below,
+describes how BugTracker administrators can configure these custom
+fields.
+
+The bug list search result page includes a link to the distribution's
+C<Manage> page. Distribution maintainers and BugTracker admins can set
+various attributes of the distribution here.
+
+=over 2
+
+=head2 Distribution notes
+
+These notes appear at the top of the distribution's bug list.
+
+=head2 Additional addresses RT should notify
+
+RT::BugTracker installs a new Scrip, C<On create and corresponds
+notify additonal addresses>, that fires on distribution ticket
+creation and comment transactions. This Scrip sets the C<To:> header
+to the email addresses configured here.
+
+=head2 Subject tag in addition to default
+
+STUB: The additional subject tag is currently broken in 4.2/4.4. BPS will document this functionality when it is fixed.
 
 =back
 

commit 4728c1c90aa643db61ef4f1da6eb67280bc7ffc8
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Wed Mar 8 13:32:45 2017 -0500

    Update distribution files
    
    Update module version and rebuild distribution.
    
    Update Module::Install to version 1.17

diff --git a/Changes b/Changes
index 522694b..e3fd6d4 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,9 @@
+5.3 2017-03-08
+ - Add RT 4.2 and 4.4 compatibility
+ - Remove RT <=4.0 compatibility
+ - Add general functionality and configuration documentation
+ - Generalize site-specific configurations
+
 5.2 2014-12-18
  - Add no_index for core RT packages
  - Add repository metadata
diff --git a/MANIFEST b/MANIFEST
index eaf902a..79d1509 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -32,7 +32,6 @@ html/Dist/Manage.html
 html/Dist/Search.html
 html/Elements/ErrorNoDist
 html/Elements/ErrorNoUser
-html/NoAuth/css/bugtracker.css
 html/Ticket/Elements/ShowQueue
 inc/Module/Install.pm
 inc/Module/Install/Base.pm
@@ -46,11 +45,12 @@ inc/Module/Install/RTx.pm
 inc/Module/Install/RTx/Runtime.pm
 inc/Module/Install/Win32.pm
 inc/Module/Install/WriteAll.pm
-inc/unicore/Name.pm
 inc/YAML/Tiny.pm
 lib/RT/Action/NotifyAdditionalAddresses.pm
 lib/RT/BugTracker.pm
+lostnfound
 Makefile.PL
 MANIFEST			This list of files
 META.yml
 README
+static/css/bugtracker.css
diff --git a/META.yml b/META.yml
index 1cc5b06..d8ebf62 100644
--- a/META.yml
+++ b/META.yml
@@ -8,7 +8,7 @@ configure_requires:
   ExtUtils::MakeMaker: 6.59
 distribution_type: module
 dynamic_config: 1
-generated_by: 'Module::Install version 1.12'
+generated_by: 'Module::Install version 1.17'
 license: gpl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -19,14 +19,15 @@ no_index:
     - etc
     - html
     - inc
+    - static
   package:
     - RT::Queue
 requires:
-  perl: 5.8.3
+  perl: 5.10.1
 resources:
   license: http://opensource.org/licenses/gpl-license.php
   repository: https://github.com/bestpractical/rt-bugtracker
-version: '5.2'
-x_module_install_rtx_version: '0.36'
-x_requires_rt: 4.0.9
-x_rt_too_new: 4.2.0
+version: '5.3'
+x_module_install_rtx_version: '0.38'
+x_requires_rt: 4.2.0
+x_rt_too_new: 4.6.0
diff --git a/README b/README
index 17e56cd..d631641 100644
--- a/README
+++ b/README
@@ -8,12 +8,40 @@ DESCRIPTION
     setups like <http://rt.cpan.org>. It's been developed to help authors of
     Perl modules.
 
-    It follows two basic rules to achieve the goal:
+    In RT::BugTracker, every queue is a software "distribution".
+    RT::BugTracker adds a new Distribution menu with options to search and
+    browse distributions. User and group rights apply normally to queues
+    through the Distribution menu search options.
 
-    Each queue associated with one package (distribution).
-    Queue's AdminCc list is used for maintainers of the coresponding
+    Users can search distributions by maintainer through Distribution
+    Search>. Maintainers are the AdminCc users and groups for the
     distribution.
 
+    The search functions under the Distribution menu return lists of
+    matching distributions. List items include a link to the bug list for
+    the distribution.
+
+    Bug list search results include columns for Severity, Broken in, and
+    Fixed in custom fields. The Configuration section, below, describes how
+    BugTracker administrators can configure these custom fields.
+
+    The bug list search result page includes a link to the distribution's
+    Manage page. Distribution maintainers and BugTracker admins can set
+    various attributes of the distribution here.
+
+  Distribution notes
+    These notes appear at the top of the distribution's bug list.
+
+  Additional addresses RT should notify
+    RT::BugTracker installs a new Scrip, On create and corresponds notify
+    additonal addresses, that fires on distribution ticket creation and
+    comment transactions. This Scrip sets the To: header to the email
+    addresses configured here.
+
+  Subject tag in addition to default
+    STUB: The additional subject tag is currently broken in 4.2/4.4. BPS
+    will document this functionality when it is fixed.
+
 INSTALLATION
     perl Makefile.PL
     make
@@ -32,15 +60,66 @@ INSTALLATION
     Edit your /opt/rt4/etc/RT_SiteConfig.pm
         Add this line:
 
-            Set(@Plugins, qw(RT::BugTracker));
-
-        or add RT::BugTracker to your existing @Plugins line.
+            Plugin('RT::BugTracker');
 
     Clear your mason cache
             rm -rf /opt/rt4/var/mason_data/obj
 
     Restart your webserver
 
+CONFIGURATION
+  DistributionToQueueRegex
+    Some programming languages use characters in package names that may not
+    work well in email addresses. Perl modules use double colons, '::', to
+    separate package parents from children. BugTracker administrators could
+    name a distribution queue using these characters, like 'Data::Dumper',
+    for example. But the resulting public email address for bug reports
+    would be bugs-Data::Dumper at example.com.
+
+    While some characters may not be unallowed in email addresses,
+    BugTracker administrators may want to name their distribution queues so
+    that resulting public bug report addresses are more likely to get
+    through spam and other filters.
+
+    However, users want to search software distributions by the canonical
+    name of the package, like under Distributions > Search and Distributions
+    > Browse. Users expect to type "Data::Dumper" and find the distribution
+    queue named "Data-Dumper".
+
+    Use this config variable to define the character translation between
+    distribution search strings and distribution queue names. BugTracker
+    will use 'Pattern' and 'Substitution' in a subsitution regex match.
+    BugTracker will use this value:
+
+    Set(%DistributionToQueueRegex, 'Pattern' => '::', 'Substitution' => '-'
+    );
+
+    like this:
+
+    s/::/-/g
+
+    The values above translate Perl module names into their email-friendly
+    counterpart queue names.
+
+  Custom Fields: Severity, Broken in, Fixed in
+    RT::BugTracker creates three custom fields on queues, globally, with
+    empty values. The BugTracker administrator must populate the values of
+    each of these custom fields.
+
+   Severity
+    Bug severity levels, like 'Low', 'Medium', and 'High'.
+
+   Broken in
+    The distribution version where the bug in the ticket first appeared.
+    Since each distribution will have different release versions, the
+    BugTracker admin will need top populate these values for each
+    distribution.
+
+   Fixed in
+    The distribution version where the bug in the ticket was fixed. Since
+    each distribution will have different release versions, the BugTracker
+    admin will need top populate these values for each distribution.
+
 SEE ALSO
     RT::BugTracker::Public, RT::Extension::rt_cpan_org
 
@@ -57,9 +136,19 @@ BUGS
         L<rt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=RT-BugTracker>.
 
 LICENSE AND COPYRIGHT
-    This software is Copyright (c) 2014 by Best Practical Solutions
+    This software is Copyright (c) 2017 by Best Practical Solutions
 
     This is free software, licensed under:
 
       The GNU General Public License, Version 2, June 1991
 
+POD ERRORS
+    Hey! The above document had some coding errors, which are explained
+    below:
+
+    Around line 93:
+        You forgot a '=back' before '=head2'
+
+    Around line 108:
+        =back without =over
+
diff --git a/inc/Module/Install.pm b/inc/Module/Install.pm
index 5460dd5..dbe10ca 100644
--- a/inc/Module/Install.pm
+++ b/inc/Module/Install.pm
@@ -31,7 +31,7 @@ BEGIN {
 	# This is not enforced yet, but will be some time in the next few
 	# releases once we can make sure it won't clash with custom
 	# Module::Install extensions.
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 
 	# Storage for the pseudo-singleton
 	$MAIN    = undef;
@@ -244,6 +244,8 @@ sub new {
 	}
 	return $args{_self} if $args{_self};
 
+	$base_path = VMS::Filespec::unixify($base_path) if $^O eq 'VMS';
+
 	$args{dispatch} ||= 'Admin';
 	$args{prefix}   ||= 'inc';
 	$args{author}   ||= ($^O eq 'VMS' ? '_author' : '.author');
@@ -322,7 +324,7 @@ sub find_extensions {
 	my ($self, $path) = @_;
 
 	my @found;
-	File::Find::find( sub {
+	File::Find::find( {no_chdir => 1, wanted => sub {
 		my $file = $File::Find::name;
 		return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;
 		my $subpath = $1;
@@ -336,7 +338,7 @@ sub find_extensions {
 		# correctly.  Otherwise, root through the file to locate the case-preserved
 		# version of the package name.
 		if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
-			my $content = Module::Install::_read($subpath . '.pm');
+			my $content = Module::Install::_read($File::Find::name);
 			my $in_pod  = 0;
 			foreach ( split /\n/, $content ) {
 				$in_pod = 1 if /^=\w/;
@@ -351,7 +353,7 @@ sub find_extensions {
 		}
 
 		push @found, [ $file, $pkg ];
-	}, $path ) if -d $path;
+	}}, $path ) if -d $path;
 
 	@found;
 }
@@ -373,24 +375,14 @@ sub _caller {
 	return $call;
 }
 
-# Done in evals to avoid confusing Perl::MinimumVersion
-eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@;
 sub _read {
 	local *FH;
 	open( FH, '<', $_[0] ) or die "open($_[0]): $!";
+	binmode FH;
 	my $string = do { local $/; <FH> };
 	close FH or die "close($_[0]): $!";
 	return $string;
 }
-END_NEW
-sub _read {
-	local *FH;
-	open( FH, "< $_[0]"  ) or die "open($_[0]): $!";
-	my $string = do { local $/; <FH> };
-	close FH or die "close($_[0]): $!";
-	return $string;
-}
-END_OLD
 
 sub _readperl {
 	my $string = Module::Install::_read($_[0]);
@@ -411,26 +403,15 @@ sub _readpod {
 	return $string;
 }
 
-# Done in evals to avoid confusing Perl::MinimumVersion
-eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@;
 sub _write {
 	local *FH;
 	open( FH, '>', $_[0] ) or die "open($_[0]): $!";
+	binmode FH;
 	foreach ( 1 .. $#_ ) {
 		print FH $_[$_] or die "print($_[0]): $!";
 	}
 	close FH or die "close($_[0]): $!";
 }
-END_NEW
-sub _write {
-	local *FH;
-	open( FH, "> $_[0]"  ) or die "open($_[0]): $!";
-	foreach ( 1 .. $#_ ) {
-		print FH $_[$_] or die "print($_[0]): $!";
-	}
-	close FH or die "close($_[0]): $!";
-}
-END_OLD
 
 # _version is for processing module versions (eg, 1.03_05) not
 # Perl versions (eg, 5.8.1).
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm
index f9bf5de..3d89918 100644
--- a/inc/Module/Install/Base.pm
+++ b/inc/Module/Install/Base.pm
@@ -4,7 +4,7 @@ package Module::Install::Base;
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 }
 
 # Suspend handler for "redefined" warnings
diff --git a/inc/Module/Install/Can.pm b/inc/Module/Install/Can.pm
index b4e5e3b..fc699b3 100644
--- a/inc/Module/Install/Can.pm
+++ b/inc/Module/Install/Can.pm
@@ -8,7 +8,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -121,6 +121,15 @@ END_C
 # Can we locate a (the) C compiler
 sub can_cc {
 	my $self   = shift;
+
+	if ($^O eq 'VMS') {
+		require ExtUtils::CBuilder;
+		my $builder = ExtUtils::CBuilder->new(
+		quiet => 1,
+		);
+		return $builder->have_compiler;
+	}
+
 	my @chunks = split(/ /, $Config::Config{cc}) or return;
 
 	# $Config{cc} may contain args; try to find out the program part
@@ -151,4 +160,4 @@ if ( $^O eq 'cygwin' ) {
 
 __END__
 
-#line 236
+#line 245
diff --git a/inc/Module/Install/Fetch.pm b/inc/Module/Install/Fetch.pm
index 54f14fb..3ee0aa1 100644
--- a/inc/Module/Install/Fetch.pm
+++ b/inc/Module/Install/Fetch.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Include.pm b/inc/Module/Install/Include.pm
index 7224cff..e8a73b8 100644
--- a/inc/Module/Install/Include.pm
+++ b/inc/Module/Install/Include.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Makefile.pm b/inc/Module/Install/Makefile.pm
index 81cddd5..bc81e06 100644
--- a/inc/Module/Install/Makefile.pm
+++ b/inc/Module/Install/Makefile.pm
@@ -8,7 +8,7 @@ use Fcntl qw/:flock :seek/;
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Metadata.pm b/inc/Module/Install/Metadata.pm
index 2c66b1e..29934cf 100644
--- a/inc/Module/Install/Metadata.pm
+++ b/inc/Module/Install/Metadata.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/RTx.pm b/inc/Module/Install/RTx.pm
index 73e7245..80538d3 100644
--- a/inc/Module/Install/RTx.pm
+++ b/inc/Module/Install/RTx.pm
@@ -8,7 +8,7 @@ no warnings 'once';
 
 use Module::Install::Base;
 use base 'Module::Install::Base';
-our $VERSION = '0.36';
+our $VERSION = '0.38';
 
 use FindBin;
 use File::Glob     ();
@@ -37,6 +37,13 @@ sub RTx {
     }
     $self->add_metadata("x_module_install_rtx_version", $VERSION );
 
+    my $installdirs = $ENV{INSTALLDIRS};
+    for ( @ARGV ) {
+        if ( /INSTALLDIRS=(.*)/ ) {
+            $installdirs = $1;
+        }
+    }
+
     # Try to find RT.pm
     my @prefixes = qw( /opt /usr/local /home /usr /sw /usr/share/request-tracker4);
     $ENV{RTHOME} =~ s{/RT\.pm$}{} if defined $ENV{RTHOME};
@@ -71,7 +78,13 @@ sub RTx {
 
     # Installation locations
     my %path;
-    $path{$_} = $RT::LocalPluginPath . "/$name/$_"
+    my $plugin_path;
+    if ( $installdirs && $installdirs eq 'vendor' ) {
+        $plugin_path = $RT::PluginPath;
+    } else {
+        $plugin_path = $RT::LocalPluginPath;
+    }
+    $path{$_} = $plugin_path . "/$name/$_"
         foreach @DIRS;
 
     # Copy RT 4.2.0 static files into NoAuth; insufficient for
@@ -85,7 +98,7 @@ sub RTx {
     my %index = map { $_ => 1 } @INDEX_DIRS;
     $self->no_index( directory => $_ ) foreach grep !$index{$_}, @DIRS;
 
-    my $args = join ', ', map "q($_)", map { ($_, $path{$_}) }
+    my $args = join ', ', map "q($_)", map { ($_, "\$(DESTDIR)$path{$_}") }
         sort keys %path;
 
     printf "%-10s => %s\n", $_, $path{$_} for sort keys %path;
@@ -123,7 +136,7 @@ install ::
         $has_etc{acl}++;
     }
     if ( -e 'etc/initialdata' ) { $has_etc{initialdata}++; }
-    if ( grep { /\d+\.\d+(\.\d+)?.*$/ } glob('etc/upgrade/*.*') ) {
+    if ( grep { /\d+\.\d+\.\d+.*$/ } glob('etc/upgrade/*.*.*') ) {
         $has_etc{upgrade}++;
     }
 
@@ -131,6 +144,7 @@ install ::
     if ( $path{lib} ) {
         $self->makemaker_args( INSTALLSITELIB => $path{'lib'} );
         $self->makemaker_args( INSTALLARCHLIB => $path{'lib'} );
+        $self->makemaker_args( INSTALLVENDORLIB => $path{'lib'} )
     } else {
         $self->makemaker_args( PM => { "" => "" }, );
     }
@@ -139,6 +153,13 @@ install ::
     $self->makemaker_args( INSTALLSITEMAN3DIR => "$RT::LocalPath/man/man3" );
     $self->makemaker_args( INSTALLSITEARCH => "$RT::LocalPath/man" );
 
+    # INSTALLDIRS=vendor should install manpages into /usr/share/man.
+    # That is the default path in most distributions. Need input from
+    # Redhat, Centos etc.
+    $self->makemaker_args( INSTALLVENDORMAN1DIR => "/usr/share/man/man1" );
+    $self->makemaker_args( INSTALLVENDORMAN3DIR => "/usr/share/man/man3" );
+    $self->makemaker_args( INSTALLVENDORARCH => "/usr/share/man" );
+
     if (%has_etc) {
         print "For first-time installation, type 'make initdb'.\n";
         my $initdb = '';
@@ -258,4 +279,4 @@ sub _load_rt_handle {
 
 __END__
 
-#line 390
+#line 428
diff --git a/inc/Module/Install/ReadmeFromPod.pm b/inc/Module/Install/ReadmeFromPod.pm
index b5e03c3..3634ee0 100644
--- a/inc/Module/Install/ReadmeFromPod.pm
+++ b/inc/Module/Install/ReadmeFromPod.pm
@@ -7,12 +7,41 @@ use warnings;
 use base qw(Module::Install::Base);
 use vars qw($VERSION);
 
-$VERSION = '0.22';
+$VERSION = '0.26';
+
+{
+
+    # these aren't defined until after _require_admin is run, so
+    # define them so prototypes are available during compilation.
+    sub io;
+    sub capture(&;@);
+
+#line 28
+
+    my $done = 0;
+
+    sub _require_admin {
+
+	# do this once to avoid redefinition warnings from IO::All
+	return if $done;
+
+	require IO::All;
+	IO::All->import( '-binary' );
+
+	require Capture::Tiny;
+	Capture::Tiny->import ( 'capture' );
+
+	return;
+    }
+
+}
 
 sub readme_from {
   my $self = shift;
   return unless $self->is_admin;
 
+  _require_admin;
+
   # Input file
   my $in_file  = shift || $self->_all_from
     or die "Can't determine file to make readme_from";
@@ -50,6 +79,8 @@ sub readme_from {
     $out_file = $self->_readme_htm($in_file, $out_file, $options);
   } elsif ($format eq 'man') {
     $out_file = $self->_readme_man($in_file, $out_file, $options);
+  } elsif ($format eq 'md') {
+    $out_file = $self->_readme_md($in_file, $out_file, $options);
   } elsif ($format eq 'pdf') {
     $out_file = $self->_readme_pdf($in_file, $out_file, $options);
   }
@@ -67,10 +98,10 @@ sub _readme_txt {
   $out_file ||= 'README';
   require Pod::Text;
   my $parser = Pod::Text->new( @$options );
-  open my $out_fh, '>', $out_file or die "Could not write file $out_file:\n$!\n";
+  my $io = io->file($out_file)->open(">");
+  my $out_fh = $io->io_handle;
   $parser->output_fh( *$out_fh );
   $parser->parse_file( $in_file );
-  close $out_fh;
   return $out_file;
 }
 
@@ -79,11 +110,14 @@ sub _readme_htm {
   my ($self, $in_file, $out_file, $options) = @_;
   $out_file ||= 'README.htm';
   require Pod::Html;
-  Pod::Html::pod2html(
-    "--infile=$in_file",
-    "--outfile=$out_file",
-    @$options,
-  );
+  my ($o) = capture {
+    Pod::Html::pod2html(
+      "--infile=$in_file",
+      "--outfile=-",
+      @$options,
+    );
+  };
+  io->file($out_file)->print($o);
   # Remove temporary files if needed
   for my $file ('pod2htmd.tmp', 'pod2htmi.tmp') {
     if (-e $file) {
@@ -99,7 +133,10 @@ sub _readme_man {
   $out_file ||= 'README.1';
   require Pod::Man;
   my $parser = Pod::Man->new( @$options );
-  $parser->parse_from_file($in_file, $out_file);
+  my $io = io->file($out_file)->open(">");
+  my $out_fh = $io->io_handle;
+  $parser->output_fh( *$out_fh );
+  $parser->parse_file( $in_file );
   return $out_file;
 }
 
@@ -111,11 +148,20 @@ sub _readme_pdf {
     or die "Could not generate $out_file because pod2pdf could not be found\n";
   my $parser = App::pod2pdf->new( @$options );
   $parser->parse_from_file($in_file);
-  open my $out_fh, '>', $out_file or die "Could not write file $out_file:\n$!\n";
-  select $out_fh;
-  $parser->output;
-  select STDOUT;
-  close $out_fh;
+  my ($o) = capture { $parser->output };
+  io->file($out_file)->print($o);
+  return $out_file;
+}
+
+sub _readme_md {
+  my ($self, $in_file, $out_file, $options) = @_;
+  $out_file ||= 'README.md';
+  require Pod::Markdown;
+  my $parser = Pod::Markdown->new( @$options );
+  my $io = io->file($out_file)->open(">");
+  my $out_fh = $io->io_handle;
+  $parser->output_fh( *$out_fh );
+  $parser->parse_file( $in_file );
   return $out_file;
 }
 
@@ -134,5 +180,5 @@ sub _all_from {
 
 __END__
 
-#line 254
+#line 316
 
diff --git a/inc/Module/Install/Win32.pm b/inc/Module/Install/Win32.pm
index e48c32d..dba25f9 100644
--- a/inc/Module/Install/Win32.pm
+++ b/inc/Module/Install/Win32.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/WriteAll.pm b/inc/Module/Install/WriteAll.pm
index 409ef40..d553bd7 100644
--- a/inc/Module/Install/WriteAll.pm
+++ b/inc/Module/Install/WriteAll.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.12';
+	$VERSION = '1.17';
 	@ISA     = qw{Module::Install::Base};
 	$ISCORE  = 1;
 }
diff --git a/inc/YAML/Tiny.pm b/inc/YAML/Tiny.pm
index 1be0cb1..4fd023d 100644
--- a/inc/YAML/Tiny.pm
+++ b/inc/YAML/Tiny.pm
@@ -2,16 +2,12 @@
 use 5.008001; # sane UTF-8 support
 use strict;
 use warnings;
-package YAML::Tiny;
-BEGIN {
-  $YAML::Tiny::AUTHORITY = 'cpan:ADAMK';
-}
-# git description: v1.61-3-g0a82466
-$YAML::Tiny::VERSION = '1.62';
+package YAML::Tiny; # git description: v1.69-8-g2c1e266
 # XXX-INGY is 5.8.1 too old/broken for utf8?
 # XXX-XDG Lancaster consensus was that it was sufficient until
 # proven otherwise
 
+our $VERSION = '1.70';
 
 #####################################################################
 # The YAML::Tiny API.
@@ -300,10 +296,11 @@ Did you decode with lax ":utf8" instead of strict ":encoding(UTF-8)"?
             }
         }
     };
-    if ( ref $@ eq 'SCALAR' ) {
-        $self->_error(${$@});
-    } elsif ( $@ ) {
-        $self->_error($@);
+    my $err = $@;
+    if ( ref $err eq 'SCALAR' ) {
+        $self->_error(${$err});
+    } elsif ( $err ) {
+        $self->_error($err);
     }
 
     return $self;
@@ -515,6 +512,10 @@ sub _load_hash {
             die \"YAML::Tiny failed to classify line '$lines->[0]'";
         }
 
+        if ( exists $hash->{$key} ) {
+            warn "YAML::Tiny found a duplicate key '$key' in line '$lines->[0]'";
+        }
+
         # Do we have a value?
         if ( length $lines->[0] ) {
             # Yes
@@ -569,10 +570,8 @@ sub _dump_file {
     if ( _can_flock() ) {
         # Open without truncation (truncate comes after lock)
         my $flags = Fcntl::O_WRONLY()|Fcntl::O_CREAT();
-        sysopen( $fh, $file, $flags );
-        unless ( $fh ) {
-            $self->_error("Failed to open file '$file' for writing: $!");
-        }
+        sysopen( $fh, $file, $flags )
+            or $self->_error("Failed to open file '$file' for writing: $!");
 
         # Use no translation and strict UTF-8
         binmode( $fh, ":raw:encoding(UTF-8)");
@@ -828,9 +827,10 @@ sub _can_flock {
 #####################################################################
 # Use Scalar::Util if possible, otherwise emulate it
 
+use Scalar::Util ();
 BEGIN {
     local $@;
-    if ( eval { require Scalar::Util; Scalar::Util->VERSION(1.18); } ) {
+    if ( eval { Scalar::Util->VERSION(1.18); } ) {
         *refaddr = *Scalar::Util::refaddr;
     }
     else {
@@ -852,8 +852,7 @@ END_PERL
     }
 }
 
-
-
+delete $YAML::Tiny::{refaddr};
 
 1;
 
@@ -870,4 +869,4 @@ END_PERL
 
 __END__
 
-#line 1488
+#line 1487
diff --git a/lib/RT/BugTracker.pm b/lib/RT/BugTracker.pm
index cafde62..ef1e67a 100644
--- a/lib/RT/BugTracker.pm
+++ b/lib/RT/BugTracker.pm
@@ -53,7 +53,7 @@ use warnings;
 package RT::BugTracker;
 
 use 5.008003;
-our $VERSION = '5.2';
+our $VERSION = '5.3';
 
 =head1 NAME
 

-----------------------------------------------------------------------


More information about the Bps-public-commit mailing list