Modified: attic/site-lua/docs/data/projects.json
URL: 
http://svn.apache.org/viewvc/attic/site-lua/docs/data/projects.json?rev=1830323&r1=1830322&r2=1830323&view=diff
==============================================================================
--- attic/site-lua/docs/data/projects.json (original)
+++ attic/site-lua/docs/data/projects.json Fri Apr 27 09:58:57 2018
@@ -4,18 +4,27 @@
    "project":     "abdera",
    "retired":     "March 2017",
    "scm":         "svn",
-   "jira":        "ABDERA",
+   "tracker":     ["JIRA", "ABDERA"],
    "wiki":        "https://cwiki.apache.org/confluence/display/abdera/";,
    "mailnames":   ["dev", "commits", "user"],
    "description": "Apache Abdera was a project to build a 
functionally-complete, high-performance implementation of the IETF Atom 
Syndication Format (RFC 4287) and Atom Publishing Protocol (RFC 5023) 
specifications.",
-   "postlude":    "<p>Some related projects to Abdera are: </p>\n<ul>\n    
<li><a href=\"http://openddr.mobi/\";>OpenDDR</a> - this is a new version of 
OpenDDR, parts of which were migrated to Apache Devicemap, and now have been 
merged back to OpenDDR. </li>\n\n    <li><a 
href=\"https://github.com/nielsbasjes/yauaa\";>YAUAA: Yet Another UserAgent 
Analyzer</a> is an Apache licensed alternative to DeviceMap. Rather than 
employing a fixed collection of User-Agent (UA) strings as in DeviceMap, YAUAA 
performs a semantic analysis to determine certain attributes of the UA. 
</li>\n\n    <li><a href=\"http://devicedetector.net/\";>DeviceDetector</a> is 
an LGPL 3.0 licensed PHP project that parses YAML based device data in a 
similar way as DeviceMap/OpenDDR do with W3C compatible data. </li>\n\n    
<li><a href=\"http://mobiledetect.net/\";>mobiledetect</a> is an MIT licensed 
PHP project for detecting mobile devices. </li>\n  </ul>"
+   "postlude":    ["<p>Some related projects to Abdera are: </p>",
+                   "<ul>",
+                   "    <li><a href=\"http://openddr.mobi/\";>OpenDDR</a> - 
this is a new version of OpenDDR, parts of which were migrated to Apache 
Devicemap, and now have been merged back to OpenDDR. </li>",
+                   "",
+                   "    <li><a 
href=\"https://github.com/nielsbasjes/yauaa\";>YAUAA: Yet Another UserAgent 
Analyzer</a> is an Apache licensed alternative to DeviceMap. Rather than 
employing a fixed collection of User-Agent (UA) strings as in DeviceMap, YAUAA 
performs a semantic analysis to determine certain attributes of the UA. </li>",
+                   "",
+                   "    <li><a 
href=\"http://devicedetector.net/\";>DeviceDetector</a> is an LGPL 3.0 licensed 
PHP project that parses YAML based device data in a similar way as 
DeviceMap/OpenDDR do with W3C compatible data. </li>",
+                   "",
+                   "    <li><a 
href=\"http://mobiledetect.net/\";>mobiledetect</a> is an MIT licensed PHP 
project for detecting mobile devices. </li>",
+                   "  </ul>"]
 },
 {
    "name":        "ACE",
    "project":     "ace",
    "retired":     "December 2017",
    "scm":         "svn",
-   "jira":        "ACE",
+   "tracker":     ["JIRA", "ACE"],
    "wiki":        "https://cwiki.apache.org/confluence/display/ace/";,
    "mailnames":   ["dev", "commits", "users"],
    "description": "Apache ACE was a software distribution framework that 
allows you to centrally manage and distribute software components, 
configuration data and other artifacts to target systems. It is built using 
OSGi and can be deployed in different topologies. The target systems are 
usually also OSGi based, but don't have to be. "
@@ -25,7 +34,7 @@
    "project":     "avalon",
    "retired":     "June 2004",
    "scm":         "svn",
-   "jira":        "AVALON",
+   "tracker":     ["JIRA", "AVALON"],
    "wiki":        "http://wiki.apache.org/avalon/";,
    "mailnames":   ["dev"],
    "description": "Apache Avalon was closed long before the creation of the 
Apache Attic. It's mentioned here for completeness."
@@ -33,6 +42,8 @@
 {
    "name":        "AxKit",
    "website":     "http://axkit.org";,
+   "project":     "xml",
+   "subproject":  "axkit",
    "retired":     "August 2009",
    "mailnames":   [],
    "description": "Apache AxKit was an XML Application Server for Apache. It 
provided on-the-fly conversion from XML to any format, such as HTML, WAP or 
text using either W3C standard techniques, or flexible custom code."
@@ -42,9 +53,10 @@
    "stem":        "axis-sandesha-c",
    "project":     "axis",
    "subproject":  "axis2/c/sandesha",
+   "dist":        "ws/sandesha2/c",
    "retired":     "September 2014",
    "scm":         "svn",
-   "jira":        "SANDESHA2C",
+   "tracker":     ["JIRA", "SANDESHA2C"],
    "mailnames":   [],
    "description": "Sandesha2/C was a C implementation of the 
WS-ReliableMessaging specification. Sandesha2/C was built on top of Apache 
Axis2/C Web services engine, as a module. Therefore by using Sandesha2/C you 
could add reliable messaging capability to Web services hosted using Axis2/C. 
Sandesha2/C could also be used with Axis2/C client to interact with an already 
hosted Web services in a reliable manner."
 },
@@ -52,9 +64,10 @@
    "name":        "Axis Savan/C",
    "project":     "axis",
    "subproject":  "axis2/c/savan",
+   "dist":        "ws/savan/c",
    "retired":     "September 2014",
    "scm":         "svn",
-   "jira":        "AXIS2C",
+   "tracker":     ["JIRA", "AXIS2C"],
    "mailnames":   [],
    "description": "Savan/C was a C implementation of WS-Eventing 
specification. Savan/C was built on top of Axis2/C. Therefore by using Savan/C 
you could add WS-Eventing capability to Web services hosted using Axis2/C. 
Savan/C was designed as a general publisher/subscriber tool. The arcitecture 
was designed to abstract the general publisher/subscriber features so that 
people could support more than one publisher/subscriber mechanisms within the 
same infrastructure."
 },
@@ -62,8 +75,9 @@
    "name":        "Axis Savan/Java",
    "project":     "axis",
    "subproject":  "axis2/java/savan",
+   "nodist":      true,
    "retired":     "September 2014",
-   "jira":        "SAVAN",
+   "tracker":     ["JIRA", "SAVAN"],
    "mailnames":   [],
    "description": "Savan/Java was a Java implementation of WS-Eventing 
