include("config.inc");
include("common.inc");
?>
#use wml::nmpage title="Debian New Maintainer"
function print_days($db, $startdate, $stopdate)
{
$where = " WHERE " . $stopdate . " IS NOT NULL AND age('now'::date, " . $stopdate . ") < '2 months' AND " . $stopdate . " >= " . $startdate;
#
# Mode - the most "popular" number
#$sql = "SELECT (date_part('epoch', age(" . $stopdate . "," . $startdate . "))/86400)::int, count(*) AS entries FROM applicant " . $where;
#$sql .= " GROUP BY age(" . $stopdate . "::date," . $startdate . "::date)";
$sql = "SELECT " . $stopdate . "::date -" . $startdate . "::date AS mode, count(*) AS entries FROM applicant " . $where;
$sql .= " GROUP BY mode";
$sql .= " ORDER BY entries DESC LIMIT 1";
if (! ($query = pg_exec($db, $sql))) {
echo "
Problem with query: ",
pg_ErrorMessage($db), " | \n";
return;
}
if (pg_NumRows($query) > 0) {
$row = pg_Fetch_Row($query, 0);
print "" . $row[0] . " | ";
} else {
print "?? | ";
}
#
# First we get the median
$sql = "SELECT count(*) FROM applicant " . $where;
if (! ($query = pg_exec($db, $sql))) {
echo "Problem with query: ",
pg_ErrorMessage($db), " | \n";
return;
}
$row = pg_Fetch_Row($query, 0);
$medcount= intval($row[0]/2);
$sql = "SELECT " . $stopdate . "::date - " . $startdate . "::date as median FROM applicant " . $where;
$sql .= " ORDER by median";
$sql .= " LIMIT 1 OFFSET " . $medcount;
if (! ($query = pg_exec($db, $sql))) {
echo "Problem with query: ",
pg_ErrorMessage($db), " | \n";
return;
}
if (pg_NumRows($query) > 0) {
$row = pg_Fetch_Row($query, 0);
print "" . $row[0] . " | ";
} else {
print "?? | ";
}
$sql = "SELECT avg(date_part('epoch', age(" . $stopdate . "," . $startdate . "))/86400)::int, max(date_part('epoch', age(" . $stopdate . "," . $startdate . "))/86400)::int from applicant " . $where;
if (! ($query = pg_exec($db, $sql))) {
echo "Problem with query: ",
pg_ErrorMessage($db), " | \n";
return;
}
if (pg_NumRows($query) > 0) {
$row = pg_Fetch_Row($query, 0);
echo "", $row[0], " | ", $row[1], " | ";
} else {
echo "?? | ?? | ";
}
}
function print_stat($db, $desc, $sql,$startdate,$stopdate)
{
if (! ($query = pg_exec($db, $sql))) {
echo "| Problem with query: ",
pg_ErrorMessage($db), " |
\n";
return;
}
if (pg_NumRows($query) > 0) {
$row = pg_Fetch_Row($query, 0);
echo "| $desc | ", $row[0], " | ";
} else {
echo "
| $desc | ?? | ";
}
if ($startdate == '' || $startdate == '') {
echo "N/A | N/A | N/A | N/A | ";
} else {
print_days($db,$startdate,$stopdate);
}
"
\n";
}
#
# Print stats prints a summary list of statistics about the new
# maintainers, as can be assumed from its name it prints them to
# the page.
function print_stats() {
if (! ($db = open_db())) {
return;
}
echo "\n";
echo "| | Count | Mode Days | Median Days | Average Days | Maximum Days |
\n";
#
# This is all applicants we know about
print_stat($db, "Waiting for Advocate",
"SELECT count(*) from applicant where advocate_checked IS NULL", "apply_date", "advocate_checked");
print_stat($db, "Awaiting AM assignment",
"SELECT count(*) from applicant where manager_date IS NULL", "advocate_checked", "manager_date");
print_stat($db, "Waiting for AM to confirm",
"SELECT count(*) from applicant WHERE manager_date IS NOT NULL AND am_confirm_date IS NULL", "manager_date", "am_confirm_date");
print_stat($db, "Initial AM contact",
"SELECT count(*) FROM applicant WHERE am_confirm_date IS NOT NULL AND am_contact IS NULL", "am_confirm_date", "am_contact");
print_stat($db, "Processing Applicant",
"SELECT count(*) FROM applicant WHERE am_contact IS NOT NULL AND ( decision IS NULL OR application_ok = 'f')", "am_contact", "decision");
print_stat($db, "Awaiting DAM Approval",
"SELECT count(*) FROM applicant WHERE approved = 't' AND ( application_ok = 't' OR application_ok IS NULL) AND newmaint IS NULL" ,"decision", "newmaint");
print_stat($db, "New Maintainers processed",
"SELECT count(*) FROM applicant WHERE da_approved = 't' ", 'apply_date', 'newmaint');
print_stat($db, "Total Applicants in Database",
"SELECT count(*) from applicant" ,'', '');
print_stat($db, "On hold at AM stage",
"SELECT count(*) FROM applicant WHERE approved = 'f' " , '', '');
print_stat($db, "On hold at DAM stage",
"SELECT count(*) FROM applicant WHERE approved = 't' AND da_approved = 'f' ", '', '');
print_stat($db, "Application Managers",
"SELECT count(*) FROM manager WHERE max_applicants > 0", '', '');
echo "
\n";
pg_Close($db);
}
?>
Debian New Maintainer Status
This system is used to display or update the status of New Maintainers
going through the application system. For more information about the
process itself, look at the
New Maintainers' Corner on our main site.
Aggregate Statistics
To give you some idea of the size of the application process and where,
as a whole, applicants are in the system we have provided some overall
statistics. The waiting times are taken from data for the last two months and
are incremental for each stage except for the 'New Maintainers Processed'
line which is the total time from application to becoming a new maintainer.
If you want to know more, visit the What do these statistics mean page.
print_stats();
?>
Applicant Login
If you think you are in the New Maintainer system, enter in the
email address you used to apply for it.
If you don't know what email address you registered with, you can go to
the list of applicants.
Application Manager Login
Who are we?
We are a group of Debian maintainers who have volunteered to assist the
Debian Account Managers in processing new applicants to be Debian maintainers
you can find out who these people are here.