diff --git a/Bugzilla/Version.pm b/Bugzilla/Version.pm
index f48de9089b9caccf0ea5bccc8bb04ad0ac8df756..ba7631a805827879a98fb6d78fde81b41b31ed0e 100644
--- a/Bugzilla/Version.pm
+++ b/Bugzilla/Version.pm
@@ -21,6 +21,7 @@ package Bugzilla::Version;
 
 use base qw(Bugzilla::Object);
 
+use Bugzilla::Install::Requirements qw(vers_cmp);
 use Bugzilla::Util;
 use Bugzilla::Error;
 
@@ -39,7 +40,9 @@ use constant DB_COLUMNS => qw(
 );
 
 use constant NAME_FIELD => 'value';
-use constant LIST_ORDER => NAME_FIELD;
+# This is "id" because it has to be filled in and id is probably the fastest.
+# We do a custom sort in new_from_list below.
+use constant LIST_ORDER => 'id';
 
 sub new {
     my $class = shift;
@@ -70,6 +73,12 @@ sub new {
     return $class->SUPER::new(@_);
 }
 
+sub new_from_list {
+    my $self = shift;
+    my $list = $self->SUPER::new_from_list(@_);
+    return [sort { vers_cmp(lc($a->name), lc($b->name)) } @$list];
+}
+
 sub bug_count {
     my $self = shift;
     my $dbh = Bugzilla->dbh;