specification. Savan/Java was built on top of Axis2/Java. Therefore by using 
Savan/Java you could add WS-Eventing capability to Web services hosted using 
Axis2/Java. Savan/Java was designed as a general publisher/subscriber tool. The 
arcitecture was designed to abstract the general publisher/subscriber features 
so that people could support more than one publisher/subscriber mechanisms 
within the same infrastructure."
 },
@@ -72,18 +86,23 @@
    "project":     "beehive",
    "retired":     "January 2010",
    "scm":         "svn",
-   "jira":        "BEEHIVE",
+   "tracker":     ["JIRA", "BEEHIVE"],
    "wiki":        "https://wiki.apache.org/beehive";,
    "mailnames":   ["dev", "commits", "user"],
    "description": "Apache Beehive was a simple object model built on J2EE and 
Struts that used annotations to reduce the amount of required code.",
-   "postlude":    "<p>If you are looking for a project to use in place of 
Beehive, the following have been suggested for its components: </p>\n<ul>\n    
<li>Beehive NetUI / Page Flow - Struts 2 or Spring Web Flow</li>\n    
<li>Beehive Controls - Spring Beans</li>\n    <li>Beehive WSM (web service 
metadata) - Axis2's implementation of JSR-181</li>\n  </ul>"
+   "postlude":    ["<p>If you are looking for a project to use in place of 
Beehive, the following have been suggested for its components: </p>",
+                   "<ul>",                           
+                   "    <li>Beehive NetUI / Page Flow - Struts 2 or Spring Web 
Flow</li>",
+                   "    <li>Beehive Controls - Spring Beans</li>",
+                   "    <li>Beehive WSM (web service metadata) - Axis2's 
implementation of JSR-181</li>",
+                   "  </ul>"]
 },
 {
    "name":        "Click",
    "project":     "click",
    "retired":     "May 2014",
    "scm":         "svn",
-   "jira":        "CLK",
+   "tracker":     ["JIRA", "CLK"],
    "wiki":        "https://cwiki.apache.org/confluence/display/click/";,
    "mailnames":   ["dev", "commits", "user"],
    "description": "    Apache Click was a JEE web application framework, 
providing a natural rich client style programming model.\n  "
@@ -92,17 +111,18 @@
    "name":        "Crimson",
    "project":     "xml",
    "subproject":  "crimson",
+   "nodist":      true,
    "retired":     "August 2010",
    "mailnames":   [],
    "description": "Apache Crimson was a Java XML parser which supports XML 1.0 
via various APIs.",
-   "postlude":    "<p><a href=\"http://xerces.apache.org/\";>Apache Xerces</a> 
replaced Crimson. </p>"
+   "postlude":    ["<p><a href=\"http://xerces.apache.org/\";>Apache Xerces</a> 
replaced Crimson. </p>"]
 },
 {
    "name":        "Continuum",
    "project":     "continuum",
    "retired":     "May 2016",
    "scm":         "svn",
-   "jira":        "CONTINUUM",
+   "tracker":     ["JIRA", "CONTINUUM"],
    "wiki":        "https://cwiki.apache.org/confluence/display/continuum/";,
    "mailnames":   ["dev", "users",  "commits", "issues", "notifications"],
    "description": "     Continuum was an enterprise-ready continuous 
integration server with features such as automated builds, release management, 
role-based security, and integration with popular build tools and source 
control management systems. "
@@ -112,7 +132,7 @@
    "project":     "deltacloud",
    "retired":     "July 2015",
    "scm":         "git-wip",
-   "jira":        "DTACLOUD",
+   "tracker":     ["JIRA", "DTACLOUD"],
    "mailnames":   ["dev", "commits", "user"],
    "description": "  Deltacloud provided the API server and drivers necessary 
for connecting to cloud providers via \n  a cloud abstraction API. "
 },
@@ -121,17 +141,27 @@
    "project":     "devicemap",
    "retired":     "December 2016",
    "scm":         "svn",
-   "jira":        "DMAP",
+   "tracker":     ["JIRA", "DMAP"],
    "wiki":        "http://wiki.apache.org/devicemap/";,
    "mailnames":   ["dev", "commits"],
    "description": "     Apache DeviceMap was a project to create a data 
repository containing device information, images and other relevant information 
for all sorts of mobile devices. ",
-   "postlude":    "<p>Some related projects to DeviceMap are: </p>\n<ul>\n    
<li><a href=\"http://openddr.mobi/\";>OpenDDR</a> - this is a new version of 
OpenDDR, parts of which were migrated to Apache Devicemap, and now have been 
merged back to OpenDDR. </li>\n\n    <li><a 
href=\"https://github.com/nielsbasjes/yauaa\";>YAUAA: Yet Another UserAgent 
Analyzer</a> is an Apache licensed alternative to DeviceMap. Rather than 
employing a fixed collection of User-Agent (UA) strings as in DeviceMap, YAUAA 
performs a semantic analysis to determine certain attributes of the UA. 
</li>\n\n    <li><a href=\"http://devicedetector.net/\";>DeviceDetector</a> is 
an LGPL 3.0 licensed PHP project that parses YAML based device data in a 
similar way as DeviceMap/OpenDDR do with W3C compatible data. </li>\n\n    
<li><a href=\"http://mobiledetect.net/\";>mobiledetect</a> is an MIT licensed 
PHP project for detecting mobile devices. </li>\n  </ul>"},
+   "postlude":    ["<p>Some related projects to DeviceMap are: </p>",
+                   "<ul>",
+                   "    <li><a href=\"http://openddr.mobi/\";>OpenDDR</a> - 
this is a new version of OpenDDR, parts of which were migrated to Apache 
Devicemap, and now have been merged back to OpenDDR. </li>",
+                   "",
+                   "    <li><a 
href=\"https://github.com/nielsbasjes/yauaa\";>YAUAA: Yet Another UserAgent 
Analyzer</a> is an Apache licensed alternative to DeviceMap. Rather than 
employing a fixed collection of User-Agent (UA) strings as in DeviceMap, YAUAA 
performs a semantic analysis to determine certain attributes of the UA. </li>",
+                   "",
+                   "    <li><a 
href=\"http://devicedetector.net/\";>DeviceDetector</a> is an LGPL 3.0 licensed 
PHP project that parses YAML based device data in a similar way as 
DeviceMap/OpenDDR do with W3C compatible data. </li>",
+                   "",
+                   "    <li><a 
href=\"http://mobiledetect.net/\";>mobiledetect</a> is an MIT licensed PHP 
project for detecting mobile devices. </li>",
+                   "  </ul>"]
+},
 {
    "name":        "DirectMemory",
    "project":     "directmemory",
    "retired":     "July 2015",
    "scm":         "svn",
-   "jira":        "DIRECTMEMORY",
+   "tracker":     ["JIRA", "DIRECTMEMORY"],
    "wiki":        "https://cwiki.apache.org/confluence/display/directmemory/";,
    "mailnames":   ["dev", "commits", "user"],
    "description": "  DirectMemory was an off-heap cache for the Java Virtual 
Machine. "
@@ -141,7 +171,7 @@
    "project":     "esme",
    "retired":     "July 2013",
    "scm":         "svn",
-   "jira":        "ESME",
+   "tracker":     ["JIRA", "ESME"],
    "wiki":        "https://cwiki.apache.org/confluence/display/esme/";,
    "mailnames":   ["dev", "commits"],
    "description": "    Apache ESME (Enterprise Social Messaging Environment) 
was a secure and highly scalable microsharing \n    and micromessaging platform 
that allows people to discover and meet one another and get controlled \n    
access to other sources of information. "
@@ -151,7 +181,7 @@
    "project":     "etch",
    "retired":     "June 2016",
    "scm":         "svn",
-   "jira":        "ETCH",
+   "tracker":     ["JIRA", "ETCH"],
    "mailnames":   ["dev", "user", "commits"],
    "description": "     Etch was a cross-platform, language- and 
transport-independent framework for building and consuming network services. "
 },
