You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@community.apache.org by hb...@apache.org on 2015/05/24 09:50:00 UTC
svn commit: r1681422 - in /comdev/projects.apache.org: scripts/
scripts/import/ site/doap/deltaspike/ site/doap/sis/ site/images/ site/js/
site/json/foundation/
Author: hboutemy
Date: Sun May 24 07:49:59 2015
New Revision: 1681422
URL: http://svn.apache.org/r1681422
Log:
replace 'TLP' with 'committee'
Added:
comdev/projects.apache.org/site/images/committee.png
- copied unchanged from r1681418, comdev/projects.apache.org/site/images/tlp.png
comdev/projects.apache.org/site/images/project.png
- copied unchanged from r1681418, comdev/projects.apache.org/site/images/sub.png
comdev/projects.apache.org/site/json/foundation/committees-evolution.json
- copied, changed from r1681418, comdev/projects.apache.org/site/json/foundation/tlps-evolution.json
comdev/projects.apache.org/site/json/foundation/committees.json
- copied, changed from r1681418, comdev/projects.apache.org/site/json/foundation/tlps.json
Removed:
comdev/projects.apache.org/site/images/sub.png
comdev/projects.apache.org/site/images/tlp.png
comdev/projects.apache.org/site/json/foundation/tlps-evolution.json
comdev/projects.apache.org/site/json/foundation/tlps.json
Modified:
comdev/projects.apache.org/scripts/README.txt
comdev/projects.apache.org/scripts/import/parsecommittees.py
comdev/projects.apache.org/scripts/import/parsepmcs.py
comdev/projects.apache.org/site/doap/deltaspike/pmc.rdf
comdev/projects.apache.org/site/doap/sis/pmc.rdf
comdev/projects.apache.org/site/js/projects.js
comdev/projects.apache.org/site/json/foundation/HEADER.html
Modified: comdev/projects.apache.org/scripts/README.txt
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/scripts/README.txt?rev=1681422&r1=1681421&r2=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/scripts/README.txt (original)
+++ comdev/projects.apache.org/scripts/README.txt Sun May 24 07:49:59 2015
@@ -30,9 +30,9 @@ various sources:
2. importing data (import)
-- parsecommittees.py: Parses committee-info.txt to detect new TLPs and add them to tlps-evolution.json
- in: foundation/tlps-evolution.json + committee-info.txt (https://svn.apache.org/repos/private/committers/board/committee-info.txt)
- out: foundation/tlps.json + foundation/tlps-evolution.json
+- parsecommittees.py: Parses committee-info.txt to detect new committees and add them to committees-evolution.json
+ in: foundation/committees-evolution.json + committee-info.txt (https://svn.apache.org/repos/private/committers/board/committee-info.txt)
+ out: foundation/committees.json + foundation/committees-evolution.json
- parsepmcs.py: imports PMC data from the old project.apache.org site. No need
to run that more than once?
@@ -45,9 +45,6 @@ various sources:
out: projects/*.json + foundation/projects.json
- addpmc.py
- in: foundation/pmcs.json + foundation/tlps-evolution.json + params
- out: foundation/pmcs.json + foundation/tlps-evolution.json
- list of PMCs with site url (pmcs.json) and monthly list of new committees (tlps-evolution.json)
-
-
-Notice: cycles.json is not imported from anywhere (could/should be from committee-info.txt)
+ in: foundation/pmcs.json + foundation/committees-evolution.json + params
+ out: foundation/pmcs.json + foundation/committees-evolution.json
+ list of PMCs with site url (pmcs.json) and monthly list of new committees (committees-evolution.json)
Modified: comdev/projects.apache.org/scripts/import/parsecommittees.py
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/scripts/import/parsecommittees.py?rev=1681422&r1=1681421&r2=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/scripts/import/parsecommittees.py (original)
+++ comdev/projects.apache.org/scripts/import/parsecommittees.py Sun May 24 07:49:59 2015
@@ -7,42 +7,42 @@ import urllib.request
import xml.etree.ElementTree as ET
import xml.dom.minidom as minidom
-# Committee names from committees-info.txt that do not match tlps-evolution.json
+# Committee names from committees-info.txt that do not match committees-evolution.json
renamesCommittee2Json = {
'Apache APR': 'Apache Portable Runtime',
'Apache Perl': 'Apache mod_perl'
}
-# Committee names from http://www.apache.org/foundation/ that do not match tlps-evolution.json
+# Committee names from http://www.apache.org/foundation/ that do not match committees-evolution.json
renamesChairs2Json = {
'Apache Logging Services': 'Apache Logging',
'Apache Perl': 'Apache mod_perl'
}
-# TLP ids not matching committee name in lowercase
-tlp_ids = {
+# committee ids not matching committee name in lowercase
+committeeIds = {
'Community Development': 'comdev',
'HTTP Server': 'httpd',
'Lucene.Net': 'lucenenet',
'Open Climate Workbench': 'climate'
}
-# LDAP group ids not matching tlp
+# LDAP group ids not matching committee id
group_ids = {
'webservices': 'ws'
}
-# homepages not matching http://<tlp>.apache.org/
+# homepages not matching http://<committee id>.apache.org/
homepages = {
'comdev': 'http://community.apache.org/',
'httpcomponents': 'http://hc.apache.org/'
}
-# short description for non-classical TLPs, that are not listed in http://www.apache.org/#projects-list
+# short description for non-classical committees, that are not listed in http://www.apache.org/#committeeShortNames-list
shortdescs = {
- 'attic': 'A home for dormant projects',
- 'comdev': 'Ressources to help people become involved with Apache projects',
- 'incubator': "Entry path into The Apache Software Foundation (ASF) for projects and codebases wishing to become part of the Foundation's efforts",
+ 'attic': 'A home for dormant committeeShortNames',
+ 'comdev': 'Ressources to help people become involved with Apache committeeShortNames',
+ 'incubator': "Entry path into The Apache Software Foundation (ASF) for committeeShortNames and codebases wishing to become part of the Foundation's efforts",
'labs': 'A place for innovation where committers of the foundation can experiment with new ideas'
}
-with open("../../site/json/foundation/tlps-evolution.json", "r") as f:
- tlpsEvolution = json.loads(f.read())
+with open("../../site/json/foundation/committees-evolution.json", "r") as f:
+ committeesEvolution = json.loads(f.read())
f.close()
with open("../../site/json/foundation/people.json", "r") as f:
@@ -92,6 +92,8 @@ for l in buf.readlines():
newCommittee = False
elif not l.startswith('==='):
m = re.search(r"(.+?)\s+<([^@]+)@apache.org", l.strip())
+ if not m:
+ print("unexpected line format: %s" % l.strip())
fullname = m.group(1)
uid = m.group(2)
isChair = fullname.endswith('(chair)')
@@ -102,9 +104,9 @@ for l in buf.readlines():
www = urllib.request.urlopen("http://www.apache.org/").read().decode('utf-8')
-tlpCount = 0
-tlps = []
-addedTlps = []
+committeeCount = 0
+committeesList = []
+addedCommittees = []
c = {}
for pmc in re.findall(r"\* .+?\s+\(est\. [0-9/]+[^\r\n]+", data):
@@ -112,47 +114,47 @@ for pmc in re.findall(r"\* .+?\s+\(est\.
#print(pmc)
m = re.search(r"\* (.+?)\s+\(est. ([0-9]+)/([0-9]+)", pmc)
if m:
- project = m.group(1)
+ committeeShortName = m.group(1)
month = m.group(2)
year = m.group(3)
if not re.search(r"Committee", pmc):
- if project in tlp_ids:
- tlp_id = tlp_ids[project]
+ if committeeShortName in committeeIds:
+ committeeId = committeeIds[committeeShortName]
else:
- tlp_id = project.lower().replace(' ', '').replace('.', '')
- # Classical TLP
- committee = "Apache %s" % project
- if committee in renamesCommittee2Json:
- committee = renamesCommittee2Json[committee]
- #print(project)
- tlpCount += 1
+ committeeId = committeeShortName.lower().replace(' ', '').replace('.', '')
+ # Classical committee
+ committeeName = "Apache %s" % committeeShortName
+ if committeeName in renamesCommittee2Json:
+ committeeName = renamesCommittee2Json[committeeName]
+ #print(committeeShortName)
+ committeeCount += 1
- # add TLP to tlpsEvolution if necessary
+ # add committee to committeesEvolution if necessary
key = "%s-%s" % (year, month)
- if not key in tlpsEvolution:
- tlpsEvolution[key] = [] # add new year-month
- if not committee in tlpsEvolution[key]:
- # add TLP to tlpsEvolution
- tlpsEvolution[key].append(committee)
- tlpsEvolution[key].sort()
- addedTlps.append("%s: %s" % (key, committee))
-
- # add TLP to tlps
- tlp = {}
- tlp['id'] = tlp_id
- if tlp_id in group_ids:
- group = group_ids[tlp_id]
+ if not key in committeesEvolution:
+ committeesEvolution[key] = [] # add new year-month
+ if not committeeName in committeesEvolution[key]:
+ # add committee to committeesEvolution
+ committeesEvolution[key].append(committeeName)
+ committeesEvolution[key].sort()
+ addedCommittees.append("%s: %s" % (key, committeeName))
+
+ # add committee to committees
+ committee = {}
+ committee['id'] = committeeId
+ if committeeId in group_ids:
+ group = group_ids[committeeId]
else:
- group = tlp_id
- tlp['group'] = group
- tlp['name'] = committee
- tlp['established'] = key
+ group = committeeId
+ committee['group'] = group
+ committee['name'] = committeeName
+ committee['established'] = key
if group in homepages:
homepage = homepages[group]
else:
homepage = 'http://%s.apache.org/' % group
- tlp['homepage'] = homepage
- # TLP committers and PMC members
+ committee['homepage'] = homepage
+ # committee committers and PMC members
pmcgroup = "%s-pmc" % group
committers = [] # [ 'login' ]
pmc = [] # [ 'login' ]
@@ -167,32 +169,32 @@ for pmc in re.findall(r"\* .+?\s+\(est\.
print("user %s has no groups" % login)
committers.sort()
pmc.sort()
- # don't store committers and PMC members arrays in tlp: it's easy to get from groups.json
- #tlp['pmcs'] = pmc
- #tlp['committers'] = committers
+ # don't store committers and PMC members arrays in committee: it's easy to get from groups.json
+ #committee['pmcs'] = pmc
+ #committee['committers'] = committers
if len(pmc) == 0:
- print('WARN: %s (%s established in %s) has no PMC members LDAP group (id=%s)' % (tlp_id, committee, key, pmcgroup))
- if project in committees:
- tlp['chair'] = committees[project]['chair']
- if project in cycles:
- tlp['reporting'] = cycles[project]
+ print('WARN: %s (%s established in %s) has no PMC members LDAP group (id=%s)' % (committeeId, committee, key, pmcgroup))
+ if committeeShortName in committees:
+ committee['chair'] = committees[committeeShortName]['chair']
+ if committeeShortName in cycles:
+ committee['reporting'] = cycles[committeeShortName]
else:
- print('WARN: %s not found in reporting cycles' % project)
+ print('WARN: %s not found in reporting cycles' % committeeShortName)
link = '<a href="%s" title="' % homepage
- if tlp_id in shortdescs:
- tlp['shortdesc'] = shortdescs[tlp_id]
+ if committeeId in shortdescs:
+ committee['shortdesc'] = shortdescs[committeeId]
elif link in www:
shortdesc = www[(www.index(link) + len(link)):]
shortdesc = shortdesc[:shortdesc.index('">')]
- tlp['shortdesc'] = shortdesc
+ committee['shortdesc'] = shortdesc
else:
- print("WARN: %s (%s) missing from http://www.apache.org/#projects-list" % (project, homepage))
- # TODO tlp['description'] (or charter) not in committee-info.txt
- # TODO tlp['retired'] not in committee-info.txt
- tlps.append(tlp)
+ print("WARN: %s (%s) missing from http://www.apache.org/#projects-list" % (committeeShortName, homepage))
+ # TODO committee['description'] (or charter) not in committee-info.txt
+ # TODO committee['retired'] not in committee-info.txt
+ committeesList.append(committee)
- # generate TLP PMC DOAP file at http://projects-new.apache.org/doap/{tlp_id}/pmc.rdf
+ # generate TLP PMC DOAP file at http://projects-new.apache.org/doap/{committeeId}/pmc.rdf
doap = ET.Element('rdf:RDF', attrib= { 'xml:lang': 'en',
'xmlns': 'http://usefulinc.com/ns/doap#',
'xmlns:rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
@@ -200,13 +202,13 @@ for pmc in re.findall(r"\* .+?\s+\(est\.
'xmlns:foaf': 'http://xmlns.com/foaf/0.1/'
})
doap_pmc = ET.SubElement(doap, 'asfext:pmc')
- ET.SubElement(doap_pmc, 'asfext:name').text = committee
+ ET.SubElement(doap_pmc, 'asfext:name').text = committeeName
ET.SubElement(doap_pmc, 'homepage', attrib = { 'rdf:resource': homepage })
doap_chair = ET.SubElement(doap_pmc, 'asfext:chair')
doap_chair_person = ET.SubElement(doap_chair, 'foaf:Person')
- ET.SubElement(doap_chair_person, 'foaf:nick').text = tlp['chair']
- ET.SubElement(doap_chair_person, 'foaf:name').text = people[tlp['chair']]['name']
- directory = "../../site/doap/%s" % tlp_id
+ ET.SubElement(doap_chair_person, 'foaf:nick').text = committee['chair']
+ ET.SubElement(doap_chair_person, 'foaf:name').text = people[committee['chair']]['name']
+ directory = "../../site/doap/%s" % committeeId
if not os.path.exists(directory):
os.makedirs(directory)
with open("%s/pmc.rdf" % directory, "w") as f:
@@ -215,20 +217,20 @@ for pmc in re.findall(r"\* .+?\s+\(est\.
else:
# Special Committee (Officer's, President's or Board)
- print("INFO: %s ignored %s" % (project, pmc[pmc.rfind('('):]))
- c[committee] = True
+ print("INFO: %s ignored %s" % (committeeShortName, pmc[pmc.rfind('('):]))
+ c[committeeName] = True
-with open("../../site/json/foundation/tlps-evolution.json", "w") as f:
- f.write(json.dumps(tlpsEvolution, sort_keys=True, indent=0))
+with open("../../site/json/foundation/committees-evolution.json", "w") as f:
+ f.write(json.dumps(committeesEvolution, sort_keys=True, indent=0))
f.close()
-print("found %s new TLPs from %s TLPs in committee_info.txt" % (len(addedTlps), tlpCount))
-addedTlps.sort()
-for added in addedTlps:
+print("found %s new committees from %s committees in committee_info.txt" % (len(addedCommittees), committeeCount))
+addedCommittees.sort()
+for added in addedCommittees:
print("- %s" % added)
-with open("../../site/json/foundation/tlps.json", "w") as f:
- f.write(json.dumps(tlps, sort_keys=True, indent=0))
+with open("../../site/json/foundation/committees.json", "w") as f:
+ f.write(json.dumps(committeesList, sort_keys=True, indent=0))
f.close()
# compare with chairs, for consistency checking
Modified: comdev/projects.apache.org/scripts/import/parsepmcs.py
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/scripts/import/parsepmcs.py?rev=1681422&r1=1681421&r2=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/scripts/import/parsepmcs.py (original)
+++ comdev/projects.apache.org/scripts/import/parsepmcs.py Sun May 24 07:49:59 2015
@@ -1,12 +1,11 @@
from xml.dom import minidom
import xml.etree.ElementTree as ET
import re, urllib.request
-import csv
import json
-import os
-data = urllib.request.urlopen("https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/data_files/").read().decode('utf-8')
-itemlist = re.findall(r">([a-z0-9]+)\.rdf<", data)
+data = urllib.request.urlopen("https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/pmc_list.xml").read()
+xmldoc = minidom.parseString(data)
+itemlist = xmldoc.getElementsByTagName('location')
projects = {}
@@ -31,7 +30,9 @@ def handleChild(el):
return tag, retval
for s in itemlist :
- url = "https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/data_files/%s.rdf" % s
+ url = s.childNodes[0].data
+ if not url.startswith('http'):
+ url = "https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/%s" % url
print(url)
try:
rdf = urllib.request.urlopen(url).read()
@@ -57,7 +58,7 @@ for s in itemlist :
print(err)
with open ("../../site/json/foundation/pmcs.json", "w") as f:
- f.write(json.dumps(projects, sort_keys=True, indent=0))
+ f.write(json.dumps(projects, indent=0))
f.close()
print("Done!")
\ No newline at end of file
Modified: comdev/projects.apache.org/site/doap/deltaspike/pmc.rdf
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/site/doap/deltaspike/pmc.rdf?rev=1681422&r1=1681421&r2=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/site/doap/deltaspike/pmc.rdf (original)
+++ comdev/projects.apache.org/site/doap/deltaspike/pmc.rdf Sun May 24 07:49:59 2015
@@ -5,8 +5,8 @@
<homepage rdf:resource="http://deltaspike.apache.org/"/>
<asfext:chair>
<foaf:Person>
- <foaf:nick>gpetracek</foaf:nick>
- <foaf:name>Gerhard Petracek</foaf:name>
+ <foaf:nick>tandraschko</foaf:nick>
+ <foaf:name>Thomas Andraschko</foaf:name>
</foaf:Person>
</asfext:chair>
</asfext:pmc>
Modified: comdev/projects.apache.org/site/doap/sis/pmc.rdf
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/site/doap/sis/pmc.rdf?rev=1681422&r1=1681421&r2=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/site/doap/sis/pmc.rdf (original)
+++ comdev/projects.apache.org/site/doap/sis/pmc.rdf Sun May 24 07:49:59 2015
@@ -5,8 +5,8 @@
<homepage rdf:resource="http://sis.apache.org/"/>
<asfext:chair>
<foaf:Person>
- <foaf:nick>aestrada</foaf:nick>
- <foaf:name>Adam Estrada</foaf:name>
+ <foaf:nick>desruisseaux</foaf:nick>
+ <foaf:name>Martin Desruisseaux</foaf:name>
</foaf:Person>
</asfext:chair>
</asfext:pmc>
Modified: comdev/projects.apache.org/site/js/projects.js
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/site/js/projects.js?rev=1681422&r1=1681421&r2=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/site/js/projects.js (original)
+++ comdev/projects.apache.org/site/js/projects.js Sun May 24 07:49:59 2015
@@ -19,10 +19,10 @@
var people = {}; // committer -> name lookups
var unixgroups = {}; // unix (ldap) groups (project -> committers lookup)
-var tlps = {}; // id -> tlp info (chair, established, group, homepage, id, name, reporting, shortdesc)
-var tlpsByName = {}; // name -> tlp info
-var tlpsEvolution = {}; // TLPs sorted by date founded, with retired (name = "retired: name")
-var projects = {}; // Projects (main project or sub-project from a TLP)
+var committees = {}; // id -> committee info (chair, established, group, homepage, id, name, reporting, shortdesc)
+var committeesByName = {}; // name -> committee info
+var committeesEvolution = {}; // committees sorted by date founded, with retired (name = "retired: name")
+var projects = {}; // Projects
var evolution = {}; // Podling evolution
// --------- Global helpers ----------- \\
@@ -255,22 +255,22 @@ function appendLiInnerHTML(ul,html) {
function renderProjectPage(project, projectId) {
var obj = document.getElementById('contents');
- var isTLP = false;
+ var isCommittee = false;
if ((!project || !project.name) && projects[projectId]) {
project = projects[projectId];
}
- if (tlps[projectId]) {
- isTLP = true;
+ if (committees[projectId]) {
+ isCommittee = true;
}
- if ((!project || !project.name) && (!isTLP)) {
+ if ((!project || !project.name) && (!isCommittee)) {
obj.innerHTML = "<h2>Sorry, I don't have any information available about this project</h2>";
return;
}
var isIncubating = project && (project.podling || (project.name && project.name.match(/incubating/i)));
- // Rerig the unix name and tlp
+ // Rerig the unix name and committee id
var unixgroup = projectId.split("-")[0];
// special case: empire-db
if (unixgroup == "empire") unixgroup = "empire-db";
@@ -278,21 +278,21 @@ function renderProjectPage(project, proj
if (project && project.pmc == "attic") {
unixgroup = "attic";
}
- var tlpId = unixgroup;
- if (!tlps[unixgroup]) {
- // one TLP has a unix group that is different from TLP id: webservices (group=ws), see parsecommittees.py#group_ids
- for (p in tlps) {
- if (tlps[p].group == unixgroup) {
- tlpId = p;
+ var committeeId = unixgroup;
+ if (!committees[unixgroup]) {
+ // one committee has a unix group that is different from committee id: webservices (group=ws), see parsecommittees.py#group_ids
+ for (p in committees) {
+ if (committees[p].group == unixgroup) {
+ committeeId = p;
break;
}
}
}
if (isIncubating) {
- tlpId = 'incubator';
- project.pmc = tlpId;
+ committeeId = 'incubator';
+ project.pmc = committeeId;
}
- var tlp = tlps[tlpId];
+ var committee = committees[committeeId];
// Start by splitting the name, thus fetching the root name of the project, and not the sub-project.
var description = "";
@@ -301,8 +301,8 @@ function renderProjectPage(project, proj
description = project.description;
} else if (!_.isEmpty(project.shortdesc)) {
description = project.shortdesc;
- } else if (!_.isEmpty(tlp.shortdesc)) {
- description = tlp.shortdesc;
+ } else if (!_.isEmpty(committee.shortdesc)) {
+ description = committee.shortdesc;
} else {
description = "No description available";
}
@@ -312,16 +312,16 @@ function renderProjectPage(project, proj
var pt = "";
if (isIncubating) {
pt = "Incubating";
- } else if (project && !tlpsByName[project.name] && tlps[project.pmc]) {
- pt = (project.pmc == "attic") ? "in the Attic" : ""
+ } else if (project && !committeesByName[project.name] && committees[project.pmc]) {
+ pt = (project.pmc == "attic") ? "in the Attic" : ""
} else {
- isTLP = true
+ isCommittee = true
}
- var name = (project && project.name) ? project.name : tlp.name;
+ var name = (project && project.name) ? project.name : committee.name;
if (!name.match(/incubating/i) && pt != "") {
name += " (" + pt + ")";
}
- obj.innerHTML = "<h1>" + name + " <font size='-1'>(a project managed by <a href='committee.html?" + tlpId + "'>" + tlp.name + " Committee</a>)</font></h1>";
+ obj.innerHTML = "<h1>" + name + " <font size='-1'>(a project managed by <a href='committee.html?" + committeeId + "'>" + committee.name + " Committee</a>)</font></h1>";
// project description
appendElementWithInnerHTML(obj,'p',description.replace(/([^\r\n]+)\r?\n\r?\n/g,function(a) { return "<p>"+a+"</p>"}));
@@ -334,7 +334,7 @@ function renderProjectPage(project, proj
project.pmc = project.pmc.match(/http:\/\/([a-z0-9]+)/i)[1];
}
} else {
- project.pmc = tlpId;
+ project.pmc = committeeId;
}
// Base data
@@ -352,19 +352,19 @@ function renderProjectPage(project, proj
}
// Website
- if (project.homepage && ((project.homepage != tlp.homepage) && !isTLP )) {
+ if (project.homepage && ((project.homepage != committee.homepage) && !isCommittee )) {
appendLiInnerHTML(ul, "<b>Website:</b> <a href='" + project.homepage + "' target='_blank'>" + project.homepage + "</a>");
}
if (isIncubating) {
appendLiInnerHTML(ul, "<b>Project status:</b> <span class='ppodling'>Incubating</span>");
- } else if (tlpId != 'attic') {
- appendLiInnerHTML(ul, "<b>Project status:</b> <span class='pactive'>Active</span>");
+ } else if (committeeId != 'attic') {
+ appendLiInnerHTML(ul, "<b>Project status:</b> <span class='pactive'>Active</span>");
} else {
- appendLiInnerHTML(ul, "<b>Project status:</b> <span class='pretired'>Retired</span>");
+ appendLiInnerHTML(ul, "<b>Project status:</b> <span class='pretired'>Retired</span>");
}
- if (!tlpsByName[project.name] && tlps[project.pmc]) {
- appendLiInnerHTML(ul, "<b>Sub-project of:</b> <a href='project.html?" + project.pmc + "'>" + tlps[project.pmc].name + "</a>");
+ if (!committeesByName[project.name] && committees[project.pmc]) {
+ appendLiInnerHTML(ul, "<b>Sub-project of:</b> <a href='project.html?" + project.pmc + "'>" + committees[project.pmc].name + "</a>");
}
// Committers
@@ -424,10 +424,10 @@ function renderProjectPage(project, proj
appendElementWithInnerHTML(obj,'h4',"Repositories:");
ul = document.createElement('ul');
if (project.SVNRepository&& project.SVNRepository.length > 0) {
- appendLiInnerHTML(ul, "<b>Subversion:</b> <a target=*_blank' href='" + project.SVNRepository + "'>" + project.SVNRepository + "</a>");
+ appendLiInnerHTML(ul, "<b>Subversion:</b> <a target=*_blank' href='" + project.SVNRepository + "'>" + project.SVNRepository + "</a>");
}
if (project.GitRepository && project.GitRepository.length > 0) {
- appendLiInnerHTML(ul, "<b>Git:</b> <a target=*_blank' href='" + project.GitRepository + "'>" + project.GitRepository + "</a>");
+ appendLiInnerHTML(ul, "<b>Git:</b> <a target=*_blank' href='" + project.GitRepository + "'>" + project.GitRepository + "</a>");
}
obj.appendChild(ul);
}
@@ -441,30 +441,30 @@ function buildProjectPage() {
function renderCommitteePage(committeeId) {
var obj = document.getElementById('contents');
- if (!tlps[committeeId]) {
+ if (!committees[committeeId]) {
obj.innerHTML = "<h2>Sorry, I don't have any information available about this committee</h2>";
return;
}
var unixgroup = committeeId; // there are probably a few exceptions...
- var tlp = tlps[committeeId];
+ var committee = committees[committeeId];
- obj.innerHTML = "<h1>" + tlp.name + " Committee</h1>";
+ obj.innerHTML = "<h1>" + committee.name + " Committee</h1>";
var ul = document.createElement('ul');
appendElementWithInnerHTML(obj, 'h4', "Committee data:");
- appendLiInnerHTML(ul, "<b>Website:</b> <a href='" + tlp.homepage + "' target='_blank'>" + tlp.homepage + "</a>");
+ appendLiInnerHTML(ul, "<b>Website:</b> <a href='" + committee.homepage + "' target='_blank'>" + committee.homepage + "</a>");
- appendLiInnerHTML(ul, "<b>Committee established:</b> " + tlp.established);
+ appendLiInnerHTML(ul, "<b>Committee established:</b> " + committee.established);
// VP
- appendLiInnerHTML(ul, "<b>PMC Chair:</b> " + people[tlp.chair]);
+ appendLiInnerHTML(ul, "<b>PMC Chair:</b> " + people[committee.chair]);
// Reporting cycle
var cycles = ["every month", "January, April, July, October", "February, May, August, November", "March, June, September, December"];
- appendLiInnerHTML(ul, "<b>Reporting cycle:</b> " + cycles[tlp.reporting] + ", see <a href='https://whimsy.apache.org/board/minutes/" + camelCase(committeeId) + ".html'>minutes</a>");
+ appendLiInnerHTML(ul, "<b>Reporting cycle:</b> " + cycles[committee.reporting] + ", see <a href='https://whimsy.apache.org/board/minutes/" + camelCase(committeeId) + ".html'>minutes</a>");
// PMC
if (unixgroups[unixgroup + "-pmc"]) {
@@ -497,7 +497,7 @@ function renderCommitteePage(committeeId
if ((subprojects.length == 0) && (committeeId != 'comdev') && (committeeId != 'labs')) {
// if a committee did not declare any project, consider there is a default one with the id of the committee
// only Labs and Community Development don't manage projects
- subprojects.push({ 'id': committeeId, 'name': tlp.name, 'pmc': committeeId });
+ subprojects.push({ 'id': committeeId, 'name': committee.name, 'pmc': committeeId });
}
if (subprojects.length >= 1) {
appendElementWithInnerHTML(obj, 'h4', "Projects managed by this Committee:");
@@ -525,23 +525,23 @@ function camelCase(str) {
}
function committeeIcon() {
- return "<img src='images/tlp.png' title='Committee' style='vertical-align: middle; padding: 2px;'/> ";
+ return "<img src='images/committee.png' title='Committee' style='vertical-align: middle; padding: 2px;'/> ";
}
function projectIcon() {
- return "<img src='images/sub.png' title='Project' style='vertical-align: middle; padding: 2px;'/> "
+ return "<img src='images/project.png' title='Project' style='vertical-align: middle; padding: 2px;'/> "
}
function committeeLink(id) {
- var tlp = tlps[id];
- return "<a href='committee.html?" + id + "'>" + tlp.name + "</a>";
+ var committee = committees[id];
+ return "<a href='committee.html?" + id + "'>" + committee.name + "</a>";
}
function projectLink(id) {
var project = projects[id];
if (!project) {
- // not project id: perhaps tlp id
- project = tlps[id];
+ // not project id: perhaps committee id
+ project = committees[id];
}
var name = project.name;
if (project.pmc == "attic") {
@@ -738,16 +738,16 @@ function renderProjectsByPMC() {
var projectsSorted = sortProjects();
var dcount = {};
- for (tlp in tlps) {
- dcount[tlp] = 0;
+ for (var committee in committees) {
+ dcount[committee] = 0;
}
for (project in projects) {
- project = projects[project];
+ project = projects[project];
// Fix Incubating projects
if (project.name.match("incubating", "i")) {
- project.pmc = 'incubator'
+ project.pmc = 'incubator'
}
- if (tlps[project.pmc]) {
+ if (committees[project.pmc]) {
dcount[project.pmc]++;
}
}
@@ -755,12 +755,12 @@ function renderProjectsByPMC() {
// Construct pmc list
var ul = document.createElement('ul');
- for (lpmc in tlps) {
+ for (lpmc in committees) {
var c = dcount[lpmc];
var li = document.createElement('li');
var cul = document.createElement('ul');
if (c == 0 && lpmc != 'comdev' && lpmc != 'labs') {
- appendLiInnerHTML(cul, projectIcon(tlps[lpmc].name) + "<a href='project.html?" + lpmc + "'>" + tlps[lpmc].name + "</a>");
+ appendLiInnerHTML(cul, projectIcon(committees[lpmc].name) + "<a href='project.html?" + lpmc + "'>" + committees[lpmc].name + "</a>");
c = 1;
} else {
for (i in projectsSorted) {
@@ -770,7 +770,7 @@ function renderProjectsByPMC() {
if (project.name.match("incubating", "i")) {
project.pmc = 'incubator'
}
- if (tlps[project.pmc]) {
+ if (committees[project.pmc]) {
xlpmc = project.pmc;
if (xlpmc == lpmc) {
appendLiInnerHTML(cul, projectIcon(project.name) + projectLink(i));
@@ -778,7 +778,7 @@ function renderProjectsByPMC() {
}
}
}
- li.innerHTML = "<h3>" + committeeIcon() + "<a id='" + lpmc + "' href='committee.html?"+ lpmc + "'>" + tlps[lpmc].name + " PMC</a> (" + c + ")" + (c>0?":": "") + "</h3>";
+ li.innerHTML = "<h3>" + committeeIcon() + "<a id='" + lpmc + "' href='committee.html?"+ lpmc + "'>" + committees[lpmc].name + " PMC</a> (" + c + ")" + (c>0?":": "") + "</h3>";
li.appendChild(cul);
ul.appendChild(li);
}
@@ -813,8 +813,8 @@ function buildProjectsList() {
function sortCommittees() {
var committeesSortedX = [];
var committeesSorted = [];
- for (i in tlps) {
- committeesSortedX.push([i, tlps[i].name]);
+ for (i in committees) {
+ committeesSortedX.push([i, committees[i].name]);
}
committeesSortedX.sort(function(a,b) { return a[1].toLowerCase() > b[1].toLowerCase() ? 1 : a[1].toLowerCase() < b[1].toLowerCase() ? -1 : 0 })
for (i in committeesSortedX) {
@@ -843,8 +843,8 @@ function renderCommitteesByDate() {
var dates = [];
var dcount = {};
- for (i in tlps) {
- var date = tlps[i].established;
+ for (i in committees) {
+ var date = committees[i].established;
if (dates.indexOf(date) < 0) {
dates.push(date);
dcount[date] = 0;
@@ -861,8 +861,8 @@ function renderCommitteesByDate() {
var li = document.createElement('li');
li.innerHTML = "<h3><a id='" + date + "'>" + date + " (" + dcount[date] + ")</a>:</h3>";
var cul = document.createElement('ul');
- for (i in tlpsByName) {
- i = tlpsByName[i];
+ for (i in committeesByName) {
+ i = committeesByName[i];
if (i.established == date) {
appendLiInnerHTML(cul, committeeIcon() + committeeLink(i.id));
}
@@ -903,14 +903,14 @@ function buildProjectListAsTable(json) {
var project = projects[p];
// Get name of PMC
- var pmc = tlps[project.pmc] ? tlps[project.pmc].name : "Unknown";
+ var pmc = committees[project.pmc] ? committees[project.pmc].name : "Unknown";
// Get project type
var type = "Sub-Project";
var shortp = p.split("-")[0];
if (unixgroups[shortp]) {
type = "TLP";
- if ((!tlpsByName[project.name] && tlps[project.pmc]) || project.name.match(/incubating/i)) {
+ if ((!committeesByName[project.name] && committees[project.pmc]) || project.name.match(/incubating/i)) {
type = "Sub-project";
}
} else {
@@ -956,8 +956,8 @@ function buildProjectListAsTable(json) {
}
-function isTLP(name) {
- return tlpsByName[name];
+function isCommittee(name) {
+ return committeesByName[name];
}
// ------------ Front page rendering ------------\\
@@ -970,7 +970,7 @@ function htmlListTooltip(date,name,value
function renderFrontPage() {
var numchairs = 0;
- for (i in tlps) numchairs++;
+ for (i in committees) numchairs++;
cur = evolution[0].current;
var nsubs = 0;
@@ -978,12 +978,12 @@ function renderFrontPage() {
i = projects[i];
if (!i.name.match(/incubating/i)) {
initiatives++;
- if (!isTLP(i.name)) {
- nsubs++;
+ if (!isCommittee(i.name)) {
+ nsubs++;
}
}
}
- var initiatives = cur + numchairs + nsubs + 5; // podlings + tlps + sub-projects + specials
+ var initiatives = cur + numchairs + nsubs + 5; // podlings + committees + sub-projects + specials
initiatives -= initiatives % 100; // round down
var obj = document.getElementById('details');
obj.innerHTML = "<h3 style='text-align: center;'>There are currently <span style='color: #269;'>" + initiatives + "+</span> open source initatives at the ASF:</h3>"
@@ -996,26 +996,26 @@ function renderFrontPage() {
var parr = [];
var cur = 0;
var karr = [];
- for (i in tlpsEvolution) {
+ for (i in committeesEvolution) {
karr.push(i);
}
karr.sort();
for (var j in karr) {
- var i = karr[j];
- var changes = tlpsEvolution[i];
- var newTlps = [];
- var retiredTlps = [];
- for (var k in changes) {
- var change = changes[k];
- if (change.match(/retired: /)) {
- retiredTlps.push(change.substring(9))
- } else {
- newTlps.push(change)
- }
- }
- cur += newTlps.length - retiredTlps.length;
- parr.push([i, newTlps.length, htmlListTooltip(i, 'new committee', newTlps), retiredTlps.length, htmlListTooltip(i, 'retired committee', retiredTlps), cur]);
+ var i = karr[j];
+ var changes = committeesEvolution[i];
+ var newCommittees = [];
+ var retiredCommittees = [];
+ for (var k in changes) {
+ var change = changes[k];
+ if (change.match(/retired: /)) {
+ retiredCommittees.push(change.substring(9))
+ } else {
+ newCommittees.push(change)
+ }
+ }
+ cur += newCommittees.length - retiredCommittees.length;
+ parr.push([i, newCommittees.length, htmlListTooltip(i, 'new committee', newCommittees), retiredCommittees.length, htmlListTooltip(i, 'retired committee', retiredCommittees), cur]);
}
//narr.sort(function(a,b) { return (b[1] - a[1]) });
var data1 = new google.visualization.DataTable();
@@ -1279,27 +1279,27 @@ function searchProjects(str) {
hits = {};
hitssorted = [];
- // Search TLPs
+ // Search committees
for (p in projects) {
- var project = projects[p];
- for (key in project) {
- if (typeof project[key] == "string") {
- val = project[key].toLowerCase();
- if (val.indexOf(str) >= 0 && val.substr(0,1) != "{") {
- if (!hits[p]) {
- hits[p] = [];
- }
- estr = new RegExp(str, "i");
- hits[p].push({
- 'key': key,
- 'val': project[key].replace(estr, function(a) { return "<u style='color: #963;'>"+a+"</u>"}, "img")
- });
- if (hitssorted.indexOf(p) < 0) {
- hitssorted.push(p);
- }
- }
- }
- }
+ var project = projects[p];
+ for (key in project) {
+ if (typeof project[key] == "string") {
+ val = project[key].toLowerCase();
+ if (val.indexOf(str) >= 0 && val.substr(0,1) != "{") {
+ if (!hits[p]) {
+ hits[p] = [];
+ }
+ estr = new RegExp(str, "i");
+ hits[p].push({
+ 'key': key,
+ 'val': project[key].replace(estr, function(a) { return "<u style='color: #963;'>"+a+"</u>"}, "img")
+ });
+ if (hitssorted.indexOf(p) < 0) {
+ hitssorted.push(p);
+ }
+ }
+ }
+ }
}
obj.innerHTML = "<h2>Search results for '" + str + "' (" + hitssorted.length + "):</h2>";
@@ -1308,15 +1308,15 @@ function searchProjects(str) {
for (h in hitssorted) {
h = hitssorted;
- var project = hits[h];
- var html = "<h4><a href='/project.html?" + h + "'>" + projects[h].name + "</a> (" + project.length + " hit(s)):</h4>";
- for (x in project) {
- html += "<blockquote><b>" + project[x].key + ":</b> " + project[x].val + "</blockquote>";
- }
- appendLiInnerHTML(ul,html);
+ var project = hits[h];
+ var html = "<h4><a href='/project.html?" + h + "'>" + projects[h].name + "</a> (" + project.length + " hit(s)):</h4>";
+ for (x in project) {
+ html += "<blockquote><b>" + project[x].key + ":</b> " + project[x].val + "</blockquote>";
+ }
+ appendLiInnerHTML(ul,html);
}
if (hitssorted.length == 0) {
- obj.innerHTML += "No search results found";
+ obj.innerHTML += "No search results found";
}
obj.appendChild(ul);
}
@@ -1328,7 +1328,7 @@ function checkKeyPress(e, txt) {
if (!e) e = window.event;
var keyCode = e.keyCode || e.which;
if (keyCode == '13'){
- searchProjects(txt.value);
+ searchProjects(txt.value);
}
}
@@ -1338,23 +1338,23 @@ function checkKeyPress(e, txt) {
// Add projects if they aren't in the hash already
function weaveInProjects(json) {
for (p in json) {
- if (!projects[p]) {
- if (json[p].category) {
- // temporary hack: json are now generated without the http://projects.apache.org/category/ url
- json[p].category = json[p].category.replace(new RegExp("http://projects.apache.org/category/", 'g'), '');
- }
- projects[p] = json[p];
- }
+ if (!projects[p]) {
+ if (json[p].category) {
+ // temporary hack: json are now generated without the http://projects.apache.org/category/ url
+ json[p].category = json[p].category.replace(new RegExp("http://projects.apache.org/category/", 'g'), '');
+ }
+ projects[p] = json[p];
+ }
}
}
-function setTlps(json, state) {
+function setCommittees(json, state) {
for (p in json) {
p = json[p];
- // tlps = { id -> tlp }
- tlps[p.id] = p;
- // tlpsByName = { name -> tlp }
- tlpsByName[p.name] = p;
+ // committees = { id -> committee }
+ committees[p.id] = p;
+ // committeesByName = { name -> committee }
+ committeesByName[p.name] = p;
}
if (state) {
state();
@@ -1365,13 +1365,13 @@ function setTlps(json, state) {
function renderReleases(releases) {
var arr = [];
for (p in releases) {
- var releasedata = releases[p];
-
- for (filename in releasedata) {
- var date = releasedata[filename];
- // Shove the result into a row
- arr.push([ p, p, date, filename]);
- }
+ var releasedata = releases[p];
+
+ for (filename in releasedata) {
+ var date = releasedata[filename];
+ // Shove the result into a row
+ arr.push([ p, p, date, filename]);
+ }
}
// Construct the data table
@@ -1409,12 +1409,12 @@ function buildReleases() {
function preloadEverything(callback) {
GetAsyncJSONArray([
- ["json/foundation/tlps.json", setTlps],
+ ["json/foundation/committees.json", setCommittees],
["json/foundation/groups.json", function(json) { unixgroups = json; }],
["json/foundation/people_name.json", function(json) { people = json; }],
["json/foundation/projects.json", weaveInProjects],
["json/foundation/podlings.json", weaveInProjects],
- ["json/foundation/tlps-evolution.json", function(json) { tlpsEvolution = json; }],
+ ["json/foundation/committees-evolution.json", function(json) { committeesEvolution = json; }],
["json/foundation/podlings-evolution.json", function(json) { evolution = json; }]
],
callback);
Modified: comdev/projects.apache.org/site/json/foundation/HEADER.html
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/site/json/foundation/HEADER.html?rev=1681422&r1=1681421&r2=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/site/json/foundation/HEADER.html (original)
+++ comdev/projects.apache.org/site/json/foundation/HEADER.html Sun May 24 07:49:59 2015
@@ -4,11 +4,11 @@ see <code><a href="http://svn.apache.org
for more information.
<ul>
<li><a href="accounts-evolution.json"><code>accounts-evolution.json</code></a> generated by <code>cronjobs/countaccounts.py</code> from LDAP</li>
-<li><a href="chairs.json"><code>chairs.json</code></a> generated by <code>cronjobs/parsechairs.py</code> from <a href="http://www.apache.org/foundation/">http://www.apache.org/foundation/</a> (not used any more, replaced by tlps.json)</li>
+<li><i><a href="chairs.json"><code>chairs.json</code></a> generated by <code>cronjobs/parsechairs.py</code> from <a href="http://www.apache.org/foundation/">http://www.apache.org/foundation/</a> (not used any more, replaced by committees.json)</i></li>
<li><a href="groups.json"><code>groups.json</code></a>, <a href="people.json"><code>people.json</code></a> and <a href="people_name.json"><code>people_name.json</code></a> generated by <code>cronjobs/parsecommitters.py</code> from <a href="http://people.apache.org/committer-index.html">http://people.apache.org/committer-index.html</a></li>
-<li><a href="pmcs.json"><code>pmcs.json</code></a> imported with <code>import/parsepmcs.py</code> from <a href='https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/data_files/'>PMC DOAP files</a> (not used any more, replaced by tlps.json)</li>
+<li><i><a href="pmcs.json"><code>pmcs.json</code></a> imported with <code>import/parsepmcs.py</code> from <a href='https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/data_files/'>PMC DOAP files</a> (not used any more, replaced by committees.json)</i></li>
<li><a href="podlings.json"><code>podlings.json</code></a> and <a href="podlings-evolution.json"><code>podlings-evolution.json</code></a> generated by <code>cronjobs/podlings.py</code> from <a href="http://incubator.apache.org/podlings.xml">http://incubator.apache.org/podlings.xml</a></li>
<li><a href="projects.json"><code>projects.json</code></a> imported with <code>import/rdfparse.py</code> from <a href='https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/files.xml'>projects' DOAP files</a></li>
<li><a href="releases.json"><code>releases.json</code></a> generated by <code>cronjobs/parsereleases.py</code> from <a href="http://www.apache.org/dist/">http://www.apache.org/dist/</a></li>
-<li><a href="tlps.json"><code>tlps.json</code></a> and <a href="tlps-evolution.json"><code>tlps-evolution.json</code></a> imported with <code>import/parsecommittees.py</code> from <code>https://svn.apache.org/repos/private/committers/board/committee-info.txt</code></li>
+<li><a href="committees.json"><code>committees.json</code></a> and <a href="committees-evolution.json"><code>committees-evolution.json</code></a> imported with <code>import/parsecommittees.py</code> from <code>https://svn.apache.org/repos/private/committers/board/committee-info.txt</code></li>
</ul>
\ No newline at end of file
Copied: comdev/projects.apache.org/site/json/foundation/committees-evolution.json (from r1681418, comdev/projects.apache.org/site/json/foundation/tlps-evolution.json)
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/site/json/foundation/committees-evolution.json?p2=comdev/projects.apache.org/site/json/foundation/committees-evolution.json&p1=comdev/projects.apache.org/site/json/foundation/tlps-evolution.json&r1=1681418&r2=1681422&rev=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/site/json/foundation/tlps-evolution.json (original)
+++ comdev/projects.apache.org/site/json/foundation/committees-evolution.json Sun May 24 07:49:59 2015
@@ -533,5 +533,8 @@
"Apache Parquet",
"retired: Apache Click",
"retired: Apache Lenya"
+],
+"2015-05": [
+"Apache Whimsy"
]
}
\ No newline at end of file
Copied: comdev/projects.apache.org/site/json/foundation/committees.json (from r1681418, comdev/projects.apache.org/site/json/foundation/tlps.json)
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/site/json/foundation/committees.json?p2=comdev/projects.apache.org/site/json/foundation/committees.json&p1=comdev/projects.apache.org/site/json/foundation/tlps.json&r1=1681418&r2=1681422&rev=1681422&view=diff
==============================================================================
--- comdev/projects.apache.org/site/json/foundation/tlps.json (original)
+++ comdev/projects.apache.org/site/json/foundation/committees.json Sun May 24 07:49:59 2015
@@ -127,7 +127,7 @@
"id": "attic",
"name": "Apache Attic",
"reporting": 1,
-"shortdesc": "A home for dormant projects"
+"shortdesc": "A home for dormant committeeShortNames"
},
{
"chair": "wfarner",
@@ -136,7 +136,8 @@
"homepage": "http://aurora.apache.org/",
"id": "aurora",
"name": "Apache Aurora",
-"reporting": 3
+"reporting": 3,
+"shortdesc": ""
},
{
"chair": "tomwhite",
@@ -185,7 +186,8 @@
"homepage": "http://bookkeeper.apache.org/",
"id": "bookkeeper",
"name": "Apache BookKeeper",
-"reporting": 2
+"reporting": 2,
+"shortdesc": ""
},
{
"chair": "boisvert",
@@ -244,7 +246,8 @@
"homepage": "http://celix.apache.org/",
"id": "celix",
"name": "Apache Celix",
-"reporting": 1
+"reporting": 1,
+"shortdesc": ""
},
{
"chair": "fmui",
@@ -314,7 +317,7 @@
"id": "comdev",
"name": "Apache Community Development",
"reporting": 2,
-"shortdesc": "Ressources to help people become involved with Apache projects"
+"shortdesc": "Ressources to help people become involved with Apache committeeShortNames"
},
{
"chair": "batkinson",
@@ -417,7 +420,7 @@
"shortdesc": "RESTful cloud management interface"
},
{
-"chair": "gpetracek",
+"chair": "tandraschko",
"established": "2013-04",
"group": "deltaspike",
"homepage": "http://deltaspike.apache.org/",
@@ -433,7 +436,8 @@
"homepage": "http://devicemap.apache.org/",
"id": "devicemap",
"name": "Apache DeviceMap",
-"reporting": 2
+"reporting": 2,
+"shortdesc": ""
},
{
"chair": "raffaeleguidi",
@@ -462,7 +466,8 @@
"homepage": "http://drill.apache.org/",
"id": "drill",
"name": "Apache Drill",
-"reporting": 2
+"reporting": 2,
+"shortdesc": ""
},
{
"chair": "francisdb",
@@ -521,7 +526,8 @@
"homepage": "http://flink.apache.org/",
"id": "flink",
"name": "Apache Flink",
-"reporting": 3
+"reporting": 3,
+"shortdesc": ""
},
{
"chair": "arvind",
@@ -661,7 +667,7 @@
"id": "incubator",
"name": "Apache Incubator",
"reporting": 0,
-"shortdesc": "Entry path into The Apache Software Foundation (ASF) for projects and codebases wishing to become part of the Foundation's efforts"
+"shortdesc": "Entry path into The Apache Software Foundation (ASF) for committeeShortNames and codebases wishing to become part of the Foundation's efforts"
},
{
"chair": "danhaywood",
@@ -890,7 +896,8 @@
"homepage": "http://metamodel.apache.org/",
"id": "metamodel",
"name": "Apache MetaModel",
-"reporting": 2
+"reporting": 2,
+"shortdesc": ""
},
{
"chair": "jeffmaury",
@@ -1069,7 +1076,8 @@
"homepage": "http://orc.apache.org/",
"id": "orc",
"name": "Apache Orc",
-"reporting": 1
+"reporting": 1,
+"shortdesc": ""
},
{
"chair": "julien",
@@ -1078,7 +1086,8 @@
"homepage": "http://parquet.apache.org/",
"id": "parquet",
"name": "Apache Parquet",
-"reporting": 1
+"reporting": 1,
+"shortdesc": ""
},
{
"chair": "lehmi",
@@ -1107,7 +1116,8 @@
"homepage": "http://phoenix.apache.org/",
"id": "phoenix",
"name": "Apache Phoenix",
-"reporting": 2
+"reporting": 2,
+"shortdesc": ""
},
{
"chair": "rohini",
@@ -1196,7 +1206,8 @@
"homepage": "http://samza.apache.org/",
"id": "samza",
"name": "Apache Samza",
-"reporting": 1
+"reporting": 1,
+"shortdesc": ""
},
{
"chair": "coheigea",
@@ -1239,7 +1250,7 @@
"shortdesc": "Powerful and easy-to-use application security framework"
},
{
-"chair": "aestrada",
+"chair": "desruisseaux",
"established": "2012-09",
"group": "sis",
"homepage": "http://sis.apache.org/",
@@ -1325,7 +1336,8 @@
"homepage": "http://stratos.apache.org/",
"id": "stratos",
"name": "Apache Stratos",
-"reporting": 2
+"reporting": 2,
+"shortdesc": ""
},
{
"chair": "rgielen",
@@ -1537,6 +1549,15 @@
"shortdesc": "Projects related to Web Services"
},
{
+"chair": "rgardler",
+"established": "2015-05",
+"group": "whimsy",
+"homepage": "http://whimsy.apache.org/",
+"id": "whimsy",
+"name": "Apache Whimsy",
+"reporting": 2
+},
+{
"chair": "dashorst",
"established": "2007-06",
"group": "wicket",
@@ -1603,7 +1624,8 @@
"homepage": "http://zest.apache.org/",
"id": "zest",
"name": "Apache Zest",
-"reporting": 3
+"reporting": 3,
+"shortdesc": ""
},
{
"chair": "michim",