This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/comdev-people.git
The following commit(s) were added to refs/heads/main by this push:
new ea6ffd7 HTML validator fixups
ea6ffd7 is described below
commit ea6ffd732de640b5bee225e96ac5f56a5e1df279
Author: Sebb <[email protected]>
AuthorDate: Sun Nov 30 15:31:03 2025 +0000
HTML validator fixups
---
html/foaf/foafamatic.html | 4 +-
html/foaf/index.html | 8 ++--
html/index.html | 12 +++---
html/js/phonebook.js | 84 ++++++++++++++++++++---------------------
html/keys/index.html | 23 +++++------
html/phonebook-about.html | 16 ++++----
html/phonebook.html | 16 ++++----
html/unlistedclas.html | 2 +-
tools/committer-index.ezt | 11 +++---
tools/committers-by-project.ezt | 7 ++--
tools/committers.py | 2 +-
tools/pgp.py | 3 +-
12 files changed, 96 insertions(+), 92 deletions(-)
diff --git a/html/foaf/foafamatic.html b/html/foaf/foafamatic.html
index a6d76d0..ba0cc55 100644
--- a/html/foaf/foafamatic.html
+++ b/html/foaf/foafamatic.html
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
+<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Foaf-A-Matic - Generate your Apache FOAF file</title>
@@ -90,7 +90,7 @@
<div id="content">
<div id="title">
<a href="http://www.apache.org">
- <img alt="ASF Logo" title="ASF Logo" src="../img/asf_logo_small.png"/>
+ <img alt="ASF Logo" title="ASF Logo" src="../img/asf_logo_small.png">
</a>
<h1 id="top">Foaf-A-Matic - Generate your Apache FOAF file</h1>
</div>
diff --git a/html/foaf/index.html b/html/foaf/index.html
index d81bc27..a1a0e88 100644
--- a/html/foaf/index.html
+++ b/html/foaf/index.html
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<title>Manage your public details with FOAF files</title>
- <link rel="stylesheet" type="text/css" href="../css/community.css" />
+ <link rel="stylesheet" type="text/css" href="../css/community.css" >
</head>
<body>
<div id="content">
<div id="title">
<a href="http://www.apache.org">
- <img alt="ASF Logo" title="ASF Logo"
src="../img/asf_logo_small.png"/>
+ <img alt="ASF Logo" title="ASF Logo" src="../img/asf_logo_small.png">
</a>
<h1 id="top">Managing Your Public Details with FOAF</h1>
</div>
diff --git a/html/index.html b/html/index.html
index f19e319..29600bb 100644
--- a/html/index.html
+++ b/html/index.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<title>people.apache.org</title>
<style>
* {
@@ -185,11 +185,11 @@
</style>
</head>
<body>
- <img src='img/asf_logo_small.png' alt='Apache logo with text'
style='text-align:center;'/><br/>
+ <img src='img/asf_logo_small.png' alt='Apache logo with text'
style='text-align:center;'><br>
<h2>Welcome to people.apache.org</h2>
<p style='text-align: center;'>We're working on a new front page for this
machine, stay tuned!</p>
<p>In the meantime, you can check out:</p>
- <br/>
+ <br>
<ul>
<li><a href="phonebook.html">Apache Phone Book</a></li>
<li>Whimsy tool to <a
href="https://whimsy.apache.org/officers/unlistedclas.cgi">check if a CLA has
been recorded. (officers and members only)</a></li>
@@ -205,8 +205,8 @@
<div id="footer">
Managed by the <a href="http://community.apache.org/">Apache Community
Development Project</a>.
Here is the <a href="https://github.com/apache/comdev-people">code</a>.
- <br/>
- Copyright© 2024, the Apache Software Foundation. Licensed under the <a
rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License,
Version 2.0</a><br/>
+ <br>
+ Copyright© 2024, the Apache Software Foundation. Licensed under the <a
rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License,
Version 2.0</a><br>
Apache® and the Apache logo are <a
href="https://www.apache.org/foundation/marks/list/">trademarks</a> of The
Apache Software Foundation.
</div>
</body>
diff --git a/html/js/phonebook.js b/html/js/phonebook.js
index 357426f..25db549 100644
--- a/html/js/phonebook.js
+++ b/html/js/phonebook.js
@@ -223,24 +223,24 @@ function showCommitter(obj, uid) {
var pl = roles[0] // pmc membership
var ch = roles[1] // chairs
if (isNologin(uid)) {
- details.innerHTML += "<b>Login is currently disabled</b><br/><br/>"
+ details.innerHTML += "<b>Login is currently disabled</b><br><br>"
}
if (isMember(uid)) {
- details.innerHTML += "<img src='img/asfmember.png'
style='vertical-align: middle;'/> <i>Foundation member</i><br/><br/>"
+ details.innerHTML += "<img src='img/asfmember.png'
style='vertical-align: middle;'> <i>Foundation member</i><br><br>"
}
if (ch.length > 0) {
details.innerHTML += "<b>Chair of:</b> " + linkifyList(Q_PMC, ch)
if (!isChair(uid)) {
details.innerHTML += " <b>Not a member of pmc-chairs!</b>"
}
- details.innerHTML += "<br/><br/>"
+ details.innerHTML += "<br><br>"
}
var purls = urls(uid)
if (purls.length > 0) {
- details.innerHTML += "<b>Personal URLs:</b> " +
linkifyURLs(purls) + "<br/><br/>"
+ details.innerHTML += "<b>Personal URLs:</b> " +
linkifyURLs(purls) + "<br><br>"
}
if (cl.length > 0) {
- details.innerHTML += "<b>Committer on:</b> " +
linkifyList(Q_UNIX, cl) + "<br/><br/>"
+ details.innerHTML += "<b>Committer on:</b> " +
linkifyList(Q_UNIX, cl) + "<br><br>"
}
var nc = [] // On PMC but not in LDAP unix
var nl = [] // On PMC but not in LDAP committee
@@ -248,7 +248,7 @@ function showCommitter(obj, uid) {
var nu = [] // In LDAP committee but not in LDAP unix
var pn;
if (pl.length > 0) {
- details.innerHTML += "<b>PMC member of:</b> " +
linkifyList(Q_PMC, pl) + "<br/><br/>"
+ details.innerHTML += "<b>PMC member of:</b> " +
linkifyList(Q_PMC, pl) + "<br><br>"
for (p in pl) {
pn = pl[p]
// There is an LDAP PMC group but the uid is not in
the committer(:members) group
@@ -274,34 +274,34 @@ function showCommitter(obj, uid) {
nu.push(pn)
}
}
- details.innerHTML += "<b>LDAP committee group membership:</b> " +
linkifyList(Q_CTTE, cttees) + "<br/><br/>"
+ details.innerHTML += "<b>LDAP committee group membership:</b> " +
linkifyList(Q_CTTE, cttees) + "<br><br>"
}
var services = getRoster(ldapservices, uid)
if (services.length > 0) {
- details.innerHTML += "<b>Service group membership:</b> " +
linkifyList(Q_SERVICE, services) + "<br/><br/>"
+ details.innerHTML += "<b>Service group membership:</b> " +
linkifyList(Q_SERVICE, services) + "<br><br>"
}
var auths = getRoster(ldapauth, uid)
if (auths.length > 0) {
- details.innerHTML += "<b>Auth group membership:</b> " +
linkifyList(Q_AUTH, auths) + "<br/><br/>"
+ details.innerHTML += "<b>Auth group membership:</b> " +
linkifyList(Q_AUTH, auths) + "<br><br>"
}
var pods = getRoster(podlings, uid)
if (pods.length > 0) {
- details.innerHTML += "<b>Podling membership:</b> " +
linkifyList(Q_PODLING, pods) + "<br/><br/>"
+ details.innerHTML += "<b>Podling membership:</b> " +
linkifyList(Q_PODLING, pods) + "<br><br>"
}
// Note any discrepancies
if (np.length > 0) {
- details.innerHTML += "<span class='error'>In LDAP committee group,
but <b>not a PMC member</b>:</span> " + linkifyList(Q_CTTE, np) + "<br/><br/>"
+ details.innerHTML += "<span class='error'>In LDAP committee group,
but <b>not a PMC member</b>:</span> " + linkifyList(Q_CTTE, np) + "<br><br>"
}
if (nc.length > 0) {
- details.innerHTML += "<span class='error'>On PMC, but not a member
of the committer group:</span> " + linkifyList(Q_PMC, nc) + "<br/><br/>"
+ details.innerHTML += "<span class='error'>On PMC, but not a member
of the committer group:</span> " + linkifyList(Q_PMC, nc) + "<br><br>"
}
if (nl.length > 0) {
- details.innerHTML += "<span class='error'>On PMC, but not member
of the LDAP committee group:</span> " + linkifyList(Q_CTTE, nl) + "<br/><br/>"
+ details.innerHTML += "<span class='error'>On PMC, but not member
of the LDAP committee group:</span> " + linkifyList(Q_CTTE, nl) + "<br><br>"
}
if (nu.length > 0) {
- details.innerHTML += "<span class='error'>In LDAP committee group
but not a member of the committer group:</span> " + linkifyList(Q_UNIX, nu) +
"<br/><br/>"
+ details.innerHTML += "<span class='error'>In LDAP committee group
but not a member of the committer group:</span> " + linkifyList(Q_UNIX, nu) +
"<br><br>"
}
obj.appendChild(details)
} else {
@@ -340,10 +340,10 @@ function hoverCommitter(parent, uid) {
var pl = roles[0]
var ch = roles[1]
if (isMember(uid) == true) {
- div.innerHTML += "<img src='img/asfmember.png'
style='vertical-align: middle;'/> <i>Foundation member</i><br/><br/>"
+ div.innerHTML += "<img src='img/asfmember.png'
style='vertical-align: middle;'> <i>Foundation member</i><br><br>"
}
if (isNologin(uid)) {
- div.innerHTML += "<b>Login is currently disabled</b><br/><br/>"
+ div.innerHTML += "<b>Login is currently disabled</b><br><br>"
}
if (ch.length > 0) {
ch.sort()
@@ -351,16 +351,16 @@ function hoverCommitter(parent, uid) {
if (!isChair(uid)) {
div.innerHTML += " <b>Not a member of pmc-chairs!</b>"
}
- div.innerHTML += "<br/><br/>"
+ div.innerHTML += "<br><br>"
}
if (cl.length > 0) {
cl.sort()
- div.innerHTML += "<b>Committer on:</b> " + cl.join(",
") + "<br/><br/>"
+ div.innerHTML += "<b>Committer on:</b> " + cl.join(",
") + "<br><br>"
}
var nc = []
if (pl.length > 0) {
pl.sort()
- div.innerHTML += "<b>PMC member of:</b> " + pl.join(",
") + "<br/><br/>"
+ div.innerHTML += "<b>PMC member of:</b> " + pl.join(",
") + "<br><br>"
for (p in pl) {
var pn = pl[p]
if (pn != 'member' && cl.indexOf(pn) < 0) {
@@ -369,7 +369,7 @@ function hoverCommitter(parent, uid) {
}
}
if (nc.length > 0) {
- div.innerHTML += "<i>On PMC, but not a Committer on:</i> " +
nc.join(", ") + "<br/><br/>"
+ div.innerHTML += "<i>On PMC, but not a Committer on:</i> " +
nc.join(", ") + "<br><br>"
}
@@ -440,13 +440,13 @@ function showProject(obj, prj) {
}
var chair = getChair(prj)
if (chair) {
- details.innerHTML += "<b>Chair:</b> " + chair + "<br/><br/>"
+ details.innerHTML += "<b>Chair:</b> " + chair + "<br><br>"
}
var url = committees[prj].site
if (url) {
- details.innerHTML += "<a href='"+url+"'
target='_blank'><b>Description:</b></a><br/><br/>" + desc + "<br/><br/>"
+ details.innerHTML += "<a href='"+url+"'
target='_blank'><b>Description:</b></a><br><br>" + desc + "<br><br>"
} else {
- details.innerHTML += "<b>Description:</b><br/><br/>" + desc +
"<br/><br/>"
+ details.innerHTML += "<b>Description:</b><br><br>" + desc +
"<br><br>"
}
var cl
var clExists = false // Does the unix group exist?
@@ -509,42 +509,42 @@ function showProject(obj, prj) {
if (pl.length > 0) {
if (prj == 'member') {
- details.innerHTML += "<b>ASF
members</b><br><br><table>" + pl.join("\n") + "</table><br/>"
+ details.innerHTML += "<b>ASF
members</b><br><br><table>" + pl.join("\n") + "</table><br>"
} else {
- details.innerHTML += "<b>PMC members (also in
the <a href='?ctte="+prj+"'>committee group</a> - unless noted below):</b> "+
pl.length + " <br><br><table>" + pl.join("\n") + "</table><br/>"
+ details.innerHTML += "<b>PMC members (also in
the <a href='?ctte="+prj+"'>committee group</a> - unless noted below):</b> "+
pl.length + " <br><br><table>" + pl.join("\n") + "</table><br>"
}
}
if (cl && cl.length > 0) {
- details.innerHTML += "<b>Committers (i.e. <a
href='?unix="+prj+"'>unix group</a>):</b> "+ cl.length + " <br><br><table>" +
cl.join("\n") + "</table><br/>"
+ details.innerHTML += "<b>Committers (i.e. <a
href='?unix="+prj+"'>unix group</a>):</b> "+ cl.length + " <br><br><table>" +
cl.join("\n") + "</table><br>"
if (podlings[prj]) {
- details.innerHTML += "<span class='error'>WARNING: <a
href='?podling="+prj+"'>"+prj+" podling group</a> also exists - this can cause
authentication issues</span><br/><br/>"
+ details.innerHTML += "<span class='error'>WARNING: <a
href='?podling="+prj+"'>"+prj+" podling group</a> also exists - this can cause
authentication issues</span><br><br>"
}
} else {
if (!clExists) {
- details.innerHTML += "<span class='error'>LDAP unix group not
present!</span><br/><br/>"
+ details.innerHTML += "<span class='error'>LDAP unix group not
present!</span><br><br>"
}
}
if (pmcnoctte.length) {
if (ctteeExists) {
- details.innerHTML += "<span class='error'>PMC members not in
LDAP committee group:</span> " + userList(pmcnoctte) + "<br/><br/>"
+ details.innerHTML += "<span class='error'>PMC members not in
LDAP committee group:</span> " + userList(pmcnoctte) + "<br><br>"
} else {
- details.innerHTML += "<span class='error'>LDAP committee group
not present!</span><br/><br/>"
+ details.innerHTML += "<span class='error'>LDAP committee group
not present!</span><br><br>"
}
}
if (pmcnounix.length) {
if (prj == 'member') {
- details.innerHTML += "<span class='error'>ASF members not in
committers(unix) group:</span> " + userList(pmcnounix) + "<br/><br/>"
+ details.innerHTML += "<span class='error'>ASF members not in
committers(unix) group:</span> " + userList(pmcnounix) + "<br><br>"
} else {
- details.innerHTML += "<span class='error'>PMC members not in
committers(unix) group:</span> " + userList(pmcnounix) + "<br/><br/>"
+ details.innerHTML += "<span class='error'>PMC members not in
committers(unix) group:</span> " + userList(pmcnounix) + "<br><br>"
}
}
if (cttenounix.length) {
- details.innerHTML += "<span class='error'>LDAP committee group
members not in committers(unix) group:</span> " + userList(cttenounix) +
"<br/><br/>"
+ details.innerHTML += "<span class='error'>LDAP committee group
members not in committers(unix) group:</span> " + userList(cttenounix) +
"<br><br>"
}
if (cttenopmc.length) {
- details.innerHTML += "<span class='error'>LDAP committee group
members not on PMC:</span> " + userList(cttenopmc) + "<br/><br/>"
+ details.innerHTML += "<span class='error'>LDAP committee group
members not on PMC:</span> " + userList(cttenopmc) + "<br><br>"
}
@@ -591,7 +591,7 @@ function showJsonRoster(obj, type, json, name, attr,
checkUnix) {
}
if (cl && cl.length > 0) {
- details.innerHTML += "<b>Roster:</b><br><br><table>" +
cl.join("\n") + "</table><br/>"
+ details.innerHTML += "<b>Roster:</b><br><br><table>" +
cl.join("\n") + "</table><br>"
}
obj.appendChild(details)
} else {
@@ -628,7 +628,7 @@ function showCommittee(obj, name) {
function searchProjects(keyword, open) {
var obj = document.getElementById('phonebook')
if (keyword != '') {
- obj.innerHTML = "<h3>Search results:</h3><hr/>"
+ obj.innerHTML = "<h3>Search results:</h3><hr>"
} else {
obj.innerHTML = ''
}
@@ -647,7 +647,7 @@ function searchProjects(keyword, open) {
function searchService(keyword, open) {
var obj = document.getElementById('phonebook')
if (keyword != '') {
- obj.innerHTML = "<h3>Search results:</h3><hr/>"
+ obj.innerHTML = "<h3>Search results:</h3><hr>"
} else {
obj.innerHTML = ''
}
@@ -664,7 +664,7 @@ function searchService(keyword, open) {
function searchAuth(keyword, open) {
var obj = document.getElementById('phonebook')
if (keyword != '') {
- obj.innerHTML = "<h3>Search results:</h3><hr/>"
+ obj.innerHTML = "<h3>Search results:</h3><hr>"
} else {
obj.innerHTML = ''
}
@@ -752,7 +752,7 @@ function showPOD(name) {
function searchPodlings(keyword, open) {
var obj = document.getElementById('phonebook')
- obj.innerHTML = "<h3>Search results:</h3><hr/>"
+ obj.innerHTML = "<h3>Search results:</h3><hr>"
for (var name in podlings) {
if (name.search(keyword.toLowerCase()) != -1) {
var id = 'podling_' + name
@@ -792,10 +792,10 @@ function showError(error) {
obj.innerHTML += error
} else { // assume it's an error object
obj.innerHTML = "<h3>Javascript Error detected</h3>"
- obj.innerHTML += "<hr/>"
+ obj.innerHTML += "<hr>"
obj.innerHTML += "<pre>"+ error.message + "</pre>"
obj.innerHTML += "<pre>"+ error.stack + "</pre>"
- obj.innerHTML += "<hr/>"
+ obj.innerHTML += "<hr>"
}
}
@@ -805,7 +805,7 @@ function searchCommitters(keyword, open) {
}
var n = 0
var obj = document.getElementById('phonebook')
- obj.innerHTML = "<h3>Search results:</h3><hr/>"
+ obj.innerHTML = "<h3>Search results:</h3><hr>"
for (var uid in people) {
if (!people[uid].noLogin) { // don't display disabled logins
var name = getCommitterName(uid)
diff --git a/html/keys/index.html b/html/keys/index.html
index 4a4ef23..219c387 100644
--- a/html/keys/index.html
+++ b/html/keys/index.html
@@ -1,4 +1,5 @@
-<html>
+<!DOCTYPE html>
+<html lang="en">
<head>
<meta charset="utf-8"></meta>
<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
@@ -8,37 +9,37 @@
<style> ul, li { cursor: default; } </style>
</head>
<body>
- <h1><img src='../img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'/> Public key files</h1>
+ <h1><img src='../img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'> Public key files</h1>
<!-- Text is difficult to read if the lines are too long -->
<div style="max-width: 90ch;">
<p>
ASF committers can add key fingerprints to their LDAP record using the <a
href="https://id.apache.org/">SelfServe</a> or
<a href="https://whimsy.apache.org/roster/committer/__self__">Whimsy</a> web
application.
-<br/>
+<br>
Only the fingerprints are stored in the LDAP record.
-<br/>
+<br>
The corresponding keys must be uploaded to a public key server.
</p>
<h1>Committer public key files</h1>
<p>
The files in the <a href="committer">Committer keys</a> directory are
autogenerated once a day from LDAP records and grouped by ASF id.
-<br/>
+<br>
(The public keys are downloaded from a public key server (default:
keyserver.ubuntu.com) using the fingerprints from LDAP)
-<br/>
+<br>
Note that LDAP currently contains some entries which are the short key id (8
hex chars)
rather than the full fingerprint (40 chars).
-<br/>
+<br>
These <b>key id entries are ignored</b> because they are not guaranteed
unique; and it has been shown that they can be spoofed.
-<br/>
+<br>
If your key does not appear in your <code>.asc</code> file, check that the
whole fingerprint is present.
-<br/>
+<br>
Also check that there are no leading or trailing spaces (embedded spaces are
OK) because LDAP encodes these (and some other apps may not be able to decode
them)
</p>
<h1>Project public key files</h1>
<p>
Project group files are no longer created.
They are <b>not suitable</b> for use as KEYS files for authenticating releases
-<br/>
+<br>
This is because:
<ul>
<li>The KEYS file are needed to check signatures of archived releases.
@@ -46,7 +47,7 @@ Thus keys should only ever be added to the KEYS file, and
never normally removed
Now the LDAP group for a project will change over time, and a committer who
signed one or more releases may no longer be in the group.
Also if a project moves to the Attic, its LDAP group will be removed.</li>
</ul>
-Individual committer key details can be copied from the committer or group
files into the project KEYS file.<br/>
+Individual committer key details can be copied from the committer or group
files into the project KEYS file.<br>
To keep the KEYS file manageable, it's recommended to only add the keys of
committers who have signed releases.
</p>
</div>
diff --git a/html/phonebook-about.html b/html/phonebook-about.html
index 05c9ab2..5e77391 100644
--- a/html/phonebook-about.html
+++ b/html/phonebook-about.html
@@ -10,7 +10,7 @@
</head>
<body>
- <h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'/><a href="phonebook.html">Apache Phone Book
application</a></h1>
+ <h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'><a href="phonebook.html">Apache Phone Book
application</a></h1>
<h2>About</h2>
<p>
This application shows the membership of PMCs and various LDAP groups used
for granting karma. It can also show the groups to which a person belongs.
@@ -24,9 +24,9 @@
<h2>Usage</h2>
<p>
As well as using the search fields to find projects or people, the
application supports direct query access in the form:
- <br/><br/>
+ <br><br>
<code>https://people.apache.org/phonebook.html<b>?type=name</b></code>
- <br/><br/>
+ <br><br>
The possible types are listed below; click on a link to run the sample query
(opens in new tab)
</p>
<ul>
@@ -44,8 +44,8 @@
</ul>
<h2>Notes</h2>
<p>
- Committers may provide homepage URLs in LDAP:<br/>
- Login to <a target="_blank"
href="https://id.apache.org/">https://id.apache.org/</a> and populate the
"Homepage URL:" field.<br/>
+ Committers may provide homepage URLs in LDAP:<br>
+ Login to <a target="_blank"
href="https://id.apache.org/">https://id.apache.org/</a> and populate the
"Homepage URL:" field.<br>
Remember to provide your password (near the bottom of the page) before
pressing submit
</p>
<p>
@@ -53,9 +53,9 @@
</p>
<p>
All PMC members should be owners of the LDAP project group.
- <br/>
+ <br>
Membership of this LDAP group is used to grant karma for some parts of SVN
that are private to the PMC and to give access to the PMC mail archives.
- <br/>
+ <br>
The LDAP project owners group should not normally contain people who are not
on the PMC.
</p>
<p>
@@ -80,7 +80,7 @@
<p>The source code is currently stored at:</p>
<pre style="border:1px solid #999; padding: 12px; margin: 1em 7px 1em
7px;">git clone <a
href="https://github.com/apache/comdev-people">https://github.com/apache/comdev-people</a></pre>
<div id="footer">
- Copyright© 2024, the Apache Software Foundation. Licensed under the
<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
2.0</a><br/>
+ Copyright© 2024, the Apache Software Foundation. Licensed under the
<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
2.0</a><br>
Apache and the Apache logo are trademarks of The Apache Software
Foundation.
</div>
</body>
diff --git a/html/phonebook.html b/html/phonebook.html
index 2006501..d66ffeb 100644
--- a/html/phonebook.html
+++ b/html/phonebook.html
@@ -12,7 +12,7 @@
<link href="css/phonebook.css" rel="stylesheet" media="all">
</head>
<body onload="preRender()">
- <h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'/> Apache committer and project index</h1>
+ <h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'> Apache committer and project index</h1>
<div id="search">
<table>
<thead>
@@ -29,11 +29,11 @@
<tbody>
<tr>
<td><b>Find:</b></td>
- <td><input type="text" placeholder="Project name" size="25"
onkeyup="searchProjects(this.value)"/></td>
- <td><input type="text" placeholder="Committer name" size="25"
onkeyup="searchCommitters(this.value)"/></td>
- <td><input type="text" placeholder="Podling name" size="18"
onkeyup="searchPodlings(this.value)"/></td>
- <td><input type="text" placeholder="Service name" size="18"
onkeyup="searchService(this.value)"/></td>
- <td><input type="text" placeholder="Auth name" size="18"
onkeyup="searchAuth(this.value)"/></td>
+ <td><input type="text" placeholder="Project name" size="25"
onkeyup="searchProjects(this.value)"></td>
+ <td><input type="text" placeholder="Committer name" size="25"
onkeyup="searchCommitters(this.value)"></td>
+ <td><input type="text" placeholder="Podling name" size="18"
onkeyup="searchPodlings(this.value)"></td>
+ <td><input type="text" placeholder="Service name" size="18"
onkeyup="searchService(this.value)"></td>
+ <td><input type="text" placeholder="Auth name" size="18"
onkeyup="searchAuth(this.value)"></td>
<td> </td>
</tr>
</tbody>
@@ -43,8 +43,8 @@
<div id="phonebook">
<p>
- Loading data, please wait...<br/>
- <img src="img/loader.gif" alt=""/>
+ Loading data, please wait...<br>
+ <img src="img/loader.gif" alt="">
</p>
<p id="progress"></p>
<noscript>
diff --git a/html/unlistedclas.html b/html/unlistedclas.html
index e939c14..7d6c06c 100644
--- a/html/unlistedclas.html
+++ b/html/unlistedclas.html
@@ -12,7 +12,7 @@
<link href="css/phonebook.css" rel="stylesheet" media="all">
</head>
<body>
- <h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='width: 200px; height: 61px; vertical-align: middle;'/> Persons with
signed CLAs but who are not (yet) committers.</h1>
+ <h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='width: 200px; height: 61px; vertical-align: middle;'> Persons with
signed CLAs but who are not (yet) committers.</h1>
<p>
The information has moved - please see the Whimsy <a
href="https://whimsy.apache.org/officers/unlistedclas.cgi">unlisted CLA
finder</a> page
</p>
diff --git a/tools/committer-index.ezt b/tools/committer-index.ezt
index b65d6e2..7f85fa0 100644
--- a/tools/committer-index.ezt
+++ b/tools/committer-index.ezt
@@ -1,4 +1,5 @@
-<html>
+<!DOCTYPE html>
+<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ASF Committers by id</title>
@@ -6,11 +7,11 @@
</head>
<body>
<div id="content">
-<h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'/> ASF Committers by ID</h1>
+<h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'> ASF Committers by ID</h1>
<p>
This page lists all known committers by login ID.
Each entry shows the full name and any LDAP groups / SVN groups to which
the committer belongs.
- <br/>
+ <br>
This information is derived from the <a href='public'>JSON files</a>
which in turn are derived from LDAP and the SVN authorization file by
Whimsy.
</p>
@@ -80,9 +81,9 @@ IDs must be lower-case alphanumeric (ASCII) only, with at
least three characters
]<td>[if-any roster.groups][for roster.groups][#
]<a href='phonebook.html?[roster.groups.type]=[roster.groups.link][#
]'>[roster.groups.name]</a>[if-index roster.groups last][else], [end][#
- ][end][else] [# ";" should be here][end]</td></tr>
+ ][end][else] [# ";" should be here][end]</td></tr>
[end]</table>
-<hr/>
+<hr>
<p>Created from the following versions of the files:</p>
<table>
<tr>
diff --git a/tools/committers-by-project.ezt b/tools/committers-by-project.ezt
index cf93813..02db6f6 100644
--- a/tools/committers-by-project.ezt
+++ b/tools/committers-by-project.ezt
@@ -1,4 +1,5 @@
-<html>
+<!DOCTYPE html>
+<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ASF Committers by auth group</title>
@@ -12,7 +13,7 @@
</head>
<body>
<div id="content">
-<h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'/> ASF Committers by auth group</h1>
+<h1><img src='img/asf_logo_small.png' alt='Apache logo with text'
style='vertical-align: middle;'> ASF Committers by auth group</h1>
<p>
This page lists all LDAP groups and the SVN authorization groups found in
the SVN authorization file, and shows the membership of the corresponding
groups.
@@ -58,7 +59,7 @@
<!--bodyContent-->
<table border="0">
[content]
-<hr/>
+<hr>
<p>Created from the following versions of the files:</p>
<table>
<tr>
diff --git a/tools/committers.py b/tools/committers.py
index e2aeac3..0e56cba 100755
--- a/tools/committers.py
+++ b/tools/committers.py
@@ -253,7 +253,7 @@ for group in sorted(groupData):
g.write("""<table><tr><th>SVN id</th><th>Name</th></tr>\n""")
for id in groupData[group]:
# SVN id
- g.write("""<tr><td id='%s'><a
href="committer-index.html#%s">%s</td>""" % (id, id, idStyle(id)))
+ g.write("""<tr><td id='%s'><a
href="committer-index.html#%s">%s</a></td>""" % (f"{group}-{id}", id,
idStyle(id)))
# Name
g.write("<td>%s</td></tr>\n" % nameStyle(id))
g.write("""</table>\n""")
diff --git a/tools/pgp.py b/tools/pgp.py
index fb86ffe..4204721 100644
--- a/tools/pgp.py
+++ b/tools/pgp.py
@@ -234,7 +234,8 @@ log.write(time.asctime()+"\n")
log.close()
f = open(os.path.join(COMMITTER_KEYS, "index.html"), "w", encoding='utf-8')
-f.write("""<html>
+f.write("""<!DOCTYPE html>
+<html lang="en">
<head><title>ASF PGP Keys</title>
<link rel="stylesheet" type="text/css" href="../../css/keys.css">
</head>