@@ -160,7 +190,7 @@
    "project":     "excalibur",
    "retired":     "December 2010",
    "scm":         "svn",
-   "jira":        "EXLBR",
+   "tracker":     ["JIRA", "EXLBR"],
    "wiki":        "https://wiki.apache.org/excalibur";,
    "mailnames":   ["dev", "scm", "user"],
    "description": "Apache Excalibur was a Java Inversion of Control container."
@@ -170,7 +200,7 @@
    "project":     "harmony",
    "retired":     "November 2011",
    "scm":         "svn",
-   "jira":        "HARMONY",
+   "tracker":     ["JIRA", "HARMONY"],
    "wiki":        "http://wiki.apache.org/harmony/";,
    "mailnames":   ["dev", "alerts", "commits"],
    "description": "Harmony software was a modular Java runtime with class 
libraries and associated tools."
@@ -180,11 +210,12 @@
    "project":     "hivemind",
    "retired":     "April 2009",
    "scm":         "svn",
-   "jira":        "HIVEMIND",
+   "tracker":     ["JIRA", "HIVEMIND"],
    "wiki":        "http://wiki.apache.org/hivemind/";,
    "mailnames":   ["dev", "commits", "user"],
    "description": "Apache HiveMind was a services and configuration 
microkernel. Its features are also referred to as Inversion of Control (IoC) 
Container or Lightweight Container. Closely linked to Tapestry 4, it lost 
activity when Tapestry 5 moved to a new IoC container.",
-   "postlude":    "<p><a 
href=\"http://markmail.org/thread/hb46sg2nolnntnnz\";>Discussion on the mailing 
list</a> indicated that <a 
href=\"http://tapestry.apache.org/tapestry5/tapestry-ioc/\";>Tapestry IoC</a> 
was the natural successor to HiveMind. </p>\n<p>One fork that has been created 
is Gaderian at <a 
href=\"http://gaderian.ops4j.org/\";>http://gaderian.ops4j.org/</a>.</p>"
+   "postlude":    ["<p><a 
href=\"http://markmail.org/thread/hb46sg2nolnntnnz\";>Discussion on the mailing 
list</a> indicated that <a 
href=\"http://tapestry.apache.org/tapestry5/tapestry-ioc/\";>Tapestry IoC</a> 
was the natural successor to HiveMind. </p>",
+                   "<p>One fork that has been created is Gaderian at <a 
href=\"http://gaderian.ops4j.org/\";>http://gaderian.ops4j.org/</a>.</p>"]
 },
 {
    "name":        "iBATIS",
@@ -193,7 +224,7 @@
    "scm":         "svn",
    "mailnames":   ["dev", "commits", "user-cs", "user-java"],
    "description": "iBATIS was a data mapper framework that made it easier to 
use a relational database with object-oriented applications. There were both 
Java and .Net implementations.",
-   "postlude":    "<p>One fork that has been created is MyBatis at <a 
href=\"http://www.mybatis.org/\";>http://www.mybatis.org/</a>. </p>"
+   "postlude":    ["<p>One fork that has been created is MyBatis at <a 
href=\"http://www.mybatis.org/\";>http://www.mybatis.org/</a>. </p>"]
 },
 {
    "name":        "Jakarta",
@@ -210,7 +241,7 @@
    "subproject":  "cactus",
    "retired":     "August 2011",
    "scm":         "svn",
-   "jira":        "CACTUS",
+   "tracker":     ["JIRA", "CACTUS"],
    "mailnames":   ["dev", "user"],
    "description": "Jakarta previously hosted Cactus, a simple test framework 
for unit testing server-side java code."
 },
@@ -220,7 +251,7 @@
    "subproject":  "ecs",
    "retired":     "September 2010",
    "scm":         "svn",
-   "jira":        "ECS",
+   "tracker":     ["JIRA", "ECS"],
    "mailnames":   ["dev", "user"],
    "description": "Jakarta previously hosted ECS (Element Construction Set), a 
Java API for generating elements for any of a variety of markup languages 
(examples included HTML 4.0 and XML)."
 },
@@ -230,10 +261,10 @@
    "subproject":  "oro",
    "retired":     "September 2010",
    "scm":         "svn",
-   "bugzilla":    "oro",
+   "tracker":     ["Bugzilla","oro"],
    "mailnames":   ["dev", "user"],
    "description": "Jakarta previously hosted ORO, a set of text-processing 
Java classes that provide Perl5 compatible regular expressions, AWK-like 
regular expressions, glob expressions, and utility classes for performing 
substitutions, splits, filtering filenames, etc.",
-   "postlude":    "<p>Jakarta ORO users are encouraged to use similar features 
in newer Java versions, such as <i>java.util.regexp</i></p>"
+   "postlude":    ["<p>Jakarta ORO users are encouraged to use similar 
features in newer Java versions, such as <i>java.util.regexp</i></p>"]
 },
 {
    "name":        "Jakarta Regexp",
@@ -241,10 +272,10 @@
    "subproject":  "regexp",
    "retired":     "April 2011",
    "scm":         "svn",
-   "bugzilla":    "regexp",
+   "tracker":     ["Bugzilla","regexp"],
    "mailnames":   ["dev", "user"],
    "description": "Jakarta previously hosted Regexp, a 100% Pure Java Regular 
Expression package.",
-   "postlude":    "<p>Jakarta Regexp users are encouraged to use similar 
features in newer Java versions, such as <i>java.util.regexp</i></p>"
+   "postlude":    ["<p>Jakarta Regexp users are encouraged to use similar 
features in newer Java versions, such as <i>java.util.regexp</i></p>"]
 },
 {
    "name":        "Jakarta Slide",
@@ -252,22 +283,68 @@
    "subproject":  "slide",
    "retired":     "November 2007",
    "scm":         "svn",
-   "bugzilla":    "slide",
+   "tracker":     ["Bugzilla","slide"],
    "wiki":        "https://wiki.apache.org/jakarta-slide";,
    "mailnames":   ["dev", "user"],
    "description": "Jakarta previously hosted Slide, a content repository which 
could serve as a basis for a content management system as well as other 
purposes. Among its features was full WebDAV support.",
-   "postlude":    "<p>If you are looking for a WebDAV client or a server-side 
Content Repository, please consider the\n       <a 
href=\"http://jackrabbit.apache.org\";>Apache Jackrabbit</a> project as an 
alternative.</p>"
+   "postlude":    ["<p>If you are looking for a WebDAV client or a server-side 
Content Repository, please consider the",
+                   "       <a href=\"http://jackrabbit.apache.org\";>Apache 
Jackrabbit</a> project as an alternative.</p>"]
 },
 {
    "name":        "Jakarta Taglibs",
    "project":     "jakarta",
    "subproject":  "taglibs",
+   "website":     "",
    "retired":     "June 2008",
    "scm":         "svn",
-   "bugzilla":    "taglibs",
+   "tracker":     ["Bugzilla","taglibs"],
    "mailnames":   ["dev"],
    "description": "Jakarta hosted the Jakarta Taglibs project, a large 
collection of JSP Tag Libraries. They ranged from simple utility libraries and 
UI libraries, to Dreamweaver extensions and an implementation of the JSP 
Standard Tag Library (JSTL) specification.",
-   "postlude":    "<p>In 2008 and 2009, the majority of these libraries were 
deprecated and have now been retired. The remaining work has \n       moved 
over to the <a href=\"http://tomcat.apache.org/taglibs/\";>Tomcat Taglibs</a> 
project - namely the following taglibs: </p>\n<ul>\n      <li>Standard - The 
implementations of the various JSTL specifications</li>\n      <li><s>RDC - 
Reusable Dialog Components Taglib</s></li>\n    </ul>\n<p>In 2014 the RDC 
Taglib was retired from the Tomcat Taglibs project. </p>\n<table 
class=\"colortable\" width=\"100%\">\n      <tr><th>Name</th><th>JSP 
version</th><th>Obtain</th></tr>\n      <tr><td><a 
href=\"http://tomcat.apache.org/taglibs/rdc/\";>RDC</a></td><td>2.0+</td><td><a 
href=\"http://svn.apache.org/repos/asf/tomcat/taglibs/rdc/\";>svn</a></td></tr>\n
     </table>\n<p>A list of the original retired taglibs follows: </p>\n<table 
class=\"colortable\" width=\"100%\">\n      <tr><th>Name</th><th>JSP 
version</th><th>Obtain</th></tr>\n      <tr><td>
 <a href=\"http://jakarta.apache.org/taglibs/sandbox/doc/mailer2-doc/\";>Mailer 
2</a></td><td>2.0+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/mailer2/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/cache-doc/\";>Cache</a></td><td>1.2+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/cache/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/sandbox/doc/datagrid-doc/\";>Data 
Grid</a></td><td>1.2+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/datagrid/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/application-doc/\";>Application</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/application/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/benchmark-doc/\";>Benchmark</a></td><td
 >1.1+</td><td><a 
 >href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/benchmark/trunk/\";>svn</a></td></tr>\n
 >      <tr><td><a 
 >href=\"http://jakarta.apache.org/taglibs/doc/bsf-doc/\";>BSF</a></td><td>1.1+</td><td><a
 > 
 >href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/bsf/trunk/\";>svn</a></td></tr>\n
 >      <tr><td><a 
 >href=\"http://jakarta.apache.org/taglibs/datetime/\";>DateTime</a></td><td>1.1+</td><td><a
 > 
 >href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/datetime/trunk/\";>svn</a></td></tr>\n
 >      <tr><td><a 
 >href=\"http://jakarta.apache.org/taglibs/doc/dbtags-doc/\";>DBTags</a></td><td>1.1+</td><td><a
 > 
 >href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/dbtags/trunk/\";>svn</a></td></tr>\n
 >      <tr><td><a 
 >href=\"http://jakarta.apache.org/taglibs/i18n/\";>I18N</a></td><td>1.1+</td><td><a
 > 
 >href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/i18n/trunk/\";>svn</a></td></tr>\n
 >      <tr><td><a href=\"http://jakarta.apache.org/tag
 libs/sandbox/doc/image-doc/\">Image</a></td><td>1.1+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/image/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/input-doc/\";>Input</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/input/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/io-doc/\";>IO</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/io/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/iterators/\";>Iterators</a></td><td>1.2+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/sandbox/iterators/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/jndi/\";>JNDI</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/jndi/trunk/\";>svn</a></td></tr>\n
      <tr><t
 d><a 
href=\"http://jakarta.apache.org/taglibs/doc/jmstags-doc/\";>JMS</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/jmstags/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/log/\";>Log</a></td><td>1.1+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/log/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/mailer-doc/\";>Mailer</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/mailer/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/page-doc/\";>Page</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/page/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/random/\";>Random</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/random/trunk/\";>svn<
 /a></td></tr>\n      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/regexp/\";>Regexp</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/regexp/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/request-doc/\";>Request</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/request/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/response-doc/\";>Response</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/response/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/scrape-doc/\";>Scrape</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/scrape/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/session-doc/\";>Session</a></td><td>1.1+</td><td><a
 href=\"http://svn.apache
 .org/repos/asf/jakarta/taglibs/deprecated/session/trunk/\">svn</a></td></tr>\n 
     <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/string/\";>String</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/string/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/ultradev4-doc/\";>UltraDev 4.0 Tool 
Extension</a></td><td>1.1+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/tools/trunk/UltraDev/4.0/ctlx/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/unstandard/\";>Unstandard</a></td><td>1.2+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/sandbox/unstandard/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/utility-doc/\";>Utility</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/utility/trunk/\";>svn</a></td></tr>\n
      <tr><td><a href=\"http://jakarta
 .apache.org/taglibs/doc/xsl-doc/\">XSL</a></td><td>1.1+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/xsl/trunk/\";>svn</a></td></tr>\n
      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/xtags-doc/\";>XTags</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/xtags/trunk/\";>svn</a></td></tr>\n
     </table>"
+   "postlude":    ["<p>In 2008 and 2009, the majority of these libraries were 
deprecated and have now been retired. The remaining work has ",
+                   "       moved over to the <a 
href=\"http://tomcat.apache.org/taglibs/\";>Tomcat Taglibs</a> project - namely 
the following taglibs: </p>",
+                   "<ul>",
+                   "      <li>Standard - The implementations of the various 
JSTL specifications</li>",
+                   "      <li><s>RDC - Reusable Dialog Components 
Taglib</s></li>",
+                   "    </ul>",
+                   "<p>In 2014 the RDC Taglib was retired from the Tomcat 
Taglibs project. </p>",
+                   "<table class=\"colortable\" width=\"100%\">",
+                   "      <tr><th>Name</th><th>JSP 
version</th><th>Obtain</th></tr>",
+                   "      <tr><td><a 
href=\"http://tomcat.apache.org/taglibs/rdc/\";>RDC</a></td><td>2.0+</td><td><a 
href=\"http://svn.apache.org/repos/asf/tomcat/taglibs/rdc/\";>svn</a></td></tr>",
+                   "     </table>",
+                   "<p>A list of the original retired taglibs follows: </p>",
+                   "<table class=\"colortable\" width=\"100%\">",
+                   "      <tr><th>Name</th><th>JSP 
version</th><th>Obtain</th></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/sandbox/doc/mailer2-doc/\";>Mailer 
2</a></td><td>2.0+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/mailer2/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/cache-doc/\";>Cache</a></td><td>1.2+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/cache/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/sandbox/doc/datagrid-doc/\";>Data 
Grid</a></td><td>1.2+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/datagrid/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/application-doc/\";>Application</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/application/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/benchmark-doc/\";>Benchmark</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/benchmark/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/bsf-doc/\";>BSF</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/bsf/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/datetime/\";>DateTime</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/datetime/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/dbtags-doc/\";>DBTags</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/dbtags/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/i18n/\";>I18N</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/i18n/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/sandbox/doc/image-doc/\";>Image</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated-sandbox/image/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/input-doc/\";>Input</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/input/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/io-doc/\";>IO</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/io/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/iterators/\";>Iterators</a></td><td>1.2+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/sandbox/iterators/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/jndi/\";>JNDI</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/jndi/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/jmstags-doc/\";>JMS</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/jmstags/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/log/\";>Log</a></td><td>1.1+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/log/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/mailer-doc/\";>Mailer</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/mailer/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/page-doc/\";>Page</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/page/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/random/\";>Random</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/random/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/regexp/\";>Regexp</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/regexp/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/request-doc/\";>Request</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/request/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/response-doc/\";>Response</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/response/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/scrape-doc/\";>Scrape</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/scrape/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/session-doc/\";>Session</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/session/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/string/\";>String</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/proper/string/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/ultradev4-doc/\";>UltraDev 4.0 Tool 
Extension</a></td><td>1.1+</td><td><a 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/tools/trunk/UltraDev/4.0/ctlx/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/unstandard/\";>Unstandard</a></td><td>1.2+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/sandbox/unstandard/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/utility-doc/\";>Utility</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/utility/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/xsl-doc/\";>XSL</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/xsl/trunk/\";>svn</a></td></tr>",
+                   "      <tr><td><a 
href=\"http://jakarta.apache.org/taglibs/doc/xtags-doc/\";>XTags</a></td><td>1.1+</td><td><a
 
href=\"http://svn.apache.org/repos/asf/jakarta/taglibs/deprecated/xtags/trunk/\";>svn</a></td></tr>",
+                   "     </table>"]
 },
 {
    "name":        "Lenya",
@@ -282,7 +359,7 @@
    "project":     "mrunit",
    "retired":     "April 2016",
    "scm":         "svn",
-   "jira":        "MRUNIT",
+   "tracker":     ["JIRA", "MRUNIT"],
    "wiki":        "https://cwiki.apache.org/confluence/display/MRUNIT";,
    "mailnames":   ["dev", "user", "commits"],
    "description": "Apache MRUnit was a Java library that helped developers 
unit test Apache Hadoop map reduce jobs."
@@ -294,18 +371,28 @@
    "subproject":  "ojb",
    "retired":     "January 2011",
    "scm":         "svn",
-   "jira":        "OJB",
+   "tracker":     ["JIRA", "OJB"],
    "wiki":        "https://wiki.apache.org/db-ojb";,
    "mailnames":   ["dev", "user"],
    "description": "Apache OJB was an Object/Relational mapping tool that 
allowed transparent persistence for Java Objects against relational databases.",
-   "postlude":    "<p>If you are looking for a project to use in place of OJB, 
implementations\n     of the standards <a 
href=\"http://db.apache.org/jdo\";>Java Data Objects\n     (JDO)</a> and <a 
href=\"\">Java Persistence API (JPA)</a> may be good\n     starting points. The 
Apache Software Foundation hosts the following\n     alternatives:\n      
<ul>\n        <li><a href=\"http://cayenne.apache.org/\";>Apache 
Cayenne</a></li>\n        <li><a 
href=\"http://incubator.apache.org/empire-db/\";>Apache Empire-db</a></li>\n     
   <li><a href=\"http://openjpa.apache.org/\";>Apache OpenJPA</a></li>\n        
<li><a href=\"http://db.apache.org/torque\";>Apache Torque</a></li>\n      
</ul></p>"
+   "postlude":    ["<p>If you are looking for a project to use in place of 
OJB, implementations",
+                   "     of the standards <a 
href=\"http://db.apache.org/jdo\";>Java Data Objects",
+                   "     (JDO)</a> and <a href=\"\">Java Persistence API 
(JPA)</a> may be good",
+                   "     starting points. The Apache Software Foundation hosts 
the following",
+                   "     alternatives:",
+                   "      <ul>",
+                   "        <li><a href=\"http://cayenne.apache.org/\";>Apache 
Cayenne</a></li>",
+                   "        <li><a 
href=\"http://incubator.apache.org/empire-db/\";>Apache Empire-db</a></li>",
+                   "        <li><a href=\"http://openjpa.apache.org/\";>Apache 
OpenJPA</a></li>",
+                   "        <li><a href=\"http://db.apache.org/torque\";>Apache 
Torque</a></li>",
+                   "      </ul></p>"]
 },
 {
    "name":        "Oltu",
    "project":     "oltu",
    "retired":     "April 2018",
    "scm":         "svn",
-   "jira":        "OLTU",
+   "tracker":     ["JIRA", "OLTU"],
    "wiki":        "https://cwiki.apache.org/confluence/display/oltu/";,
    "mailnames":   ["dev", "user", "commits"],
    "description": "Apache Oltu was an OAuth protocol implementation in Java. 
It also covers others OAuth family related implementations such as JWT, JWS and 
OpenID Connect"
@@ -315,27 +402,27 @@
    "project":     "onami",
    "retired":     "January 2016",
    "scm":         "svn",
-   "jira":        "ONAMI",
+   "tracker":     ["JIRA", "ONAMI"],
    "mailnames":   ["dev", "user", "commits"],
    "description": "    Apache Onami was a project focused on the development 
and maintenance of a set of Google Guice extensions not provided out of the box 
by the library itself.\n  "
 },
 {
    "name":        "Quetzalcoatl",
    "project":     "quetzalcoatl",
-   "website":     "#",
-   "nodist":        true,
+   "website":     "",
+   "nodist":      true,
    "retired":     "June 2010",
    "scm":         "svn",
    "mailnames":   [],
    "description": "Quetzalcoatl, or Quetz as it was more commonly known, was a 
project charged with the creation and maintenance of open-source software 
related to mod_python and the Python programming language.  Mainly formed 
around the mod_python subproject, it didn't have activity in the mod_python 
community to drive the larger project along.",
-   "postlude":    " <p>The mod_python website and downloads remain open. See 
the website at <a 
href=\"http://www.modpython.org/\";>http://www.modpython.org</a> for more 
information on mod_python. Quetz itself never had a website. </p>"
+   "postlude":    [" <p>The mod_python website and downloads remain open. See 
the website at <a 
href=\"http://www.modpython.org/\";>http://www.modpython.org</a> for more 
information on mod_python. Quetz itself never had a website. </p>"]
 },
 {
    "name":        "Rave",
    "project":     "rave",
    "retired":     "January 2016",
    "scm":         "svn",
-   "jira":        "RAVE",
+   "tracker":     ["JIRA", "RAVE"],
    "wiki":        "http://wiki.apache.org/rave/";,
    "mailnames":   ["dev", "users", "commits"],
    "description": "Apache Rave was a web and social mashup engine that 
aggregated and served web widgets. It was targeted as an engine for internet 
and intranet portals."
@@ -345,18 +432,22 @@
    "project":     "shale",
    "retired":     "May 2009",
    "scm":         "svn",
-   "jira":        "SHALE",
+   "tracker":     ["JIRA", "SHALE"],
    "wiki":        "http://wiki.apache.org/shale/";,
    "mailnames":   ["dev", "user", "commits"],
-   "description": "Shale was a web application framework, fundamentally based 
on JavaServer Faces.",
-   "postlude":    "<p>The Shale Test code has been forked into the MyFaces 
project - \n     <a 
href=\"http://svn.apache.org/viewvc/myfaces/test/trunk/\";>http://svn.apache.org/viewvc/myfaces/test/trunk/</a>.</p>"
+   "description": "Shale was a web application framework, fundamentally based 
on JavaServer Faces.  This blog entry from Kito Mann is an excellent discussion 
of Shale's retirement: <a 
href=\"http://blogs.jsfcentral.com/editorsdesk/entry/shale_in_the_attic\";>http://blogs.jsfcentral.com/editorsdesk/entry/shale_in_the_attic</a>.",
+   "postlude":    ["<p><a 
href=\"http://markmail.org/message/liexnvlxdlahlr74\";>Discussion on the mailing 
list</a>",
+                   "  indicated that <a 
href=\"http://seamframework.org\";>Seam</a> and <a 
href=\"http://myfaces.apache.org\";>MyFaces</a>",
+                   "  were the natural successors to Shale. </p>",
+                   "<p>The Shale Test code has been forked into the MyFaces 
project - ",
+                   "     <a 
href=\"http://svn.apache.org/viewvc/myfaces/test/trunk/\";>http://svn.apache.org/viewvc/myfaces/test/trunk/</a>.</p>"]
 },
 {
    "name":        "Shindig",
    "project":     "shindig",
    "retired":     "November 2015",
    "scm":         "svn",
-   "jira":        "SHINDIG",
+   "tracker":     ["JIRA", "SHINDIG"],
    "wiki":        "https://cwiki.apache.org/confluence/display/shindig/";,
    "mailnames":   ["dev", "users", "commits"],
    "description": "Apache Shindig was an OpenSocial container to help you to 
start hosting OpenSocial apps quickly."
@@ -367,7 +458,7 @@
    "project":     "stdcxx",
    "retired":     "July 2013",
    "scm":         "svn",
-   "jira":        "STDCXX",
+   "tracker":     ["JIRA", "STDCXX"],
    "wiki":        "http://wiki.apache.org/stdcxx/";,
    "board":       "Cxx_Standard_Library",
    "mailnames":   ["dev", "commits", "user"],
@@ -378,7 +469,7 @@
    "project":     "stratos",
    "retired":     "January 2017",
    "scm":         "git-wip",
-   "jira":        "STRATOS",
+   "tracker":     ["JIRA", "STRATOS"],
    "wiki":        "https://cwiki.apache.org/confluence/display/stratos/";,
    "mailnames":   ["dev", "commits"],
    "description": "Stratos was a highly-extensible Platform-as-a-Service 
(PaaS) framework that helped run Apache Tomcat, PHP, and MySQL applications, 
and could be extended to support many more environments on all major cloud 
infrastructures."
@@ -388,7 +479,7 @@
    "project":     "tuscany",
    "retired":     "May 2016",
    "scm":         "svn",
-   "jira":        "TUSCANY",
+   "tracker":     ["JIRA", "TUSCANY"],
    "wiki":        "https://cwiki.apache.org/confluence/display/tuscany/";,
    "mailnames":   ["dev", "user", "commits"],
    "description": "Tuscany simplified the task of developing service-oriented 
architectured solutions by providing a comprehensive infrastructure for 
development and management, based on the Service Component Architecture 
standard."
@@ -398,18 +489,18 @@
    "project":     "whirr",
    "retired":     "March 2015",
    "scm":         "svn",
-   "jira":        "WHIRR",
+   "tracker":     ["JIRA", "WHIRR"],
    "wiki":        "https://cwiki.apache.org/confluence/display/whirr/";,
    "mailnames":   ["dev", "user", "commits"],
    "description": "Apache Whirr was a set of libraries for running cloud 
services and deploying clusters.",
-   "postlude":    "<p>Note that instructions on how to obtain and build the 
source are found on the wiki and not the website: <a 
href=\"https://cwiki.apache.org/confluence/display/WHIRR/How+To+Contribute\";>https://cwiki.apache.org/confluence/display/WHIRR/How+To+Contribute</a>.
 </p>"
+   "postlude":    ["<p>Note that instructions on how to obtain and build the 
source are found on the wiki and not the website: <a 
href=\"https://cwiki.apache.org/confluence/display/WHIRR/How+To+Contribute\";>https://cwiki.apache.org/confluence/display/WHIRR/How+To+Contribute</a>.
 </p>"]
 },
 {
    "name":        "Wink",
    "project":     "wink",
    "retired":     "April 2017",
    "scm":         "svn",
-   "jira":        "WINK",
+   "tracker":     ["JIRA", "WINK"],
    "wiki":        "https://cwiki.apache.org/confluence/display/wink/";,
    "mailnames":   ["dev", "commits", "user"],
    "description": "Apache Wink was a simple yet solid framework for building 
RESTful Web services. It is comprised of a Server module and a Client module 
for developing and consuming RESTful Web services."
@@ -419,7 +510,7 @@
    "project":     "wookie",
    "retired":     "April 2016",
    "scm":         "svn",
-   "jira":        "WOOKIE",
+   "tracker":     ["JIRA", "WOOKIE"],
    "wiki":        "https://cwiki.apache.org/confluence/display/wookie/";,
    "mailnames":   ["dev", "user", "commits"],
    "description": "Wookie was a Java server application that allowed you to 
upload and deploy W3C/OpenSocial/Google Wave widgets to your applications."
@@ -427,21 +518,22 @@
 {
    "name":        "WS Muse",
    "stem":        "muse",
-   "website":     "#",
+   "website":     "",
    "project":     "ws",
    "subproject":  "muse",
    "retired":     "January 2013",
    "mailnames":   ["dev", "user", "commits"],
    "description": "Muse was a Java-based implementation of the 
WS-ResourceFramework (WSRF), WS-BaseNotification (WSN), and 
WS-DistributedManagement (WSDM) specifications.",
-   "postlude":    "<p>One fork that has been created is <i>amused</i>, 
available at <a 
href=\"http://52north.org/communities/sensorweb/amused/\";>http://52north.org/communities/sensorweb/amused</a>.
 </p>"
+   "postlude":    ["<p>One fork that has been created is <i>amused</i>, 
available at <a 
href=\"http://52north.org/communities/sensorweb/amused/\";>http://52north.org/communities/sensorweb/amused</a>.
 </p>"]
 },
 {
    "name":        "Xang",
    "project":     "xml",
    "subproject":  "xang",
+   "nodist":      true,
    "retired":     "December 2009",
    "scm":         "svn",
-   "mailnames":   ["dev", "commits"],
+   "mailnames":   ["dev", "cvs"],
    "description": "Apache Xang was an XML Web Framework that aggregated 
multiple data sources, made that data URL addressable and defined custom 
methods to access that data."
 },
 {
@@ -450,20 +542,19 @@
    "subproject":  "xindice",
    "retired":     "August 2011",
    "scm":         "svn",
-   "bugzilla":    "Xindice",
+   "tracker":     ["Bugzilla","Xindice"],
    "wiki":        "http://wiki.apache.org/xindice";,
-   "mailnames":   ["dev", "user"],
+   "mailnames":   ["dev", "users"],
    "description": "Apache Xindice was a native XML database."
 },
 {
    "name":        "XMLBeans",
-   "project":     "xml",
-   "subproject":  "xmlbeans",
+   "project":     "xmlbeans",
    "retired":     "July 2013",
    "scm":         "svn",
    "mailnames":   ["dev", "user", "commits", "cxx-dev"],
    "description": "Apache XMLBeans was a technology for accessing XML by 
binding it to Java types.",
-   "postlude":    "<p>Alternatives are discussed on this StackOverflow 
question: <a 
href=\"http://stackoverflow.com/questions/27727546/what-to-use-instead-of-xmlbeans-now-that-it-has-been-retired\";>What
 to use instead of XMLBeans now that it has been retired?</a></p>"
+   "postlude":    ["<p>Alternatives are discussed on this StackOverflow 
question: <a 
href=\"http://stackoverflow.com/questions/27727546/what-to-use-instead-of-xmlbeans-now-that-it-has-been-retired\";>What
 to use instead of XMLBeans now that it has been retired?</a></p>"]
 },
 {
    "name":        "XML",

Modified: attic/site-lua/docs/mk-stuff
URL: 
http://svn.apache.org/viewvc/attic/site-lua/docs/mk-stuff?rev=1830323&r1=1830322&r2=1830323&view=diff
==============================================================================
--- attic/site-lua/docs/mk-stuff (original)
+++ attic/site-lua/docs/mk-stuff Fri Apr 27 09:58:57 2018
@@ -2,9 +2,11 @@
 
 use strict ;
 use warnings ;
+use YAML ;
 use JSON ;
 
-my $JSON_FILE = 'data/projects.json' ;
+my $YAML_FILE = 'data/attic.yaml' ;
+my $JSON_FILE = 'data/attic.json' ;
 my $PAGE_TMPL = 'data/page.tmpl' ;
 my $INDX_TXT  = 'data/index.txt' ;
 my $PROC_TXT  = 'data/process.txt' ;
@@ -55,6 +57,14 @@ sub get_file ($)
     $res ;
   }
 
+sub put_file ($$)
+  { my $file = shift ;
+    my $text = shift ;
+    open FILE, '>', $file or Error "can't write $file ($!)" ;
+    print FILE $text ;
+    close FILE ;
+  }
+
 sub mk_tag
   { my $hash = shift ;
     my $res = $hash -> {stem} ;
@@ -65,17 +75,33 @@ sub mk_tag
     $res ;
   }
 
-sub get_json
-  { my $json = from_json get_file $JSON_FILE ;
-    return { map { ( mk_tag ( $_ ) => $_ ) } @$json } ;
+sub get_yaml { my @res = YAML::LoadFile $YAML_FILE ; [ @res ] ; }
+# sub get_json { my $res = from_json get_file $JSON_FILE ; $res ; }
+sub get_prjs { get_yaml ; }
+
+sub put_json
+  { my $file  = shift ;
+    my $yaml = shift ;
+    put_file $file, JSON::to_json
+      ( [ map
+            { my $r ; %$r = %$_ ;
+              for my $t ( qw(nodist nokeys) )
+                { $r -> { $t } = ( $_ -> { $t } ? JSON::true : JSON::false )
+                    if exists $_ -> { $t } ;
+                }
+              $r ;
+            } @$yaml
+        ]
+      , { pretty => 1, canonical => 1 }
+      ) ;
   }
 
 sub mk_proj_list
-  { my $json = shift ;
+  { my $prjs = shift ;
     my @res = () ;
-    for my $tag
-      ( sort { lc $json->{$a}{name} cmp lc $json->{$b}{name} } keys %$json )
-      { my $hash = $json -> { $tag } ;
+    for my $hash
+      ( sort { lc $a -> {name} cmp lc $b -> {name} } @$prjs )
+      { my $tag = mk_tag $hash ;
         push @res, sprintf '<a href="/projects/%s.html">%s</a>'
           , $tag, $hash -> {name} ;
       }
@@ -85,7 +111,11 @@ sub mk_proj_list
 sub url { sprintf '<a href="%s">%s</a>', @_ ; }
 sub site_url
   { my $site = shift ;
-    return $NA if not defined $site or $site =~ /^#/ ;
+    my $proj = shift ;
+    my $sprj = shift ;
+    return $NA if defined $site and $site eq '' ;
+    $site ||= "$proj.apache.org" ;
+    $site .= "/$sprj" if defined $sprj ;
     url "https://$site";, $site ;
   }
 sub mail_url
@@ -94,7 +124,7 @@ sub mail_url
   }
 sub jira_url
   { my $p = shift ;
-    return $NA unless defined $p ;
+    return '' unless defined $p ;
     url "https://issues.apache.org/jira/browse/$p/";, 'JIRA' ;
   }
 sub bugz_url
@@ -103,6 +133,18 @@ sub bugz_url
     my $u = "https://bz.apache.org/bugzilla/buglist.cgi?product=%s"; ;
     url sprintf ( $u, $b ), 'Bugzilla' ;
   }
+sub trac_url
+  { my $b = shift ;
+    return $NA unless defined $b ;
+    my ( $sys, $sub ) = @$b ;
+    ( $sys eq 'JIRA'
+    ? jira_url $sub
+    : ( $sys eq 'Bugzilla'
+      ? bugz_url $sub
+      : "bad sys [$sys]"
+      )
+    ) ;
+  }
 sub wiki_url
   { my $u = shift ; 
     return $NA unless defined $u ;
@@ -118,15 +160,19 @@ sub scm_url
     return $NA unless defined $scm ;
     $p .= "/$sub" if defined $sub ;
     ( $scm eq 'svn'
-    ?  url ( "http://svn.apache.org/viewvc/$p/";, $scm )
-    : 'todo'
+    ?  url ( "http://svn.apache.org/repos/asf/$p/";, $scm )
+    : ( $scm eq 'git-wip'
+      ? url ( "https://git-wip-us.apache.org/repos/asf?p=$p.git";, $scm )
+      : 'todo'
+      )
     ) ;
   }
 sub arch_url
-  { my ( $p, $sub, $dist ) = @_ ;
-    return $NA unless $dist ;
+  { my ( $p, $sub, $dist, $ndst ) = @_ ;
+    return $NA if $ndst ;
     return $NA unless defined $p ;
     $p .= "/$sub" if defined $sub ;
+    $p = $dist if defined $dist ;
     url "http://archive.apache.org/dist/$p/";, "archive.apache.org/dist/$p/"
   }
 
@@ -159,32 +205,30 @@ POST
   }
 
 sub mk_proj
-  { my $tag   = shift ;
-    my $hash  = shift ;
+  { my $hash  = shift ;
     my $name  = ucfirst $hash -> {name} ;
-    my $proj  = $hash -> {project} || $tag ;
+    my $proj  = $hash -> {project} ;
     my $sprj  = $hash -> {subproject} ;
-    my $site  = $hash -> {website} || "$proj.apache.org" ;
-    $site .= "/$sprj" if defined $sprj ;
+    my $site  = $hash -> {website} ;
     my $mail  = $hash -> {mailnames} ;
     my $rtrd  = $hash -> {retired} ;
     my $dscr  = $hash -> {description} ;
-    my $post  = $hash -> {postlude} || DEF_POST $name ;
-    my $jira  = $hash -> {jira} ;
-    my $bugz  = $hash -> {bugzilla} ;
+    my $trac  = $hash -> {tracker} ;
     my $wiki  = $hash -> {wiki} ;
     my $board = $hash -> {board} ;
     my $scm   = $hash -> {scm} ;
-    my $dist  = not $hash -> {nodist} ;
+    my $dist  = $hash -> {dist} ;
+    my $ndst  = $hash -> {nodist} ;
+    my $post  = $hash -> {postlude} || DEF_POST $name ;
     my @res   =
       ( [ 'Website'
-        , site_url $site
+        , site_url $site, $proj, $sprj
         ]
       , [ 'Mailing List Archives'
         , join ( "\n| ", map { mail_url $proj, $_ } @$mail ) || $NA
         ]
       , [ 'Issue Tracker'
-        , join ( ' | ', grep /./, jira_url ( $jira ), bugz_url ( $bugz ) ) || 
$NA
+        , trac_url ( $trac ) || $NA
         ]
       , [ 'Source'
         , scm_url $scm, $proj, $sprj
@@ -196,11 +240,11 @@ sub mk_proj
         , minutes_url $board || $proj
         ]
       , [ 'Archive'
-        , arch_url $proj, $sprj, $dist
+        , arch_url $proj, $sprj, $dist, $ndst
         ]
       ) ;
     my $res = <<TAB ;
-<p>$site moved into the Attic in $rtrd.<br>$dscr</p>
+<p>Project <i>$name</i> moved into the Attic in $rtrd.<br>$dscr</p>
 <table style="margin-left: auto; margin-right:auto; width:90%">
 <tr><th>Read-only Resource</th><th>Link(s)</th></tr>
 TAB
@@ -213,12 +257,10 @@ TAB
     $res ;
   }
 
-my $json = get_json ;
-# print to_json( $json, { canonical => 1, pretty => 1 } );
-my $page = get_file $PAGE_TMPL ;
-# print $page ; exit ;
-my $projs = mk_proj_list $json ;
-$page =~ s/%PROJS%/$projs/ ;
+my $prjs  = get_prjs ;
+my $page  = get_file $PAGE_TMPL ;
+my $plist = mk_proj_list $prjs ;
+$page =~ s/%PROJS%/$plist/ ;
 
 gen_page
   ( PAGE  => $page
@@ -241,11 +283,17 @@ gen_page
   , BODY  => get_file $PROC_TXT
   ) ;
 
-for my $tag ( sort keys %$json )
-  { gen_page
+for my $hash ( @$prjs )
+  { my $tag = mk_tag $hash ;
+    my $prj = $hash -> {project} ;
+    my $sub = $hash -> {subproject} ;
+    my $tit = join ' ', grep { defined } ( $prj, $sub ) ;
+    gen_page
       ( PAGE  => $page
       , FILE  => "projects/$tag.html"
-      , TITLE => "Apache Attic -- Apache @{[ucfirst $tag]}"
-      , BODY  => mk_proj ( $tag, $json -> { $tag } )
+      , TITLE => "Apache Attic -- @{[ucfirst $tit]}"
+      , BODY  => mk_proj $hash
       ) ;
   }
+
+put_json $JSON_FILE, $prjs ;


Reply via email to